@convex-dev/workpool 0.3.2 → 0.4.1
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/client/index.d.ts.map +1 -1
- package/dist/client/index.js +33 -7
- package/dist/client/index.js.map +1 -1
- package/dist/component/complete.d.ts.map +1 -1
- package/dist/component/complete.js +50 -4
- package/dist/component/complete.js.map +1 -1
- package/dist/component/danger.d.ts +0 -2
- package/dist/component/danger.d.ts.map +1 -1
- package/dist/component/danger.js +59 -37
- package/dist/component/danger.js.map +1 -1
- package/dist/component/lib.d.ts +1 -1
- package/dist/component/lib.d.ts.map +1 -1
- package/dist/component/lib.js +43 -3
- package/dist/component/lib.js.map +1 -1
- package/dist/component/loop.d.ts.map +1 -1
- package/dist/component/loop.js +7 -10
- package/dist/component/loop.js.map +1 -1
- package/dist/component/recovery.js +7 -7
- package/dist/component/recovery.js.map +1 -1
- package/dist/component/stats.d.ts +2 -2
- package/dist/component/stats.d.ts.map +1 -1
- package/dist/component/stats.js +2 -1
- package/dist/component/stats.js.map +1 -1
- package/dist/component/worker.d.ts +7 -2
- package/dist/component/worker.d.ts.map +1 -1
- package/dist/component/worker.js +37 -7
- package/dist/component/worker.js.map +1 -1
- package/package.json +1 -1
- package/src/client/index.ts +42 -6
- package/src/component/complete.ts +77 -11
- package/src/component/danger.ts +95 -73
- package/src/component/lib.ts +54 -4
- package/src/component/loop.ts +18 -13
- package/src/component/recovery.ts +7 -7
- package/src/component/stats.ts +2 -0
- package/src/component/worker.ts +46 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EAGxB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createFunctionHandle, internalMutationGeneric, } from "convex/server";
|
|
2
|
-
import { v, } from "convex/values";
|
|
2
|
+
import { getConvexSize, v, } from "convex/values";
|
|
3
3
|
import {} from "../component/logging.js";
|
|
4
4
|
import { DEFAULT_RETRY_BEHAVIOR, vResult, } from "../component/shared.js";
|
|
5
5
|
import { safeFunctionName, } from "./utils.js";
|
|
@@ -289,15 +289,41 @@ function getRunAt(options) {
|
|
|
289
289
|
}
|
|
290
290
|
export async function enqueueBatch(component, ctx, fnType, fn, fnArgsArray, options) {
|
|
291
291
|
const { config, ...defaults } = await enqueueArgs(fn, options);
|
|
292
|
-
const
|
|
293
|
-
|
|
292
|
+
const batches = [];
|
|
293
|
+
const MAX_BATCH_SIZE = 8_000_000;
|
|
294
|
+
let currentBatch = [];
|
|
295
|
+
let currentBatchSize = 0;
|
|
296
|
+
for (const fnArgs of fnArgsArray) {
|
|
297
|
+
const item = {
|
|
294
298
|
...defaults,
|
|
295
299
|
fnArgs,
|
|
296
300
|
fnType,
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
+
};
|
|
302
|
+
const itemSize = getConvexSize(item);
|
|
303
|
+
// If adding this item would exceed the limit, start a new batch
|
|
304
|
+
if (currentBatch.length > 0 &&
|
|
305
|
+
currentBatchSize + itemSize > MAX_BATCH_SIZE) {
|
|
306
|
+
batches.push({ items: currentBatch });
|
|
307
|
+
currentBatch = [];
|
|
308
|
+
currentBatchSize = 0;
|
|
309
|
+
}
|
|
310
|
+
currentBatch.push(item);
|
|
311
|
+
currentBatchSize += itemSize;
|
|
312
|
+
}
|
|
313
|
+
// Add the last batch if it has items
|
|
314
|
+
if (currentBatch.length > 0) {
|
|
315
|
+
batches.push({ items: currentBatch });
|
|
316
|
+
}
|
|
317
|
+
// Process all batches and collect IDs
|
|
318
|
+
const allIds = [];
|
|
319
|
+
for (const batch of batches) {
|
|
320
|
+
const ids = await ctx.runMutation(component.lib.enqueueBatch, {
|
|
321
|
+
items: batch.items,
|
|
322
|
+
config,
|
|
323
|
+
});
|
|
324
|
+
allIds.push(...ids);
|
|
325
|
+
}
|
|
326
|
+
return allIds;
|
|
301
327
|
}
|
|
302
328
|
export async function enqueue(component, ctx, fnType, fn, fnArgs, options) {
|
|
303
329
|
const id = await ctx.runMutation(component.lib.enqueue, {
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EASpB,uBAAuB,GAExB,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../src/component/complete.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../src/component/complete.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,KAAK,EAAK,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAO5E,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEzE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAQvB,CAAC;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,KAAK,CAAC,OAAO,YAAY,CAAC,iBA2JjC;AASD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;iBAGnB,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { v } from "convex/values";
|
|
1
|
+
import { getConvexSize, v } from "convex/values";
|
|
2
|
+
import { internal } from "./_generated/api.js";
|
|
2
3
|
import { internalMutation } from "./_generated/server.js";
|
|
3
4
|
import { kickMainLoop } from "./kick.js";
|
|
4
5
|
import { createLogger } from "./logging.js";
|
|
5
6
|
import { vResult } from "./shared.js";
|
|
6
7
|
import { recordCompleted } from "./stats.js";
|
|
8
|
+
import { assert } from "convex-helpers";
|
|
7
9
|
export const completeArgs = v.object({
|
|
8
10
|
jobs: v.array(v.object({
|
|
9
11
|
runResult: vResult,
|
|
@@ -14,17 +16,58 @@ export const completeArgs = v.object({
|
|
|
14
16
|
export async function completeHandler(ctx, args) {
|
|
15
17
|
const globals = await ctx.db.query("globals").unique();
|
|
16
18
|
const console = createLogger(globals?.logLevel);
|
|
19
|
+
if (args.jobs.length === 0) {
|
|
20
|
+
console.warn("Trying to complete 0 jobs");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
17
23
|
const pendingCompletions = [];
|
|
18
|
-
await Promise.all(args.jobs.map(async (job) => {
|
|
24
|
+
const jobAndWorks = (await Promise.all(args.jobs.map(async (job) => {
|
|
19
25
|
const work = await ctx.db.get(job.workId);
|
|
20
26
|
if (!work) {
|
|
21
27
|
console.warn(`[complete] ${job.workId} is done, but its work is gone`);
|
|
22
|
-
return;
|
|
28
|
+
return null;
|
|
23
29
|
}
|
|
24
30
|
if (work.attempts !== job.attempt) {
|
|
25
31
|
console.warn(`[complete] ${job.workId} mismatched attempt number`);
|
|
26
|
-
return;
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return { job, work };
|
|
35
|
+
}))).filter((a) => a !== null);
|
|
36
|
+
if (jobAndWorks.length === 0) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const MAX_BATCH_SIZE = 2_000_000; // combined job / work / payload size
|
|
40
|
+
// Create batches based on size
|
|
41
|
+
const batches = [];
|
|
42
|
+
let currentBatch = [];
|
|
43
|
+
let currentBatchSize = 0;
|
|
44
|
+
for (const item of jobAndWorks) {
|
|
45
|
+
const itemSize = getConvexSize(item.job) +
|
|
46
|
+
getConvexSize(item.work) +
|
|
47
|
+
(item.work.payloadSize ?? 0);
|
|
48
|
+
// If adding this item would exceed the limit, start a new batch
|
|
49
|
+
if (currentBatch.length > 0 &&
|
|
50
|
+
currentBatchSize + itemSize > MAX_BATCH_SIZE) {
|
|
51
|
+
batches.push(currentBatch);
|
|
52
|
+
currentBatch = [];
|
|
53
|
+
currentBatchSize = 0;
|
|
27
54
|
}
|
|
55
|
+
currentBatch.push(item);
|
|
56
|
+
currentBatchSize += itemSize;
|
|
57
|
+
}
|
|
58
|
+
// Add the last batch if it has items
|
|
59
|
+
if (currentBatch.length > 0) {
|
|
60
|
+
batches.push(currentBatch);
|
|
61
|
+
}
|
|
62
|
+
// Schedule all batches after the first one
|
|
63
|
+
for (let i = 1; i < batches.length; i++) {
|
|
64
|
+
await ctx.scheduler.runAfter(0, internal.complete.complete, {
|
|
65
|
+
jobs: batches[i].map(({ job }) => job),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const ourBatch = batches[0];
|
|
69
|
+
assert(ourBatch);
|
|
70
|
+
await Promise.all(ourBatch.map(async ({ work, job }) => {
|
|
28
71
|
work.attempts++;
|
|
29
72
|
await ctx.db.patch(work._id, { attempts: work.attempts });
|
|
30
73
|
const pendingCompletion = await ctx.db
|
|
@@ -42,6 +85,7 @@ export async function completeHandler(ctx, args) {
|
|
|
42
85
|
if (!retry) {
|
|
43
86
|
if (work.onComplete) {
|
|
44
87
|
try {
|
|
88
|
+
// Retrieve large context if stored separately
|
|
45
89
|
let context = work.onComplete.context;
|
|
46
90
|
if (context === undefined && work.payloadId) {
|
|
47
91
|
const payload = await ctx.db.get(work.payloadId);
|
|
@@ -63,6 +107,8 @@ export async function completeHandler(ctx, args) {
|
|
|
63
107
|
}
|
|
64
108
|
}
|
|
65
109
|
recordCompleted(console, work, job.runResult.kind);
|
|
110
|
+
// Clean up any large data that was stored separately.
|
|
111
|
+
// TODO: consider async deletion in the future to avoid bandwidth limits.
|
|
66
112
|
if (work.payloadId) {
|
|
67
113
|
await ctx.db.delete(work.payloadId);
|
|
68
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/component/complete.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,CAAC,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/component/complete.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
export declare const clearPending: import("convex/server").RegisteredMutation<"internal", {
|
|
2
2
|
before?: number | undefined;
|
|
3
3
|
olderThan?: number | undefined;
|
|
4
|
-
cursor?: string | undefined;
|
|
5
4
|
}, Promise<void>>;
|
|
6
5
|
export declare const clearOldWork: import("convex/server").RegisteredMutation<"internal", {
|
|
7
6
|
before?: number | undefined;
|
|
8
7
|
olderThan?: number | undefined;
|
|
9
|
-
cursor?: string | undefined;
|
|
10
8
|
}, Promise<void>>;
|
|
11
9
|
//# sourceMappingURL=danger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"danger.d.ts","sourceRoot":"","sources":["../../src/component/danger.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"danger.d.ts","sourceRoot":"","sources":["../../src/component/danger.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY;;;iBA4CvB,CAAC;AAEH,eAAO,MAAM,YAAY;;;iBA2EvB,CAAC"}
|
package/dist/component/danger.js
CHANGED
|
@@ -1,83 +1,103 @@
|
|
|
1
|
-
import { v } from "convex/values";
|
|
1
|
+
import { v, getConvexSize } from "convex/values";
|
|
2
2
|
import { internal } from "./_generated/api.js";
|
|
3
3
|
import { internalMutation } from "./_generated/server.js";
|
|
4
|
-
import { paginator } from "convex-helpers/server/pagination";
|
|
5
|
-
import schema from "./schema.js";
|
|
6
4
|
const DEFAULT_OLDER_THAN = 1000 * 60 * 60 * 24;
|
|
5
|
+
const MAX_ROWS_READ = 100;
|
|
6
|
+
const MAX_BYTES_READ = 4_000_000;
|
|
7
7
|
export const clearPending = internalMutation({
|
|
8
8
|
args: {
|
|
9
9
|
olderThan: v.optional(v.number()),
|
|
10
10
|
before: v.optional(v.number()),
|
|
11
|
-
cursor: v.optional(v.string()),
|
|
12
11
|
},
|
|
13
12
|
handler: async (ctx, args) => {
|
|
14
13
|
const time = args.before ?? Date.now() - (args.olderThan ?? DEFAULT_OLDER_THAN);
|
|
15
|
-
|
|
14
|
+
let i = 0, totalBytes = 0, hasMore = false, nextTime;
|
|
15
|
+
console.log("Clearing pending before", new Date(time).toUTCString());
|
|
16
|
+
for await (const entry of ctx.db
|
|
16
17
|
.query("pendingStart")
|
|
17
|
-
.withIndex("by_creation_time", (q) => q.
|
|
18
|
-
.
|
|
19
|
-
|
|
20
|
-
numItems: 100,
|
|
21
|
-
});
|
|
22
|
-
await Promise.all(entries.page.map(async (entry) => {
|
|
23
|
-
await ctx.db.delete(entry._id);
|
|
18
|
+
.withIndex("by_creation_time", (q) => q.lte("_creationTime", time))
|
|
19
|
+
.order("desc")) {
|
|
20
|
+
i++;
|
|
24
21
|
const work = await ctx.db.get(entry.workId);
|
|
22
|
+
totalBytes +=
|
|
23
|
+
getConvexSize(entry) + getConvexSize(work) + (work?.payloadSize ?? 0);
|
|
24
|
+
if (i > MAX_ROWS_READ || totalBytes > MAX_BYTES_READ) {
|
|
25
|
+
hasMore = true;
|
|
26
|
+
nextTime = entry._creationTime;
|
|
27
|
+
console.log(`Continuing after ${i} entries, ${totalBytes} bytes`);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
await ctx.db.delete(entry._id);
|
|
25
31
|
if (work) {
|
|
32
|
+
// Clean up any large data stored separately
|
|
26
33
|
if (work.payloadId) {
|
|
27
|
-
await ctx.db.delete(work.payloadId);
|
|
34
|
+
await ctx.db.delete("payload", work.payloadId);
|
|
28
35
|
}
|
|
29
|
-
await ctx.db.delete(work._id);
|
|
36
|
+
await ctx.db.delete("work", work._id);
|
|
30
37
|
}
|
|
31
|
-
}
|
|
32
|
-
if (
|
|
38
|
+
}
|
|
39
|
+
if (hasMore) {
|
|
33
40
|
await ctx.scheduler.runAfter(0, internal.danger.clearPending, {
|
|
34
|
-
before:
|
|
35
|
-
cursor: entries.continueCursor,
|
|
41
|
+
before: nextTime,
|
|
36
42
|
});
|
|
37
43
|
}
|
|
44
|
+
else {
|
|
45
|
+
console.log(`Done clearing pending entries. ${i} in the last batch.`);
|
|
46
|
+
}
|
|
38
47
|
},
|
|
39
48
|
});
|
|
40
49
|
export const clearOldWork = internalMutation({
|
|
41
50
|
args: {
|
|
42
51
|
olderThan: v.optional(v.number()),
|
|
43
52
|
before: v.optional(v.number()),
|
|
44
|
-
cursor: v.optional(v.string()),
|
|
45
53
|
},
|
|
46
54
|
handler: async (ctx, args) => {
|
|
47
55
|
const time = args.before ?? Date.now() - (args.olderThan ?? DEFAULT_OLDER_THAN);
|
|
48
|
-
|
|
56
|
+
let i = 0, totalBytes = 0, hasMore = false, nextTime;
|
|
57
|
+
console.log("Clearing old work before", new Date(time).toUTCString());
|
|
58
|
+
for await (const entry of ctx.db
|
|
49
59
|
.query("work")
|
|
50
|
-
.withIndex("by_creation_time", (q) => q.
|
|
51
|
-
.
|
|
52
|
-
|
|
53
|
-
numItems: 100,
|
|
54
|
-
});
|
|
55
|
-
await Promise.all(entries.page.map(async (entry) => {
|
|
60
|
+
.withIndex("by_creation_time", (q) => q.lte("_creationTime", time))
|
|
61
|
+
.order("desc")) {
|
|
62
|
+
i++;
|
|
56
63
|
const pendingStart = await ctx.db
|
|
57
64
|
.query("pendingStart")
|
|
58
65
|
.withIndex("workId", (q) => q.eq("workId", entry._id))
|
|
59
66
|
.unique();
|
|
60
|
-
if (pendingStart) {
|
|
61
|
-
await ctx.db.delete(pendingStart._id);
|
|
62
|
-
}
|
|
63
67
|
const pendingCompletion = await ctx.db
|
|
64
68
|
.query("pendingCompletion")
|
|
65
69
|
.withIndex("workId", (q) => q.eq("workId", entry._id))
|
|
66
70
|
.unique();
|
|
67
|
-
if (pendingCompletion) {
|
|
68
|
-
await ctx.db.delete(pendingCompletion._id);
|
|
69
|
-
}
|
|
70
71
|
const pendingCancelation = await ctx.db
|
|
71
72
|
.query("pendingCancelation")
|
|
72
73
|
.withIndex("workId", (q) => q.eq("workId", entry._id))
|
|
73
74
|
.unique();
|
|
75
|
+
totalBytes +=
|
|
76
|
+
getConvexSize(entry) +
|
|
77
|
+
getConvexSize(pendingStart) +
|
|
78
|
+
getConvexSize(pendingCompletion) +
|
|
79
|
+
getConvexSize(pendingCancelation) +
|
|
80
|
+
(entry.payloadSize ?? 0);
|
|
81
|
+
if (i > MAX_ROWS_READ || totalBytes > MAX_BYTES_READ) {
|
|
82
|
+
hasMore = true;
|
|
83
|
+
nextTime = entry._creationTime;
|
|
84
|
+
console.log(`Continuing after ${i} entries, ${totalBytes} bytes`);
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
if (pendingStart) {
|
|
88
|
+
await ctx.db.delete(pendingStart._id);
|
|
89
|
+
}
|
|
90
|
+
if (pendingCompletion) {
|
|
91
|
+
await ctx.db.delete(pendingCompletion._id);
|
|
92
|
+
}
|
|
74
93
|
if (pendingCancelation) {
|
|
75
94
|
await ctx.db.delete(pendingCancelation._id);
|
|
76
95
|
}
|
|
96
|
+
// Clean up any large data stored separately
|
|
77
97
|
if (entry.payloadId) {
|
|
78
98
|
await ctx.db.delete(entry.payloadId);
|
|
79
99
|
}
|
|
80
|
-
console.debug(`cleared ${entry.fnName}: ${entry.fnArgs
|
|
100
|
+
console.debug(`cleared ${entry.fnName}: ${entry.fnArgs} (${Object.entries({
|
|
81
101
|
pendingStart,
|
|
82
102
|
pendingCompletion,
|
|
83
103
|
pendingCancelation,
|
|
@@ -86,13 +106,15 @@ export const clearOldWork = internalMutation({
|
|
|
86
106
|
.map(([name]) => name)
|
|
87
107
|
.join(", ")})`);
|
|
88
108
|
await ctx.db.delete(entry._id);
|
|
89
|
-
}
|
|
90
|
-
if (
|
|
109
|
+
}
|
|
110
|
+
if (hasMore) {
|
|
91
111
|
await ctx.scheduler.runAfter(0, internal.danger.clearOldWork, {
|
|
92
|
-
before:
|
|
93
|
-
cursor: entries.continueCursor,
|
|
112
|
+
before: nextTime,
|
|
94
113
|
});
|
|
95
114
|
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(`Done clearing old work. ${i} in the last batch.`);
|
|
117
|
+
}
|
|
96
118
|
},
|
|
97
119
|
});
|
|
98
120
|
//# sourceMappingURL=danger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"danger.js","sourceRoot":"","sources":["../../src/component/danger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"danger.js","sourceRoot":"","sources":["../../src/component/danger.ts"],"names":[],"mappings":"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"}
|
package/dist/component/lib.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,2BAA2B,CAAC;AA8C9D,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;sDASlB,CAAC;AAiEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;MAcvB,CAAC;AAEH,eAAO,MAAM,MAAM;;;iBAgBjB,CAAC;AAGH,eAAO,MAAM,SAAS;;;;iBA0CpB,CAAC;AAEH,eAAO,MAAM,MAAM;QAKuC,EAAE,CAAC,MAAM,CAAC;;;;;;;;;;GADlE,CAAC;AAwBH,eAAO,MAAM,WAAW;;;;;;;;;;;MAQtB,CAAC"}
|
package/dist/component/lib.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { v } from "convex/values";
|
|
1
|
+
import { v, getConvexSize } from "convex/values";
|
|
2
2
|
import { api } from "./_generated/api.js";
|
|
3
|
+
import {} from "./_generated/dataModel.js";
|
|
3
4
|
import { mutation, query, } from "./_generated/server.js";
|
|
4
5
|
import { kickMainLoop } from "./kick.js";
|
|
5
6
|
import { createLogger, logLevel, } from "./logging.js";
|
|
6
7
|
import { boundScheduledTime, vConfig, fnType, getNextSegment, max, vOnCompleteFnContext, retryBehavior, status as statusValidator, toSegment, } from "./shared.js";
|
|
7
8
|
import { recordEnqueued } from "./stats.js";
|
|
8
9
|
import { getOrUpdateGlobals } from "./config.js";
|
|
10
|
+
const INLINE_METADATA_THRESHOLD = 8_000; // 8KB threshold
|
|
11
|
+
const MAX_DOC_SIZE = 1_000_000; // Some buffer for 1MiB actual limit
|
|
12
|
+
const PAYLOAD_DOC_OVERHEAD = 78; // Size of { args: null, context: null }
|
|
9
13
|
const itemArgs = {
|
|
10
14
|
fnHandle: v.string(),
|
|
11
15
|
fnName: v.string(),
|
|
@@ -32,10 +36,46 @@ export const enqueue = mutation({
|
|
|
32
36
|
});
|
|
33
37
|
async function enqueueHandler(ctx, console, kickSegment, { runAt, ...workArgs }) {
|
|
34
38
|
runAt = boundScheduledTime(runAt, console);
|
|
35
|
-
const
|
|
39
|
+
const fnArgsSize = getConvexSize(workArgs.fnArgs);
|
|
40
|
+
if (fnArgsSize > MAX_DOC_SIZE) {
|
|
41
|
+
throw new Error(`Function arguments for function ${workArgs.fnName} too large: ${fnArgsSize} bytes (max: ${MAX_DOC_SIZE} bytes)`);
|
|
42
|
+
}
|
|
43
|
+
let contextSize = 0;
|
|
44
|
+
const context = workArgs.onComplete?.context;
|
|
45
|
+
if (context !== undefined) {
|
|
46
|
+
contextSize = getConvexSize(context);
|
|
47
|
+
if (contextSize > MAX_DOC_SIZE) {
|
|
48
|
+
throw new Error(`OnComplete context for function ${workArgs.fnName} too large: ${contextSize} bytes (max: ${MAX_DOC_SIZE} bytes)`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const workItem = {
|
|
36
52
|
...workArgs,
|
|
37
53
|
attempts: 0,
|
|
38
|
-
}
|
|
54
|
+
};
|
|
55
|
+
if (fnArgsSize >= INLINE_METADATA_THRESHOLD) {
|
|
56
|
+
// Args are large, store separately
|
|
57
|
+
const payloadDoc = {
|
|
58
|
+
args: workArgs.fnArgs,
|
|
59
|
+
};
|
|
60
|
+
workItem.payloadSize = fnArgsSize + PAYLOAD_DOC_OVERHEAD;
|
|
61
|
+
delete workItem.fnArgs;
|
|
62
|
+
if (contextSize >= INLINE_METADATA_THRESHOLD) {
|
|
63
|
+
// Context is also too big to inline
|
|
64
|
+
payloadDoc.context = context;
|
|
65
|
+
workItem.payloadSize += contextSize;
|
|
66
|
+
delete workItem.onComplete.context;
|
|
67
|
+
}
|
|
68
|
+
workItem.payloadId = await ctx.db.insert("payload", payloadDoc);
|
|
69
|
+
}
|
|
70
|
+
else if (fnArgsSize + contextSize >= INLINE_METADATA_THRESHOLD) {
|
|
71
|
+
// Args are small enough, but combined with context it's too big.
|
|
72
|
+
// Store just context in this case.
|
|
73
|
+
workItem.payloadId = await ctx.db.insert("payload", { context });
|
|
74
|
+
delete workItem.onComplete.context;
|
|
75
|
+
workItem.payloadSize = contextSize + PAYLOAD_DOC_OVERHEAD;
|
|
76
|
+
}
|
|
77
|
+
// Store the work item
|
|
78
|
+
const workId = await ctx.db.insert("work", workItem);
|
|
39
79
|
await ctx.db.insert("pendingStart", {
|
|
40
80
|
workId,
|
|
41
81
|
segment: max(toSegment(runAt), kickSegment),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,CAAC,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/component/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,KAAK,EAAE,GAAG,EAAM,MAAM,2BAA2B,CAAC;AA0BzD,eAAO,MAAM,wBAAwB,QAAwB,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAanE,CAAC;AAGF,eAAO,MAAM,IAAI;;;iBAyEf,CAAC;AAEH,eAAO,MAAM,eAAe;;;iBA6H1B,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/component/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,KAAK,EAAE,GAAG,EAAM,MAAM,2BAA2B,CAAC;AA0BzD,eAAO,MAAM,wBAAwB,QAAwB,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAanE,CAAC;AAGF,eAAO,MAAM,IAAI;;;iBAyEf,CAAC;AAEH,eAAO,MAAM,eAAe;;;iBA6H1B,CAAC;AAoYH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,UAEvC"}
|
package/dist/component/loop.js
CHANGED
|
@@ -409,19 +409,14 @@ async function beginWork(ctx, workId, logLevel, lagMs) {
|
|
|
409
409
|
if (!work) {
|
|
410
410
|
throw new Error("work not found");
|
|
411
411
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
const payload = await ctx.db.get(work.payloadId);
|
|
416
|
-
fnArgs = payload?.args ?? {};
|
|
417
|
-
}
|
|
418
|
-
const { attempts: attempt, fnHandle } = work;
|
|
419
|
-
const args = { workId, fnHandle, fnArgs, logLevel, attempt };
|
|
412
|
+
const { attempts: attempt, fnHandle, fnArgs, payloadId } = work;
|
|
413
|
+
const args = { workId, fnHandle, fnArgs, payloadId, logLevel, attempt };
|
|
414
|
+
let scheduleId;
|
|
420
415
|
if (work.fnType === "action") {
|
|
421
|
-
|
|
416
|
+
scheduleId = await ctx.scheduler.runAfter(0, internal.worker.runActionWrapper, args);
|
|
422
417
|
}
|
|
423
418
|
else if (work.fnType === "mutation" || work.fnType === "query") {
|
|
424
|
-
|
|
419
|
+
scheduleId = await ctx.scheduler.runAfter(0, internal.worker.runMutationWrapper, {
|
|
425
420
|
...args,
|
|
426
421
|
fnType: work.fnType,
|
|
427
422
|
});
|
|
@@ -429,6 +424,8 @@ async function beginWork(ctx, workId, logLevel, lagMs) {
|
|
|
429
424
|
else {
|
|
430
425
|
throw new Error(`Unexpected fnType ${work.fnType}`);
|
|
431
426
|
}
|
|
427
|
+
recordStarted(console, work, lagMs, scheduleId);
|
|
428
|
+
return scheduleId;
|
|
432
429
|
}
|
|
433
430
|
/**
|
|
434
431
|
* Reschedules a job for retry.
|