@convex-dev/workpool 0.2.0 → 0.2.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/README.md +81 -3
- package/dist/commonjs/client/index.d.ts +30 -5
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +27 -2
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/component/complete.d.ts.map +1 -1
- package/dist/commonjs/component/complete.js +9 -7
- package/dist/commonjs/component/complete.js.map +1 -1
- package/dist/commonjs/component/kick.d.ts +3 -2
- package/dist/commonjs/component/kick.d.ts.map +1 -1
- package/dist/commonjs/component/kick.js +12 -9
- package/dist/commonjs/component/kick.js.map +1 -1
- package/dist/commonjs/component/lib.d.ts +3 -3
- package/dist/commonjs/component/lib.d.ts.map +1 -1
- package/dist/commonjs/component/lib.js +25 -19
- package/dist/commonjs/component/lib.js.map +1 -1
- package/dist/commonjs/component/logging.d.ts +3 -2
- package/dist/commonjs/component/logging.d.ts.map +1 -1
- package/dist/commonjs/component/logging.js +34 -15
- package/dist/commonjs/component/logging.js.map +1 -1
- package/dist/commonjs/component/loop.js +10 -10
- package/dist/commonjs/component/loop.js.map +1 -1
- package/dist/commonjs/component/recovery.d.ts +29 -0
- package/dist/commonjs/component/recovery.d.ts.map +1 -1
- package/dist/commonjs/component/recovery.js +69 -66
- package/dist/commonjs/component/recovery.js.map +1 -1
- package/dist/commonjs/component/schema.d.ts +11 -11
- package/dist/commonjs/component/shared.d.ts +4 -4
- package/dist/commonjs/component/shared.d.ts.map +1 -1
- package/dist/commonjs/component/shared.js +2 -2
- package/dist/commonjs/component/shared.js.map +1 -1
- package/dist/commonjs/component/stats.d.ts +20 -21
- package/dist/commonjs/component/stats.d.ts.map +1 -1
- package/dist/commonjs/component/stats.js +86 -38
- package/dist/commonjs/component/stats.js.map +1 -1
- package/dist/commonjs/component/worker.d.ts +2 -2
- package/dist/esm/client/index.d.ts +30 -5
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +27 -2
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/component/complete.d.ts.map +1 -1
- package/dist/esm/component/complete.js +9 -7
- package/dist/esm/component/complete.js.map +1 -1
- package/dist/esm/component/kick.d.ts +3 -2
- package/dist/esm/component/kick.d.ts.map +1 -1
- package/dist/esm/component/kick.js +12 -9
- package/dist/esm/component/kick.js.map +1 -1
- package/dist/esm/component/lib.d.ts +3 -3
- package/dist/esm/component/lib.d.ts.map +1 -1
- package/dist/esm/component/lib.js +25 -19
- package/dist/esm/component/lib.js.map +1 -1
- package/dist/esm/component/logging.d.ts +3 -2
- package/dist/esm/component/logging.d.ts.map +1 -1
- package/dist/esm/component/logging.js +34 -15
- package/dist/esm/component/logging.js.map +1 -1
- package/dist/esm/component/loop.js +10 -10
- package/dist/esm/component/loop.js.map +1 -1
- package/dist/esm/component/recovery.d.ts +29 -0
- package/dist/esm/component/recovery.d.ts.map +1 -1
- package/dist/esm/component/recovery.js +69 -66
- package/dist/esm/component/recovery.js.map +1 -1
- package/dist/esm/component/schema.d.ts +11 -11
- package/dist/esm/component/shared.d.ts +4 -4
- package/dist/esm/component/shared.d.ts.map +1 -1
- package/dist/esm/component/shared.js +2 -2
- package/dist/esm/component/shared.js.map +1 -1
- package/dist/esm/component/stats.d.ts +20 -21
- package/dist/esm/component/stats.d.ts.map +1 -1
- package/dist/esm/component/stats.js +86 -38
- package/dist/esm/component/stats.js.map +1 -1
- package/dist/esm/component/worker.d.ts +2 -2
- package/package.json +6 -7
- package/src/client/index.ts +64 -35
- package/src/component/_generated/api.d.ts +6 -6
- package/src/component/complete.ts +18 -7
- package/src/component/kick.test.ts +17 -7
- package/src/component/kick.ts +14 -11
- package/src/component/lib.ts +33 -26
- package/src/component/logging.test.ts +16 -0
- package/src/component/logging.ts +45 -23
- package/src/component/loop.test.ts +12 -12
- package/src/component/loop.ts +11 -11
- package/src/component/recovery.test.ts +6 -11
- package/src/component/recovery.ts +77 -69
- package/src/component/shared.ts +2 -2
- package/src/component/stats.test.ts +345 -0
- package/src/component/stats.ts +111 -41
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
import { Doc, Id } from "./_generated/dataModel.js";
|
|
2
|
+
import { MutationCtx } from "./_generated/server.js";
|
|
3
|
+
import { Config } from "./shared.js";
|
|
2
4
|
import { Logger } from "./logging.js";
|
|
3
5
|
/**
|
|
4
6
|
* Record stats about work execution. Intended to be queried by Axiom or Datadog.
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Sample axiom dashboard query:
|
|
8
|
-
|
|
9
|
-
workpool
|
|
10
|
-
| extend parsed_message = iff(
|
|
11
|
-
isnotnull(parse_json(trim("'", tostring(["data.message"])))),
|
|
12
|
-
parse_json(trim("'", tostring(["data.message"]))),
|
|
13
|
-
parse_json('{}')
|
|
14
|
-
)
|
|
15
|
-
| extend startLag = parsed_message["startLag"]
|
|
16
|
-
| extend fnName = parsed_message["fnName"]
|
|
17
|
-
| summarize avg(todouble(startLag)) by bin_auto(_time), tostring(fnName)
|
|
18
|
-
|
|
7
|
+
* See the [README](https://github.com/get-convex/workpool) for example queries.
|
|
19
8
|
*/
|
|
20
9
|
export declare function recordEnqueued(console: Logger, data: {
|
|
21
10
|
workId: Id<"work">;
|
|
@@ -24,17 +13,27 @@ export declare function recordEnqueued(console: Logger, data: {
|
|
|
24
13
|
}): void;
|
|
25
14
|
export declare function recordStarted(console: Logger, work: Doc<"work">, lagMs: number): void;
|
|
26
15
|
export declare function recordCompleted(console: Logger, work: Doc<"work">, status: "success" | "failed" | "canceled" | "retrying"): void;
|
|
27
|
-
export declare function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
16
|
+
export declare function generateReport(ctx: MutationCtx, console: Logger, state: Doc<"internalState">, { maxParallelism, logLevel }: Config): Promise<void>;
|
|
17
|
+
export declare const calculateBacklogAndReport: import("convex/server").RegisteredMutation<"internal", {
|
|
18
|
+
report: {
|
|
19
|
+
failed: number;
|
|
20
|
+
canceled: number;
|
|
21
|
+
completed: number;
|
|
22
|
+
succeeded: number;
|
|
23
|
+
retries: number;
|
|
24
|
+
lastReportTs: number;
|
|
25
|
+
};
|
|
26
|
+
logLevel: "DEBUG" | "INFO" | "REPORT" | "WARN" | "ERROR";
|
|
27
|
+
running: number;
|
|
28
|
+
startSegment: bigint;
|
|
29
|
+
endSegment: bigint;
|
|
30
|
+
cursor: string;
|
|
31
|
+
}, Promise<void>>;
|
|
33
32
|
/**
|
|
34
33
|
* Warning: this should not be used from a mutation, as it will cause conflicts.
|
|
35
34
|
* Use this while developing to see the state of the queue.
|
|
36
35
|
*/
|
|
37
|
-
export declare const
|
|
36
|
+
export declare const diagnostics: import("convex/server").RegisteredQuery<"internal", {}, Promise<{
|
|
38
37
|
canceling: any;
|
|
39
38
|
waiting: any;
|
|
40
39
|
running: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAGL,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,MAAM,EAGP,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,MAAM,EAAuB,MAAM,cAAc,CAAC;AAOzE;;;GAGG;AAEH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,QAMF;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,KAAK,EAAE,MAAM,QASd;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,QASvD;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,EAC3B,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,MAAM,iBAkCrC;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAyCpC,CAAC;AAiBH;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;GA4BtB,CAAC"}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import { v } from "convex/values";
|
|
2
|
-
import { internalQuery,
|
|
3
|
-
import { DEFAULT_MAX_PARALLELISM } from "./shared.js";
|
|
2
|
+
import { internalMutation, internalQuery, } from "./_generated/server.js";
|
|
3
|
+
import { DEFAULT_MAX_PARALLELISM, getCurrentSegment, } from "./shared.js";
|
|
4
|
+
import { createLogger, logLevel, shouldLog } from "./logging.js";
|
|
5
|
+
import { internal } from "./_generated/api.js";
|
|
6
|
+
import schema from "./schema.js";
|
|
7
|
+
import { paginator } from "convex-helpers/server/pagination";
|
|
8
|
+
const BACKLOG_BATCH_SIZE = 100;
|
|
4
9
|
/**
|
|
5
10
|
* Record stats about work execution. Intended to be queried by Axiom or Datadog.
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Sample axiom dashboard query:
|
|
9
|
-
|
|
10
|
-
workpool
|
|
11
|
-
| extend parsed_message = iff(
|
|
12
|
-
isnotnull(parse_json(trim("'", tostring(["data.message"])))),
|
|
13
|
-
parse_json(trim("'", tostring(["data.message"]))),
|
|
14
|
-
parse_json('{}')
|
|
15
|
-
)
|
|
16
|
-
| extend startLag = parsed_message["startLag"]
|
|
17
|
-
| extend fnName = parsed_message["fnName"]
|
|
18
|
-
| summarize avg(todouble(startLag)) by bin_auto(_time), tostring(fnName)
|
|
19
|
-
|
|
11
|
+
* See the [README](https://github.com/get-convex/workpool) for example queries.
|
|
20
12
|
*/
|
|
21
13
|
export function recordEnqueued(console, data) {
|
|
22
14
|
console.event("enqueued", {
|
|
@@ -42,36 +34,92 @@ export function recordCompleted(console, work, status) {
|
|
|
42
34
|
status,
|
|
43
35
|
});
|
|
44
36
|
}
|
|
45
|
-
export function
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
37
|
+
export async function generateReport(ctx, console, state, { maxParallelism, logLevel }) {
|
|
38
|
+
if (!shouldLog(logLevel, "REPORT")) {
|
|
39
|
+
// Don't waste time if we're not going to log.
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const currentSegment = getCurrentSegment();
|
|
43
|
+
const pendingStart = await paginator(ctx.db, schema)
|
|
44
|
+
.query("pendingStart")
|
|
45
|
+
.withIndex("segment", (q) => q
|
|
46
|
+
.gte("segment", state.segmentCursors.incoming)
|
|
47
|
+
.lt("segment", currentSegment))
|
|
48
|
+
.paginate({
|
|
49
|
+
numItems: maxParallelism,
|
|
50
|
+
cursor: null,
|
|
56
51
|
});
|
|
52
|
+
if (pendingStart.isDone) {
|
|
53
|
+
recordReport(console, {
|
|
54
|
+
...state.report,
|
|
55
|
+
running: state.running.length,
|
|
56
|
+
backlog: pendingStart.page.length,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
await ctx.scheduler.runAfter(0, internal.stats.calculateBacklogAndReport, {
|
|
61
|
+
startSegment: state.segmentCursors.incoming,
|
|
62
|
+
endSegment: currentSegment,
|
|
63
|
+
cursor: pendingStart.continueCursor,
|
|
64
|
+
report: state.report,
|
|
65
|
+
running: state.running.length,
|
|
66
|
+
logLevel,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
57
69
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
export const calculateBacklogAndReport = internalMutation({
|
|
71
|
+
args: {
|
|
72
|
+
startSegment: v.int64(),
|
|
73
|
+
endSegment: v.int64(),
|
|
74
|
+
cursor: v.string(),
|
|
75
|
+
report: schema.tables.internalState.validator.fields.report,
|
|
76
|
+
running: v.number(),
|
|
77
|
+
logLevel,
|
|
78
|
+
},
|
|
79
|
+
handler: async (ctx, args) => {
|
|
80
|
+
const pendingStart = await paginator(ctx.db, schema)
|
|
81
|
+
.query("pendingStart")
|
|
82
|
+
.withIndex("segment", (q) => q.gte("segment", args.startSegment).lt("segment", args.endSegment))
|
|
83
|
+
.paginate({
|
|
84
|
+
numItems: BACKLOG_BATCH_SIZE,
|
|
85
|
+
cursor: args.cursor,
|
|
86
|
+
});
|
|
87
|
+
const console = createLogger(args.logLevel);
|
|
88
|
+
if (pendingStart.isDone) {
|
|
89
|
+
recordReport(console, {
|
|
90
|
+
...args.report,
|
|
91
|
+
running: args.running,
|
|
92
|
+
backlog: pendingStart.page.length,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
await ctx.scheduler.runAfter(0, internal.stats.calculateBacklogAndReport, {
|
|
97
|
+
startSegment: args.startSegment,
|
|
98
|
+
endSegment: args.endSegment,
|
|
99
|
+
cursor: pendingStart.continueCursor,
|
|
100
|
+
report: args.report,
|
|
101
|
+
running: args.running,
|
|
102
|
+
logLevel: args.logLevel,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
68
105
|
},
|
|
69
106
|
});
|
|
107
|
+
function recordReport(console, report) {
|
|
108
|
+
const { completed, failed, retries } = report;
|
|
109
|
+
const withoutRetries = completed - retries;
|
|
110
|
+
const failureRate = completed ? (failed + retries) / completed : 0;
|
|
111
|
+
const permanentFailureRate = withoutRetries ? failed / withoutRetries : 0;
|
|
112
|
+
console.event("report", {
|
|
113
|
+
...report,
|
|
114
|
+
failureRate: Number(failureRate.toFixed(4)),
|
|
115
|
+
permanentFailureRate: Number(permanentFailureRate.toFixed(4)),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
70
118
|
/**
|
|
71
119
|
* Warning: this should not be used from a mutation, as it will cause conflicts.
|
|
72
120
|
* Use this while developing to see the state of the queue.
|
|
73
121
|
*/
|
|
74
|
-
export const
|
|
122
|
+
export const diagnostics = internalQuery({
|
|
75
123
|
args: {},
|
|
76
124
|
returns: v.any(),
|
|
77
125
|
handler: async (ctx) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,OAAO,
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export declare const runMutationWrapper: import("convex/server").RegisteredMutation<"internal", {
|
|
2
|
-
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
2
|
+
logLevel: "DEBUG" | "INFO" | "REPORT" | "WARN" | "ERROR";
|
|
3
3
|
fnHandle: string;
|
|
4
4
|
workId: import("convex/values").GenericId<"work">;
|
|
5
5
|
fnArgs: any;
|
|
6
6
|
attempt: number;
|
|
7
7
|
}, Promise<void>>;
|
|
8
8
|
export declare const runActionWrapper: import("convex/server").RegisteredAction<"internal", {
|
|
9
|
-
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
9
|
+
logLevel: "DEBUG" | "INFO" | "REPORT" | "WARN" | "ERROR";
|
|
10
10
|
fnHandle: string;
|
|
11
11
|
workId: import("convex/values").GenericId<"work">;
|
|
12
12
|
fnArgs: any;
|
|
@@ -32,17 +32,20 @@ export declare class Workpool {
|
|
|
32
32
|
maxParallelism?: number;
|
|
33
33
|
/** How much to log. This is updated on each call to `enqueue*`,
|
|
34
34
|
* `status`, or `cancel*`.
|
|
35
|
-
* Default is
|
|
36
|
-
* With INFO, you can see events for started and completed work
|
|
37
|
-
* be parsed by tools like
|
|
35
|
+
* Default is REPORT, which logs warnings, errors, and a periodic report.
|
|
36
|
+
* With INFO, you can also see events for started and completed work.
|
|
37
|
+
* Stats generated can be parsed by tools like
|
|
38
|
+
* [Axiom](https://axiom.co) for monitoring.
|
|
38
39
|
* With DEBUG, you can see timers and internal events for work being
|
|
39
40
|
* scheduled.
|
|
40
41
|
*/
|
|
41
42
|
logLevel?: LogLevel;
|
|
42
|
-
/** Default retry behavior for enqueued actions.
|
|
43
|
+
/** Default retry behavior for enqueued actions.
|
|
44
|
+
* See {@link RetryBehavior}.
|
|
45
|
+
*/
|
|
43
46
|
defaultRetryBehavior?: RetryBehavior;
|
|
44
47
|
/** Whether to retry actions that fail by default. Default: false.
|
|
45
|
-
* NOTE: Only
|
|
48
|
+
* NOTE: Only enable this if your actions are idempotent.
|
|
46
49
|
* See the docs (README.md) for more details.
|
|
47
50
|
*/
|
|
48
51
|
retryActionsByDefault?: boolean;
|
|
@@ -79,8 +82,30 @@ export declare class Workpool {
|
|
|
79
82
|
* and scheduling via `runAt` or `runAfter`.
|
|
80
83
|
*/
|
|
81
84
|
enqueueMutation<Args extends DefaultFunctionArgs, ReturnType>(ctx: RunMutationCtx, fn: FunctionReference<"mutation", FunctionVisibility, Args, ReturnType>, fnArgs: Args, options?: CallbackOptions & SchedulerOptions): Promise<WorkId>;
|
|
85
|
+
/**
|
|
86
|
+
* Cancels a work item. If it's already started, it will be allowed to finish
|
|
87
|
+
* but will not be retried.
|
|
88
|
+
*
|
|
89
|
+
* @param ctx - The mutation or action context that can call ctx.runMutation.
|
|
90
|
+
* @param id - The ID of the work to cancel.
|
|
91
|
+
*/
|
|
82
92
|
cancel(ctx: RunMutationCtx, id: WorkId): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Cancels all pending work items. See {@link cancel}.
|
|
95
|
+
*
|
|
96
|
+
* @param ctx - The mutation or action context that can call ctx.runMutation.
|
|
97
|
+
*/
|
|
83
98
|
cancelAll(ctx: RunMutationCtx): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Gets the status of a work item.
|
|
101
|
+
*
|
|
102
|
+
* @param ctx - The query context that can call ctx.runQuery.
|
|
103
|
+
* @param id - The ID of the work to get the status of.
|
|
104
|
+
* @returns The status of the work item. One of:
|
|
105
|
+
* - `{ state: "pending", previousAttempts: number }`
|
|
106
|
+
* - `{ state: "running", previousAttempts: number }`
|
|
107
|
+
* - `{ state: "finished" }`
|
|
108
|
+
*/
|
|
84
109
|
status(ctx: RunQueryCtx, id: WorkId): Promise<Status>;
|
|
85
110
|
}
|
|
86
111
|
export type SchedulerOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAIL,SAAS,IAAI,eAAe,EAC5B,KAAK,aAAa,EAClB,SAAS,EAET,MAAM,EACP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,CAAC;AAG3C,eAAO,MAAM,sBAAsB,EAAE,aAIpC,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC;AACnD,eAAO,MAAM,eAAe,6BAAgC,CAAC;AAE7D,qBAAa,QAAQ;IAajB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IAbjB;;;;;;;;;;OAUG;gBAEO,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,qCAAqC;IAChE,OAAO,EAAE;QACf;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/client/index.js
CHANGED
|
@@ -86,21 +86,48 @@ export class Workpool {
|
|
|
86
86
|
});
|
|
87
87
|
return id;
|
|
88
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Cancels a work item. If it's already started, it will be allowed to finish
|
|
91
|
+
* but will not be retried.
|
|
92
|
+
*
|
|
93
|
+
* @param ctx - The mutation or action context that can call ctx.runMutation.
|
|
94
|
+
* @param id - The ID of the work to cancel.
|
|
95
|
+
*/
|
|
89
96
|
async cancel(ctx, id) {
|
|
90
97
|
await ctx.runMutation(this.component.lib.cancel, {
|
|
91
98
|
id,
|
|
92
99
|
logLevel: this.options.logLevel ?? getDefaultLogLevel(),
|
|
93
100
|
});
|
|
94
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Cancels all pending work items. See {@link cancel}.
|
|
104
|
+
*
|
|
105
|
+
* @param ctx - The mutation or action context that can call ctx.runMutation.
|
|
106
|
+
*/
|
|
95
107
|
async cancelAll(ctx) {
|
|
96
108
|
await ctx.runMutation(this.component.lib.cancelAll, {
|
|
97
109
|
logLevel: this.options.logLevel ?? getDefaultLogLevel(),
|
|
98
110
|
});
|
|
99
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Gets the status of a work item.
|
|
114
|
+
*
|
|
115
|
+
* @param ctx - The query context that can call ctx.runQuery.
|
|
116
|
+
* @param id - The ID of the work to get the status of.
|
|
117
|
+
* @returns The status of the work item. One of:
|
|
118
|
+
* - `{ state: "pending", previousAttempts: number }`
|
|
119
|
+
* - `{ state: "running", previousAttempts: number }`
|
|
120
|
+
* - `{ state: "finished" }`
|
|
121
|
+
*/
|
|
100
122
|
async status(ctx, id) {
|
|
101
123
|
return ctx.runQuery(this.component.lib.status, { id });
|
|
102
124
|
}
|
|
103
125
|
}
|
|
126
|
+
// ensure OnCompleteArgs satisfies SharedOnCompleteArgs
|
|
127
|
+
const _ = {};
|
|
128
|
+
//
|
|
129
|
+
// Helper functions
|
|
130
|
+
//
|
|
104
131
|
function getRetryBehavior(defaultRetryBehavior, retryActionsByDefault, retryOverride) {
|
|
105
132
|
const defaultRetry = defaultRetryBehavior ?? DEFAULT_RETRY_BEHAVIOR;
|
|
106
133
|
const retryByDefault = retryActionsByDefault ?? false;
|
|
@@ -122,8 +149,6 @@ async function defaultEnqueueArgs(fn, { logLevel, maxParallelism }) {
|
|
|
122
149
|
},
|
|
123
150
|
};
|
|
124
151
|
}
|
|
125
|
-
// ensure OnCompleteArgs satisfies SharedOnCompleteArgs
|
|
126
|
-
const _ = {};
|
|
127
152
|
function getRunAt(options) {
|
|
128
153
|
if (!options) {
|
|
129
154
|
return Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAIpB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,CAAC,EAAW,MAAM,eAAe,CAAC;AAE3C,OAAO,EACL,iBAAiB,EAEjB,QAAQ,GACT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,uBAAuB,EAEvB,SAAS,IAAI,eAAe,GAK7B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAkB,CAAC;AAE3C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,GAAG;IACrB,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAqB,CAAC;AAE7D,MAAM,OAAO,QAAQ;IAaT;IACA;IAbV;;;;;;;;;;OAUG;IACH,YACU,SAAyB,EAAE,qCAAqC;IAChE,
|
|
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,EAAE,KAAK,EAAK,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../../src/component/complete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAK,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAoB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMvE,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,iBAiFjC;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;iBAGnB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { v } from "convex/values";
|
|
|
2
2
|
import { internalMutation } from "./_generated/server.js";
|
|
3
3
|
import { kickMainLoop } from "./kick.js";
|
|
4
4
|
import { createLogger } from "./logging.js";
|
|
5
|
-
import {
|
|
5
|
+
import { runResult } from "./shared.js";
|
|
6
6
|
import { recordCompleted } from "./stats.js";
|
|
7
7
|
export const completeArgs = v.object({
|
|
8
8
|
jobs: v.array(v.object({
|
|
@@ -14,7 +14,7 @@ export const completeArgs = v.object({
|
|
|
14
14
|
export async function completeHandler(ctx, args) {
|
|
15
15
|
const globals = await ctx.db.query("globals").unique();
|
|
16
16
|
const console = createLogger(globals?.logLevel);
|
|
17
|
-
|
|
17
|
+
const pendingCompletions = [];
|
|
18
18
|
await Promise.all(args.jobs.map(async (job) => {
|
|
19
19
|
const work = await ctx.db.get(job.workId);
|
|
20
20
|
if (!work) {
|
|
@@ -60,17 +60,19 @@ export async function completeHandler(ctx, args) {
|
|
|
60
60
|
await ctx.db.delete(job.workId);
|
|
61
61
|
}
|
|
62
62
|
if (job.runResult.kind !== "canceled") {
|
|
63
|
-
|
|
63
|
+
pendingCompletions.push({
|
|
64
64
|
runResult: job.runResult,
|
|
65
65
|
workId: job.workId,
|
|
66
|
-
segment: nextSegment(),
|
|
67
66
|
retry,
|
|
68
67
|
});
|
|
69
|
-
anyPendingCompletions = true;
|
|
70
68
|
}
|
|
71
69
|
}));
|
|
72
|
-
if (
|
|
73
|
-
await kickMainLoop(ctx, "complete");
|
|
70
|
+
if (pendingCompletions.length > 0) {
|
|
71
|
+
const segment = await kickMainLoop(ctx, "complete");
|
|
72
|
+
await Promise.all(pendingCompletions.map((completion) => ctx.db.insert("pendingCompletion", {
|
|
73
|
+
...completion,
|
|
74
|
+
segment,
|
|
75
|
+
})));
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
export const complete = internalMutation({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../src/component/complete.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,CAAC,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../src/component/complete.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { MutationCtx } from "./_generated/server.js";
|
|
2
2
|
import { Config } from "./shared.js";
|
|
3
3
|
/**
|
|
4
|
-
* Called from outside the loop
|
|
4
|
+
* Called from outside the loop.
|
|
5
|
+
* Returns the soonest segment to enqueue work for the main loop.
|
|
5
6
|
*/
|
|
6
|
-
export declare function kickMainLoop(ctx: MutationCtx, source: "enqueue" | "cancel" | "complete", config?: Partial<Config>): Promise<
|
|
7
|
+
export declare function kickMainLoop(ctx: MutationCtx, source: "enqueue" | "cancel" | "complete", config?: Partial<Config>): Promise<bigint>;
|
|
7
8
|
export declare const forceKick: import("convex/server").RegisteredMutation<"internal", {}, Promise<void>>;
|
|
8
9
|
//# sourceMappingURL=kick.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kick.d.ts","sourceRoot":"","sources":["../../../src/component/kick.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGvE,OAAO,EAEL,MAAM,
|
|
1
|
+
{"version":3,"file":"kick.d.ts","sourceRoot":"","sources":["../../../src/component/kick.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGvE,OAAO,EAEL,MAAM,EAKP,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,EACzC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GACvB,OAAO,CAAC,MAAM,CAAC,CAiDjB;AAED,eAAO,MAAM,SAAS,2EAOpB,CAAC"}
|
|
@@ -2,29 +2,30 @@ import { internal } from "./_generated/api.js";
|
|
|
2
2
|
import { internalMutation } from "./_generated/server.js";
|
|
3
3
|
import { createLogger, DEFAULT_LOG_LEVEL } from "./logging.js";
|
|
4
4
|
import { INITIAL_STATE } from "./loop.js";
|
|
5
|
-
import { boundScheduledTime, DEFAULT_MAX_PARALLELISM, fromSegment,
|
|
5
|
+
import { boundScheduledTime, DEFAULT_MAX_PARALLELISM, fromSegment, getCurrentSegment, getNextSegment, } from "./shared.js";
|
|
6
6
|
/**
|
|
7
|
-
* Called from outside the loop
|
|
7
|
+
* Called from outside the loop.
|
|
8
|
+
* Returns the soonest segment to enqueue work for the main loop.
|
|
8
9
|
*/
|
|
9
10
|
export async function kickMainLoop(ctx, source, config) {
|
|
10
11
|
const globals = await getOrUpdateGlobals(ctx, config);
|
|
11
12
|
const console = createLogger(globals.logLevel);
|
|
12
13
|
const runStatus = await getOrCreateRunStatus(ctx);
|
|
14
|
+
const next = getNextSegment();
|
|
13
15
|
// Only kick to run now if we're scheduled or idle.
|
|
14
16
|
if (runStatus.state.kind === "running") {
|
|
15
17
|
console.debug(`[${source}] main is actively running, so we don't need to kick it`);
|
|
16
|
-
return;
|
|
18
|
+
return next;
|
|
17
19
|
}
|
|
18
|
-
const segment = nextSegment();
|
|
19
20
|
// main is scheduled to run later, so we should cancel it and reschedule.
|
|
20
21
|
if (runStatus.state.kind === "scheduled") {
|
|
21
22
|
if (source === "enqueue" && runStatus.state.saturated) {
|
|
22
23
|
console.debug(`[${source}] main is saturated, so we don't need to kick it`);
|
|
23
|
-
return;
|
|
24
|
+
return next;
|
|
24
25
|
}
|
|
25
|
-
if (runStatus.state.segment <=
|
|
26
|
+
if (runStatus.state.segment <= next) {
|
|
26
27
|
console.debug(`[${source}] main is scheduled to run soon enough, so we don't need to kick it`);
|
|
27
|
-
return;
|
|
28
|
+
return next;
|
|
28
29
|
}
|
|
29
30
|
console.debug(`[${source}] main is scheduled to run later, so reschedule it to run now`);
|
|
30
31
|
const scheduled = await ctx.db.system.get(runStatus.state.scheduledId);
|
|
@@ -39,11 +40,13 @@ export async function kickMainLoop(ctx, source, config) {
|
|
|
39
40
|
console.debug(`[${source}] main was idle, so run it now`);
|
|
40
41
|
}
|
|
41
42
|
await ctx.db.patch(runStatus._id, { state: { kind: "running" } });
|
|
42
|
-
const
|
|
43
|
+
const current = getCurrentSegment();
|
|
44
|
+
const scheduledTime = boundScheduledTime(fromSegment(current), console);
|
|
43
45
|
await ctx.scheduler.runAt(scheduledTime, internal.loop.main, {
|
|
44
46
|
generation: runStatus.state.generation,
|
|
45
|
-
segment,
|
|
47
|
+
segment: current,
|
|
46
48
|
});
|
|
49
|
+
return current;
|
|
47
50
|
}
|
|
48
51
|
export const forceKick = internalMutation({
|
|
49
52
|
args: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kick.js","sourceRoot":"","sources":["../../../src/component/kick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAe,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAElB,uBAAuB,EACvB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"kick.js","sourceRoot":"","sources":["../../../src/component/kick.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,16 +15,16 @@ export declare const enqueue: import("convex/server").RegisteredMutation<"public
|
|
|
15
15
|
runAt: number;
|
|
16
16
|
config: {
|
|
17
17
|
maxParallelism: number;
|
|
18
|
-
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
18
|
+
logLevel: "DEBUG" | "INFO" | "REPORT" | "WARN" | "ERROR";
|
|
19
19
|
};
|
|
20
20
|
}, Promise<import("convex/values").GenericId<"work">>>;
|
|
21
21
|
export declare const cancel: import("convex/server").RegisteredMutation<"public", {
|
|
22
22
|
id: import("convex/values").GenericId<"work">;
|
|
23
|
-
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
23
|
+
logLevel: "DEBUG" | "INFO" | "REPORT" | "WARN" | "ERROR";
|
|
24
24
|
}, Promise<void>>;
|
|
25
25
|
export declare const cancelAll: import("convex/server").RegisteredMutation<"public", {
|
|
26
26
|
before?: number | undefined;
|
|
27
|
-
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
27
|
+
logLevel: "DEBUG" | "INFO" | "REPORT" | "WARN" | "ERROR";
|
|
28
28
|
}, Promise<void>>;
|
|
29
29
|
export declare const status: import("convex/server").RegisteredQuery<"public", {
|
|
30
30
|
id: import("convex/values").GenericId<"work">;
|
|
@@ -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":"AAoBA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;sDAkClB,CAAC;AAEH,eAAO,MAAM,MAAM;;;iBAejB,CAAC;AAGH,eAAO,MAAM,SAAS;;;iBAmCpB,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;GAyBjB,CAAC"}
|