@convex-dev/workpool 0.1.3-alpha.0 → 0.2.0-beta.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/README.md +144 -4
- package/dist/commonjs/client/index.d.ts +123 -35
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +122 -15
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/client/utils.d.ts +16 -0
- package/dist/commonjs/client/utils.d.ts.map +1 -0
- package/dist/commonjs/client/utils.js +2 -0
- package/dist/commonjs/client/utils.js.map +1 -0
- package/dist/commonjs/component/convex.config.d.ts.map +1 -1
- package/dist/commonjs/component/convex.config.js +0 -2
- package/dist/commonjs/component/convex.config.js.map +1 -1
- package/dist/commonjs/component/kick.d.ts +9 -0
- package/dist/commonjs/component/kick.d.ts.map +1 -0
- package/dist/commonjs/component/kick.js +97 -0
- package/dist/commonjs/component/kick.js.map +1 -0
- package/dist/commonjs/component/lib.d.ts +23 -32
- package/dist/commonjs/component/lib.d.ts.map +1 -1
- package/dist/commonjs/component/lib.js +70 -564
- package/dist/commonjs/component/lib.js.map +1 -1
- package/dist/commonjs/component/logging.d.ts +6 -4
- package/dist/commonjs/component/logging.d.ts.map +1 -1
- package/dist/commonjs/component/logging.js +13 -2
- package/dist/commonjs/component/logging.js.map +1 -1
- package/dist/commonjs/component/loop.d.ts +26 -0
- package/dist/commonjs/component/loop.d.ts.map +1 -0
- package/dist/commonjs/component/loop.js +453 -0
- package/dist/commonjs/component/loop.js.map +1 -0
- package/dist/commonjs/component/recovery.d.ts +8 -0
- package/dist/commonjs/component/recovery.d.ts.map +1 -0
- package/dist/commonjs/component/recovery.js +74 -0
- package/dist/commonjs/component/recovery.js.map +1 -0
- package/dist/commonjs/component/schema.d.ts +163 -93
- package/dist/commonjs/component/schema.d.ts.map +1 -1
- package/dist/commonjs/component/schema.js +54 -65
- package/dist/commonjs/component/schema.js.map +1 -1
- package/dist/commonjs/component/shared.d.ts +130 -0
- package/dist/commonjs/component/shared.d.ts.map +1 -0
- package/dist/commonjs/component/shared.js +65 -0
- package/dist/commonjs/component/shared.js.map +1 -0
- package/dist/commonjs/component/stats.d.ts +3 -2
- package/dist/commonjs/component/stats.d.ts.map +1 -1
- package/dist/commonjs/component/stats.js +17 -3
- package/dist/commonjs/component/stats.js.map +1 -1
- package/dist/commonjs/component/worker.d.ts +25 -0
- package/dist/commonjs/component/worker.d.ts.map +1 -0
- package/dist/commonjs/component/worker.js +86 -0
- package/dist/commonjs/component/worker.js.map +1 -0
- package/dist/esm/client/index.d.ts +123 -35
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +122 -15
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/utils.d.ts +16 -0
- package/dist/esm/client/utils.d.ts.map +1 -0
- package/dist/esm/client/utils.js +2 -0
- package/dist/esm/client/utils.js.map +1 -0
- package/dist/esm/component/convex.config.d.ts.map +1 -1
- package/dist/esm/component/convex.config.js +0 -2
- package/dist/esm/component/convex.config.js.map +1 -1
- package/dist/esm/component/kick.d.ts +9 -0
- package/dist/esm/component/kick.d.ts.map +1 -0
- package/dist/esm/component/kick.js +97 -0
- package/dist/esm/component/kick.js.map +1 -0
- package/dist/esm/component/lib.d.ts +23 -32
- package/dist/esm/component/lib.d.ts.map +1 -1
- package/dist/esm/component/lib.js +70 -564
- package/dist/esm/component/lib.js.map +1 -1
- package/dist/esm/component/logging.d.ts +6 -4
- package/dist/esm/component/logging.d.ts.map +1 -1
- package/dist/esm/component/logging.js +13 -2
- package/dist/esm/component/logging.js.map +1 -1
- package/dist/esm/component/loop.d.ts +26 -0
- package/dist/esm/component/loop.d.ts.map +1 -0
- package/dist/esm/component/loop.js +453 -0
- package/dist/esm/component/loop.js.map +1 -0
- package/dist/esm/component/recovery.d.ts +8 -0
- package/dist/esm/component/recovery.d.ts.map +1 -0
- package/dist/esm/component/recovery.js +74 -0
- package/dist/esm/component/recovery.js.map +1 -0
- package/dist/esm/component/schema.d.ts +163 -93
- package/dist/esm/component/schema.d.ts.map +1 -1
- package/dist/esm/component/schema.js +54 -65
- package/dist/esm/component/schema.js.map +1 -1
- package/dist/esm/component/shared.d.ts +130 -0
- package/dist/esm/component/shared.d.ts.map +1 -0
- package/dist/esm/component/shared.js +65 -0
- package/dist/esm/component/shared.js.map +1 -0
- package/dist/esm/component/stats.d.ts +3 -2
- package/dist/esm/component/stats.d.ts.map +1 -1
- package/dist/esm/component/stats.js +17 -3
- package/dist/esm/component/stats.js.map +1 -1
- package/dist/esm/component/worker.d.ts +25 -0
- package/dist/esm/component/worker.d.ts.map +1 -0
- package/dist/esm/component/worker.js +86 -0
- package/dist/esm/component/worker.js.map +1 -0
- package/package.json +6 -5
- package/src/client/index.ts +231 -70
- package/src/client/utils.ts +45 -0
- package/src/component/README.md +73 -0
- package/src/component/_generated/api.d.ts +36 -66
- package/src/component/convex.config.ts +0 -3
- package/src/component/kick.test.ts +286 -0
- package/src/component/kick.ts +118 -0
- package/src/component/lib.test.ts +203 -0
- package/src/component/lib.ts +80 -671
- package/src/component/logging.ts +24 -10
- package/src/component/loop.ts +579 -0
- package/src/component/recovery.ts +79 -0
- package/src/component/schema.ts +59 -77
- package/src/component/setup.test.ts +5 -0
- package/src/component/shared.ts +127 -0
- package/src/component/stats.ts +20 -6
- package/src/component/worker.ts +94 -0
package/dist/esm/client/index.js
CHANGED
|
@@ -1,40 +1,147 @@
|
|
|
1
1
|
import { createFunctionHandle, getFunctionName, } from "convex/server";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { v } from "convex/values";
|
|
3
|
+
import { runResult as runResultValidator, } from "../component/shared.js";
|
|
4
|
+
import { logLevel } from "../component/logging.js";
|
|
5
|
+
import { DEFAULT_LOG_LEVEL } from "../component/logging.js";
|
|
6
|
+
import { DEFAULT_MAX_PARALLELISM } from "../component/kick.js";
|
|
7
|
+
export { runResultValidator };
|
|
8
|
+
// Attempts will run with delay [0, 250, 500, 1000, 2000] (ms)
|
|
9
|
+
export const DEFAULT_RETRY_BEHAVIOR = {
|
|
10
|
+
maxAttempts: 5,
|
|
11
|
+
initialBackoffMs: 250,
|
|
12
|
+
base: 2,
|
|
13
|
+
};
|
|
14
|
+
export const workIdValidator = v.string();
|
|
4
15
|
export class Workpool {
|
|
5
16
|
component;
|
|
6
17
|
options;
|
|
7
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Initializes a Workpool.
|
|
20
|
+
*
|
|
21
|
+
* Note: if you want different pools, you need to *create different instances*
|
|
22
|
+
* of Workpool in convex.config.ts. It isn't sufficient to have different
|
|
23
|
+
* instances of this class.
|
|
24
|
+
*
|
|
25
|
+
* @param component - The component to use, like `components.workpool` from
|
|
26
|
+
* `./_generated/api.ts`.
|
|
27
|
+
* @param options - The options for the Workpool.
|
|
28
|
+
*/
|
|
29
|
+
constructor(component, // UseApi<api> for jump to definition
|
|
30
|
+
options) {
|
|
8
31
|
this.component = component;
|
|
9
32
|
this.options = options;
|
|
10
33
|
}
|
|
11
|
-
|
|
12
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Enqueues an action to be run.
|
|
36
|
+
*
|
|
37
|
+
* @param ctx - The mutation or action context that can call ctx.runMutation.
|
|
38
|
+
* @param fn - The action to run, like `internal.example.myAction`.
|
|
39
|
+
* @param fnArgs - The arguments to pass to the action.
|
|
40
|
+
* @param options - The options for the action to specify retry behavior,
|
|
41
|
+
* onComplete handling, and scheduling via `runAt` or `runAfter`.
|
|
42
|
+
* @returns The ID of the work that was enqueued.
|
|
43
|
+
*/
|
|
44
|
+
async enqueueAction(ctx, fn, fnArgs, options) {
|
|
45
|
+
const retryBehavior = getRetryBehavior(this.options.defaultRetryBehavior, this.options.retryActionsByDefault, options?.retry);
|
|
46
|
+
const onComplete = options?.onComplete
|
|
47
|
+
? {
|
|
48
|
+
fnHandle: await createFunctionHandle(options.onComplete),
|
|
49
|
+
context: options.context,
|
|
50
|
+
}
|
|
51
|
+
: undefined;
|
|
13
52
|
const id = await ctx.runMutation(this.component.lib.enqueue, {
|
|
14
|
-
|
|
15
|
-
fnName: getFunctionName(fn),
|
|
53
|
+
...(await defaultEnqueueArgs(fn, this.options)),
|
|
16
54
|
fnArgs,
|
|
17
55
|
fnType: "action",
|
|
18
|
-
|
|
56
|
+
runAt: getRunAt(options),
|
|
57
|
+
onComplete,
|
|
58
|
+
retryBehavior,
|
|
19
59
|
});
|
|
20
60
|
return id;
|
|
21
61
|
}
|
|
22
|
-
|
|
23
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Enqueues a mutation to be run.
|
|
64
|
+
*
|
|
65
|
+
* Note: mutations are not retried by the workpool. Convex automatically
|
|
66
|
+
* retries them on database conflicts and transient failures.
|
|
67
|
+
* Because they're deterministic, external retries don't provide any benefit.
|
|
68
|
+
*
|
|
69
|
+
* @param ctx - The mutation or action context that can call ctx.runMutation.
|
|
70
|
+
* @param fn - The mutation to run, like `internal.example.myMutation`.
|
|
71
|
+
* @param fnArgs - The arguments to pass to the mutation.
|
|
72
|
+
* @param options - The options for the mutation to specify onComplete handling
|
|
73
|
+
* and scheduling via `runAt` or `runAfter`.
|
|
74
|
+
*/
|
|
75
|
+
async enqueueMutation(ctx, fn, fnArgs, options) {
|
|
24
76
|
const id = await ctx.runMutation(this.component.lib.enqueue, {
|
|
25
|
-
|
|
26
|
-
fnName: getFunctionName(fn),
|
|
77
|
+
...(await defaultEnqueueArgs(fn, this.options)),
|
|
27
78
|
fnArgs,
|
|
28
79
|
fnType: "mutation",
|
|
29
|
-
|
|
80
|
+
runAt: getRunAt(options),
|
|
30
81
|
});
|
|
31
82
|
return id;
|
|
32
83
|
}
|
|
33
84
|
async cancel(ctx, id) {
|
|
34
|
-
await ctx.runMutation(this.component.lib.cancel, {
|
|
85
|
+
await ctx.runMutation(this.component.lib.cancel, {
|
|
86
|
+
id,
|
|
87
|
+
logLevel: this.options.logLevel ?? getDefaultLogLevel(),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async cancelAll(ctx) {
|
|
91
|
+
await ctx.runMutation(this.component.lib.cancelAll, {
|
|
92
|
+
logLevel: this.options.logLevel ?? getDefaultLogLevel(),
|
|
93
|
+
});
|
|
35
94
|
}
|
|
36
95
|
async status(ctx, id) {
|
|
37
|
-
return
|
|
96
|
+
return ctx.runQuery(this.component.lib.status, { id });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function getRetryBehavior(defaultRetryBehavior, retryActionsByDefault, retryOverride) {
|
|
100
|
+
const defaultRetry = defaultRetryBehavior ?? DEFAULT_RETRY_BEHAVIOR;
|
|
101
|
+
const retryByDefault = retryActionsByDefault ?? false;
|
|
102
|
+
if (retryOverride === true) {
|
|
103
|
+
return defaultRetry;
|
|
104
|
+
}
|
|
105
|
+
if (retryOverride === false) {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
return retryOverride ?? (retryByDefault ? defaultRetry : undefined);
|
|
109
|
+
}
|
|
110
|
+
async function defaultEnqueueArgs(fn, { logLevel, maxParallelism }) {
|
|
111
|
+
return {
|
|
112
|
+
fnHandle: await createFunctionHandle(fn),
|
|
113
|
+
fnName: getFunctionName(fn),
|
|
114
|
+
config: {
|
|
115
|
+
logLevel: logLevel ?? getDefaultLogLevel(),
|
|
116
|
+
maxParallelism: maxParallelism ?? DEFAULT_MAX_PARALLELISM,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// ensure OnCompleteArgs satisfies SharedOnCompleteArgs
|
|
121
|
+
const _ = {};
|
|
122
|
+
function getRunAt(options) {
|
|
123
|
+
if (!options) {
|
|
124
|
+
return Date.now();
|
|
125
|
+
}
|
|
126
|
+
if ("runAt" in options && options.runAt !== undefined) {
|
|
127
|
+
return options.runAt;
|
|
128
|
+
}
|
|
129
|
+
if ("runAfter" in options && options.runAfter !== undefined) {
|
|
130
|
+
return Date.now() + options.runAfter;
|
|
131
|
+
}
|
|
132
|
+
return Date.now();
|
|
133
|
+
}
|
|
134
|
+
function getDefaultLogLevel() {
|
|
135
|
+
if (process.env.WORKPOOL_LOG_LEVEL) {
|
|
136
|
+
if (!logLevel.members
|
|
137
|
+
.map((m) => m.value)
|
|
138
|
+
.includes(process.env.WORKPOOL_LOG_LEVEL)) {
|
|
139
|
+
console.warn(`Invalid log level (${process.env.WORKPOOL_LOG_LEVEL}), defaulting to "INFO"`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return process.env.WORKPOOL_LOG_LEVEL;
|
|
143
|
+
}
|
|
38
144
|
}
|
|
145
|
+
return DEFAULT_LOG_LEVEL;
|
|
39
146
|
}
|
|
40
147
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Expand, FunctionReference, GenericMutationCtx, GenericQueryCtx } from "convex/server";
|
|
2
|
+
import { GenericId } from "convex/values";
|
|
3
|
+
import { GenericDataModel } from "convex/server";
|
|
4
|
+
export type RunQueryCtx = {
|
|
5
|
+
runQuery: GenericQueryCtx<GenericDataModel>["runQuery"];
|
|
6
|
+
};
|
|
7
|
+
export type RunMutationCtx = {
|
|
8
|
+
runMutation: GenericMutationCtx<GenericDataModel>["runMutation"];
|
|
9
|
+
};
|
|
10
|
+
export type OpaqueIds<T> = T extends GenericId<infer _T> ? string : T extends (infer U)[] ? OpaqueIds<U>[] : T extends object ? {
|
|
11
|
+
[K in keyof T]: OpaqueIds<T[K]>;
|
|
12
|
+
} : T;
|
|
13
|
+
export type UseApi<API> = Expand<{
|
|
14
|
+
[mod in keyof API]: API[mod] extends FunctionReference<infer FType, "public", infer FArgs, infer FReturnType, infer FComponentPath> ? FunctionReference<FType, "internal", OpaqueIds<FArgs>, OpaqueIds<FReturnType>, FComponentPath> : UseApi<API[mod]>;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/client/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC;CACzD,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,IACrB,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,CAAC,GACzB,MAAM,GACN,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,SAAS,CAAC,CAAC,CAAC,EAAE,GACd,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACnC,CAAC,CAAC;AAEZ,MAAM,MAAM,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC;KAC9B,GAAG,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,iBAAiB,CACpD,MAAM,KAAK,EACX,QAAQ,EACR,MAAM,KAAK,EACX,MAAM,WAAW,EACjB,MAAM,cAAc,CACrB,GACG,iBAAiB,CACf,KAAK,EACL,UAAU,EACV,SAAS,CAAC,KAAK,CAAC,EAChB,SAAS,CAAC,WAAW,CAAC,EACtB,cAAc,CACf,GACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACrB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/client/utils.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex.config.d.ts","sourceRoot":"","sources":["../../../src/component/convex.config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convex.config.d.ts","sourceRoot":"","sources":["../../../src/component/convex.config.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS,kDAA8B,CAAC;AAE9C,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex.config.js","sourceRoot":"","sources":["../../../src/component/convex.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"convex.config.js","sourceRoot":"","sources":["../../../src/component/convex.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAE9C,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MutationCtx } from "./_generated/server.js";
|
|
2
|
+
import { Config } from "./shared.js";
|
|
3
|
+
export declare const DEFAULT_MAX_PARALLELISM = 10;
|
|
4
|
+
/**
|
|
5
|
+
* Called from outside the loop:
|
|
6
|
+
*/
|
|
7
|
+
export declare function kickMainLoop(ctx: MutationCtx, source: "enqueue" | "cancel" | "saveResult" | "recovery", config?: Partial<Config>): Promise<void>;
|
|
8
|
+
export declare const forceKick: import("convex/server").RegisteredMutation<"internal", {}, Promise<void>>;
|
|
9
|
+
//# sourceMappingURL=kick.d.ts.map
|
|
@@ -0,0 +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,EAAE,MAAM,EAAe,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C;;GAEG;AAEH,wBAAsB,YAAY,CAChC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,EACxD,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED,eAAO,MAAM,SAAS,2EAOpB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { internal } from "./_generated/api.js";
|
|
2
|
+
import { internalMutation } from "./_generated/server.js";
|
|
3
|
+
import { createLogger, DEFAULT_LOG_LEVEL } from "./logging.js";
|
|
4
|
+
import { INITIAL_STATE } from "./loop.js";
|
|
5
|
+
import { nextSegment } from "./shared.js";
|
|
6
|
+
export const DEFAULT_MAX_PARALLELISM = 10;
|
|
7
|
+
/**
|
|
8
|
+
* Called from outside the loop:
|
|
9
|
+
*/
|
|
10
|
+
export async function kickMainLoop(ctx, source, config) {
|
|
11
|
+
const globals = await getOrUpdateGlobals(ctx, config);
|
|
12
|
+
const console = createLogger(globals.logLevel);
|
|
13
|
+
const runStatus = await getOrCreateRunStatus(ctx);
|
|
14
|
+
// Only kick to run now if we're scheduled or idle.
|
|
15
|
+
if (runStatus.state.kind === "running") {
|
|
16
|
+
console.debug(`[${source}] main is actively running, so we don't need to kick it`);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const segment = nextSegment();
|
|
20
|
+
// main is scheduled to run later, so we should cancel it and reschedule.
|
|
21
|
+
if (runStatus.state.kind === "scheduled") {
|
|
22
|
+
if (source === "enqueue" && runStatus.state.saturated) {
|
|
23
|
+
console.debug(`[${source}] main is saturated, so we don't need to kick it`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (runStatus.state.segment <= segment) {
|
|
27
|
+
console.debug(`[${source}] main is scheduled to run soon enough, so we don't need to kick it`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
console.debug(`[${source}] main is scheduled to run later, so reschedule it to run now`);
|
|
31
|
+
const scheduled = await ctx.db.system.get(runStatus.state.scheduledId);
|
|
32
|
+
if (scheduled && scheduled.state.kind === "pending") {
|
|
33
|
+
await ctx.scheduler.cancel(runStatus.state.scheduledId);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.warn(`[${source}] main is marked as scheduled, but it's status is ${scheduled?.state.kind}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
console.debug(`[${source}] main was scheduled later, so reschedule it to run now`);
|
|
40
|
+
await ctx.db.patch(runStatus._id, { state: { kind: "running" } });
|
|
41
|
+
await ctx.scheduler.runAfter(0, internal.loop.main, {
|
|
42
|
+
generation: runStatus.state.generation,
|
|
43
|
+
segment,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export const forceKick = internalMutation({
|
|
47
|
+
args: {},
|
|
48
|
+
handler: async (ctx) => {
|
|
49
|
+
const runStatus = await getOrCreateRunStatus(ctx);
|
|
50
|
+
await ctx.db.delete(runStatus._id);
|
|
51
|
+
await kickMainLoop(ctx, "recovery");
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
async function getOrCreateRunStatus(ctx) {
|
|
55
|
+
let runStatus = await ctx.db.query("runStatus").unique();
|
|
56
|
+
if (!runStatus) {
|
|
57
|
+
const state = await ctx.db.query("internalState").unique();
|
|
58
|
+
const id = await ctx.db.insert("runStatus", {
|
|
59
|
+
state: {
|
|
60
|
+
kind: "idle",
|
|
61
|
+
generation: state?.generation ?? INITIAL_STATE.generation,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
runStatus = (await ctx.db.get(id));
|
|
65
|
+
if (!state) {
|
|
66
|
+
await ctx.db.insert("internalState", INITIAL_STATE);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return runStatus;
|
|
70
|
+
}
|
|
71
|
+
async function getOrUpdateGlobals(ctx, config) {
|
|
72
|
+
const globals = await ctx.db.query("globals").unique();
|
|
73
|
+
if (!globals) {
|
|
74
|
+
const id = await ctx.db.insert("globals", {
|
|
75
|
+
maxParallelism: config?.maxParallelism ?? DEFAULT_MAX_PARALLELISM,
|
|
76
|
+
logLevel: config?.logLevel ?? DEFAULT_LOG_LEVEL,
|
|
77
|
+
});
|
|
78
|
+
return (await ctx.db.get(id));
|
|
79
|
+
}
|
|
80
|
+
else if (config) {
|
|
81
|
+
let updated = false;
|
|
82
|
+
if (config.maxParallelism &&
|
|
83
|
+
config.maxParallelism !== globals.maxParallelism) {
|
|
84
|
+
globals.maxParallelism = config.maxParallelism;
|
|
85
|
+
updated = true;
|
|
86
|
+
}
|
|
87
|
+
if (config.logLevel && config.logLevel !== globals.logLevel) {
|
|
88
|
+
globals.logLevel = config.logLevel;
|
|
89
|
+
updated = true;
|
|
90
|
+
}
|
|
91
|
+
if (updated) {
|
|
92
|
+
await ctx.db.replace(globals._id, globals);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return globals;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=kick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kick.js","sourceRoot":"","sources":["../../../src/component/kick.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +1,41 @@
|
|
|
1
1
|
export declare const enqueue: import("convex/server").RegisteredMutation<"public", {
|
|
2
|
-
|
|
2
|
+
onComplete?: {
|
|
3
|
+
context?: any;
|
|
4
|
+
fnHandle: string;
|
|
5
|
+
} | undefined;
|
|
6
|
+
retryBehavior?: {
|
|
7
|
+
maxAttempts: number;
|
|
8
|
+
initialBackoffMs: number;
|
|
9
|
+
base: number;
|
|
10
|
+
} | undefined;
|
|
3
11
|
fnHandle: string;
|
|
12
|
+
fnType: "action" | "mutation";
|
|
4
13
|
fnName: string;
|
|
5
14
|
fnArgs: any;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
logLevel?: "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
|
|
15
|
+
runAt: number;
|
|
16
|
+
config: {
|
|
9
17
|
maxParallelism: number;
|
|
18
|
+
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
10
19
|
};
|
|
11
20
|
}, Promise<import("convex/values").GenericId<"work">>>;
|
|
12
21
|
export declare const cancel: import("convex/server").RegisteredMutation<"public", {
|
|
13
22
|
id: import("convex/values").GenericId<"work">;
|
|
23
|
+
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
14
24
|
}, Promise<void>>;
|
|
15
|
-
export declare const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export declare const runActionWrapper: import("convex/server").RegisteredAction<"internal", {
|
|
19
|
-
fnHandle: string;
|
|
20
|
-
fnArgs: any;
|
|
21
|
-
workId: import("convex/values").GenericId<"work">;
|
|
22
|
-
}, Promise<void>>;
|
|
23
|
-
export declare const saveResult: import("convex/server").RegisteredMutation<"internal", {
|
|
24
|
-
workId: import("convex/values").GenericId<"work">;
|
|
25
|
-
completionStatus: "success" | "error" | "canceled" | "timeout";
|
|
25
|
+
export declare const cancelAll: import("convex/server").RegisteredMutation<"public", {
|
|
26
|
+
before?: number | undefined;
|
|
27
|
+
logLevel: "DEBUG" | "INFO" | "WARN" | "ERROR";
|
|
26
28
|
}, Promise<void>>;
|
|
27
|
-
export declare const bumpGeneration: import("convex/server").RegisteredMutation<"internal", {}, Promise<void>>;
|
|
28
|
-
export declare const runMutationWrapper: import("convex/server").RegisteredMutation<"internal", {
|
|
29
|
-
fnHandle: string;
|
|
30
|
-
fnArgs: any;
|
|
31
|
-
workId: import("convex/values").GenericId<"work">;
|
|
32
|
-
}, Promise<void>>;
|
|
33
|
-
export declare const stopCleanup: import("convex/server").RegisteredMutation<"public", {}, Promise<void>>;
|
|
34
29
|
export declare const status: import("convex/server").RegisteredQuery<"public", {
|
|
35
30
|
id: import("convex/values").GenericId<"work">;
|
|
36
31
|
}, Promise<{
|
|
37
|
-
readonly
|
|
38
|
-
readonly
|
|
32
|
+
readonly state: "finished";
|
|
33
|
+
readonly attempt?: undefined;
|
|
39
34
|
} | {
|
|
40
|
-
readonly
|
|
41
|
-
readonly
|
|
35
|
+
readonly state: "pending";
|
|
36
|
+
readonly attempt: number;
|
|
42
37
|
} | {
|
|
43
|
-
readonly
|
|
44
|
-
readonly
|
|
38
|
+
readonly state: "running";
|
|
39
|
+
readonly attempt: number;
|
|
45
40
|
}>>;
|
|
46
|
-
export declare const MAX_CLEANUP_DOCS = 1000;
|
|
47
|
-
export declare const cleanup: import("convex/server").RegisteredMutation<"public", {
|
|
48
|
-
maxAgeMs: number;
|
|
49
|
-
}, Promise<void>>;
|
|
50
41
|
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -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":"AAkBA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;sDAkClB,CAAC;AAEH,eAAO,MAAM,MAAM;;;iBAajB,CAAC;AAGH,eAAO,MAAM,SAAS;;;iBA+BpB,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;GAkBjB,CAAC"}
|