chore: replace bull by bullmq

This commit is contained in:
tdurieux
2022-07-22 13:06:22 +02:00
parent fa8a513d93
commit ac52999841
19 changed files with 481 additions and 367 deletions

View File

@@ -1,9 +1,10 @@
import { Queue } from "bull";
import { Queue } from "bullmq";
import * as express from "express";
import AnonymizedRepositoryModel from "../database/anonymizedRepositories/anonymizedRepositories.model";
import ConferenceModel from "../database/conference/conferences.model";
import UserModel from "../database/users/users.model";
import { downloadQueue, removeQueue } from "../queue";
import Repository from "../Repository";
import { ensureAuthenticated } from "./connection";
import { handleError, getUser, isOwnerOrAdmin } from "./route-utils";
@@ -29,7 +30,7 @@ router.use(
);
router.post("/queue/:name/:repo_id", async (req, res) => {
let queue: Queue;
let queue: Queue<Repository, void>;
if (req.params.name == "download") {
queue = downloadQueue;
} else if (req.params.name == "remove") {
@@ -41,7 +42,7 @@ router.post("/queue/:name/:repo_id", async (req, res) => {
if (!job) {
return res.status(404).json({ error: "job_not_found" });
}
job.retry();
await job.retry();
res.send("ok");
});

View File

@@ -123,7 +123,7 @@ router.delete(
const user = await getUser(req);
isOwnerOrAdmin([repo.owner.id], user);
await repo.updateStatus("removing");
await removeQueue.add(repo, { jobId: repo.repoId });
await removeQueue.add(repo.repoId, repo, { jobId: repo.repoId });
return res.json({ status: repo.status });
} catch (error) {
handleError(error, res);
@@ -362,7 +362,7 @@ router.post(
repo.model.conference = repoUpdate.conference;
await repo.updateStatus("preparing");
res.json({ status: repo.status });
await downloadQueue.add(repo, { jobId: repo.repoId });
await downloadQueue.add(repo.repoId, repo, { jobId: repo.repoId });
} catch (error) {
return handleError(error, res);
}
@@ -432,7 +432,7 @@ router.post("/", async (req: express.Request, res: express.Response) => {
}
res.send({ status: repo.status });
downloadQueue.add(new Repository(repo), {
downloadQueue.add(repo.repoId, new Repository(repo), {
jobId: repo.repoId,
attempts: 3,
});

View File

@@ -91,7 +91,10 @@ router.get(
// && repo.status != "preparing"
) {
await repo.updateStatus("preparing");
await downloadQueue.add(repo, { jobId: repo.repoId, attempts: 3 });
await downloadQueue.add(repo.repoId, repo, {
jobId: repo.repoId,
attempts: 3,
});
}
if (repo.status == "error") {
throw new AnonymousError(

View File

@@ -44,6 +44,7 @@ export function isOwnerOrAdmin(authorizedUsers: string[], user: User) {
function printError(error: any) {
io.notifyError(error, error.value);
if (error instanceof AnonymousError) {
console.log(error);
console.error(
"[ERROR]",
error.toString(),
@@ -78,14 +79,14 @@ export function handleError(error: any, res: express.Response) {
export async function getUser(req: express.Request) {
const user = (req.user as any).user;
if (!user) {
req.logout();
req.logout((error) => console.error(error));
throw new AnonymousError("not_connected", {
httpStatus: 401,
});
}
const model = await UserModel.findById(user._id);
if (!model) {
req.logout();
req.logout((error) => console.error(error));
throw new AnonymousError("not_connected", {
httpStatus: 401,
});

View File

@@ -10,7 +10,7 @@ router.use(ensureAuthenticated);
router.get("/logout", async (req: express.Request, res: express.Response) => {
try {
req.logout();
req.logout((error) => console.error(error));
res.redirect("/");
} catch (error) {
handleError(error, res);