@convex-dev/workpool 0.4.6 → 0.4.7-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component/_generated/api.d.ts +2 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/complete.d.ts.map +1 -1
- package/dist/component/complete.js +8 -7
- package/dist/component/complete.js.map +1 -1
- package/dist/component/danger.js +7 -7
- package/dist/component/danger.js.map +1 -1
- package/dist/component/future.d.ts +11 -0
- package/dist/component/future.d.ts.map +1 -0
- package/dist/component/future.js +21 -0
- package/dist/component/future.js.map +1 -0
- package/dist/component/kick.d.ts +3 -3
- package/dist/component/kick.d.ts.map +1 -1
- package/dist/component/kick.js +14 -16
- package/dist/component/kick.js.map +1 -1
- package/dist/component/lib.d.ts.map +1 -1
- package/dist/component/lib.js +13 -13
- package/dist/component/lib.js.map +1 -1
- package/dist/component/loop.d.ts +44 -1
- package/dist/component/loop.d.ts.map +1 -1
- package/dist/component/loop.js +171 -217
- package/dist/component/loop.js.map +1 -1
- package/dist/component/recovery.d.ts.map +1 -1
- package/dist/component/recovery.js +2 -2
- package/dist/component/recovery.js.map +1 -1
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +2 -1
- package/dist/component/schema.js.map +1 -1
- package/dist/component/worker.js +1 -1
- package/dist/component/worker.js.map +1 -1
- package/package.json +8 -12
- package/src/component/_generated/api.ts +2 -0
- package/src/component/complete.test.ts +13 -13
- package/src/component/complete.ts +13 -7
- package/src/component/danger.ts +7 -7
- package/src/component/future.ts +38 -0
- package/src/component/kick.test.ts +17 -20
- package/src/component/kick.ts +20 -17
- package/src/component/lib.test.ts +7 -7
- package/src/component/lib.ts +12 -15
- package/src/component/loop.test.ts +695 -1127
- package/src/component/loop.ts +212 -283
- package/src/component/recovery.test.ts +3 -3
- package/src/component/recovery.ts +5 -2
- package/src/component/schema.ts +2 -1
- package/src/component/stateMachine.test.ts +1246 -0
- package/src/component/stats.test.ts +4 -4
- package/src/component/worker.ts +1 -1
|
@@ -126,7 +126,7 @@ describe("recovery", () => {
|
|
|
126
126
|
const scheduledId = await makeDummyScheduledFunction(ctx, workId);
|
|
127
127
|
|
|
128
128
|
// Delete the work to simulate it not being found
|
|
129
|
-
await ctx.db.delete(workId);
|
|
129
|
+
await ctx.db.delete("work", workId);
|
|
130
130
|
|
|
131
131
|
return [workId, scheduledId];
|
|
132
132
|
});
|
|
@@ -160,9 +160,9 @@ describe("recovery", () => {
|
|
|
160
160
|
const scheduledId = await makeDummyScheduledFunction(ctx, workId);
|
|
161
161
|
|
|
162
162
|
// Update the work to have a different attempt number
|
|
163
|
-
const work = await ctx.db.get(workId);
|
|
163
|
+
const work = await ctx.db.get("work", workId);
|
|
164
164
|
if (work) {
|
|
165
|
-
await ctx.db.patch(work._id, { attempts: 5 });
|
|
165
|
+
await ctx.db.patch("work", work._id, { attempts: 5 });
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
return [workId, scheduledId];
|
|
@@ -54,7 +54,7 @@ export async function recoveryHandler(
|
|
|
54
54
|
console.debug(`${preamble} already in pendingCompletion, skipping`);
|
|
55
55
|
continue;
|
|
56
56
|
}
|
|
57
|
-
const work = await ctx.db.get(job.workId);
|
|
57
|
+
const work = await ctx.db.get("work", job.workId);
|
|
58
58
|
if (work === null) {
|
|
59
59
|
// Completion already executed w/o retries, no need to do anything.
|
|
60
60
|
console.warn(`${preamble} work not found, skipping`);
|
|
@@ -65,7 +65,10 @@ export async function recoveryHandler(
|
|
|
65
65
|
console.warn(`${preamble} attempts mismatch, skipping`);
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
68
|
-
const scheduled = await ctx.db.system.get(
|
|
68
|
+
const scheduled = await ctx.db.system.get(
|
|
69
|
+
"_scheduled_functions",
|
|
70
|
+
job.scheduledId,
|
|
71
|
+
);
|
|
69
72
|
if (scheduled === null) {
|
|
70
73
|
console.warn(`${preamble} not found in _scheduled_functions`);
|
|
71
74
|
completionJobs.push({
|
package/src/component/schema.ts
CHANGED
|
@@ -18,6 +18,7 @@ export default defineSchema({
|
|
|
18
18
|
internalState: defineTable({
|
|
19
19
|
// Ensure that only one main is running at a time.
|
|
20
20
|
generation: v.int64(),
|
|
21
|
+
// Track where we've scanned to, so we skip tombstones on re-scan.
|
|
21
22
|
segmentCursors: v.object({
|
|
22
23
|
incoming: segment,
|
|
23
24
|
completion: segment,
|
|
@@ -42,7 +43,7 @@ export default defineSchema({
|
|
|
42
43
|
),
|
|
43
44
|
}),
|
|
44
45
|
|
|
45
|
-
// Singleton, written by `
|
|
46
|
+
// Singleton, written by `main` when scheduling, by client or worker otherwise.
|
|
46
47
|
// Safe to read from kickLoop, since it should update infrequently.
|
|
47
48
|
runStatus: defineTable({
|
|
48
49
|
state: v.union(
|