aboutsummaryrefslogtreecommitdiff
path: root/scripts/enqueue.ts
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-06-02 22:35:33 +0200
committermetamuffin <metamuffin@disroot.org>2025-06-02 22:35:33 +0200
commit5f6dfeada0158c815f0b7b474ec61c18db6af5db (patch)
treed6109965e7a17549fba5e6fbf96d393db05ab5ed /scripts/enqueue.ts
parent2b56668dc89d61248fffeb75a6c8d1136aa7fa39 (diff)
downloadisda-5f6dfeada0158c815f0b7b474ec61c18db6af5db.tar
isda-5f6dfeada0158c815f0b7b474ec61c18db6af5db.tar.bz2
isda-5f6dfeada0158c815f0b7b474ec61c18db6af5db.tar.zst
retry tasks in enqueue worker script
Diffstat (limited to 'scripts/enqueue.ts')
-rw-r--r--scripts/enqueue.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/scripts/enqueue.ts b/scripts/enqueue.ts
index be67be7..d2b4729 100644
--- a/scripts/enqueue.ts
+++ b/scripts/enqueue.ts
@@ -4,6 +4,18 @@ const ws = new WebSocket(Deno.args[0])
let config: Config = {} as unknown as Config
async function run_enqueue(eqt: EnqueueTask) {
+ if (eqt.retry_failed) {
+ ws.send(JSON.stringify({
+ t: "query",
+ state: "complete",
+ kind: eqt.kind,
+ data: eqt.filter ? { failed: eqt.filter } : null,
+ cookie: "for_enqueue"
+ }))
+ return
+ }
+
+ if (!eqt.list_file) throw new Error("need either list_file or retry_failed");
const file = await Deno.readTextFile(eqt.list_file)
for (const line of file.split("\n")) {
if (!line.trim().length) continue
@@ -58,4 +70,11 @@ ws.onmessage = ev => {
if (!started) start()
}
if (p.t == "error") console.error(`error: ${p.message}`);
+ if (p.t == "query_response" && p.cookie == "for_enqueue") {
+ for (const key of p.keys) {
+ ws.send(JSON.stringify({ t: "metadata", key, data: { failed: null } }))
+ ws.send(JSON.stringify({ t: "enqueue", key, ignore_complete: true }))
+ }
+ ws.send(JSON.stringify({ t: "save" }))
+ }
}