@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.
Files changed (113) hide show
  1. package/README.md +144 -4
  2. package/dist/commonjs/client/index.d.ts +123 -35
  3. package/dist/commonjs/client/index.d.ts.map +1 -1
  4. package/dist/commonjs/client/index.js +122 -15
  5. package/dist/commonjs/client/index.js.map +1 -1
  6. package/dist/commonjs/client/utils.d.ts +16 -0
  7. package/dist/commonjs/client/utils.d.ts.map +1 -0
  8. package/dist/commonjs/client/utils.js +2 -0
  9. package/dist/commonjs/client/utils.js.map +1 -0
  10. package/dist/commonjs/component/convex.config.d.ts.map +1 -1
  11. package/dist/commonjs/component/convex.config.js +0 -2
  12. package/dist/commonjs/component/convex.config.js.map +1 -1
  13. package/dist/commonjs/component/kick.d.ts +9 -0
  14. package/dist/commonjs/component/kick.d.ts.map +1 -0
  15. package/dist/commonjs/component/kick.js +97 -0
  16. package/dist/commonjs/component/kick.js.map +1 -0
  17. package/dist/commonjs/component/lib.d.ts +23 -32
  18. package/dist/commonjs/component/lib.d.ts.map +1 -1
  19. package/dist/commonjs/component/lib.js +70 -564
  20. package/dist/commonjs/component/lib.js.map +1 -1
  21. package/dist/commonjs/component/logging.d.ts +6 -4
  22. package/dist/commonjs/component/logging.d.ts.map +1 -1
  23. package/dist/commonjs/component/logging.js +13 -2
  24. package/dist/commonjs/component/logging.js.map +1 -1
  25. package/dist/commonjs/component/loop.d.ts +26 -0
  26. package/dist/commonjs/component/loop.d.ts.map +1 -0
  27. package/dist/commonjs/component/loop.js +453 -0
  28. package/dist/commonjs/component/loop.js.map +1 -0
  29. package/dist/commonjs/component/recovery.d.ts +8 -0
  30. package/dist/commonjs/component/recovery.d.ts.map +1 -0
  31. package/dist/commonjs/component/recovery.js +74 -0
  32. package/dist/commonjs/component/recovery.js.map +1 -0
  33. package/dist/commonjs/component/schema.d.ts +163 -93
  34. package/dist/commonjs/component/schema.d.ts.map +1 -1
  35. package/dist/commonjs/component/schema.js +54 -65
  36. package/dist/commonjs/component/schema.js.map +1 -1
  37. package/dist/commonjs/component/shared.d.ts +130 -0
  38. package/dist/commonjs/component/shared.d.ts.map +1 -0
  39. package/dist/commonjs/component/shared.js +65 -0
  40. package/dist/commonjs/component/shared.js.map +1 -0
  41. package/dist/commonjs/component/stats.d.ts +3 -2
  42. package/dist/commonjs/component/stats.d.ts.map +1 -1
  43. package/dist/commonjs/component/stats.js +17 -3
  44. package/dist/commonjs/component/stats.js.map +1 -1
  45. package/dist/commonjs/component/worker.d.ts +25 -0
  46. package/dist/commonjs/component/worker.d.ts.map +1 -0
  47. package/dist/commonjs/component/worker.js +86 -0
  48. package/dist/commonjs/component/worker.js.map +1 -0
  49. package/dist/esm/client/index.d.ts +123 -35
  50. package/dist/esm/client/index.d.ts.map +1 -1
  51. package/dist/esm/client/index.js +122 -15
  52. package/dist/esm/client/index.js.map +1 -1
  53. package/dist/esm/client/utils.d.ts +16 -0
  54. package/dist/esm/client/utils.d.ts.map +1 -0
  55. package/dist/esm/client/utils.js +2 -0
  56. package/dist/esm/client/utils.js.map +1 -0
  57. package/dist/esm/component/convex.config.d.ts.map +1 -1
  58. package/dist/esm/component/convex.config.js +0 -2
  59. package/dist/esm/component/convex.config.js.map +1 -1
  60. package/dist/esm/component/kick.d.ts +9 -0
  61. package/dist/esm/component/kick.d.ts.map +1 -0
  62. package/dist/esm/component/kick.js +97 -0
  63. package/dist/esm/component/kick.js.map +1 -0
  64. package/dist/esm/component/lib.d.ts +23 -32
  65. package/dist/esm/component/lib.d.ts.map +1 -1
  66. package/dist/esm/component/lib.js +70 -564
  67. package/dist/esm/component/lib.js.map +1 -1
  68. package/dist/esm/component/logging.d.ts +6 -4
  69. package/dist/esm/component/logging.d.ts.map +1 -1
  70. package/dist/esm/component/logging.js +13 -2
  71. package/dist/esm/component/logging.js.map +1 -1
  72. package/dist/esm/component/loop.d.ts +26 -0
  73. package/dist/esm/component/loop.d.ts.map +1 -0
  74. package/dist/esm/component/loop.js +453 -0
  75. package/dist/esm/component/loop.js.map +1 -0
  76. package/dist/esm/component/recovery.d.ts +8 -0
  77. package/dist/esm/component/recovery.d.ts.map +1 -0
  78. package/dist/esm/component/recovery.js +74 -0
  79. package/dist/esm/component/recovery.js.map +1 -0
  80. package/dist/esm/component/schema.d.ts +163 -93
  81. package/dist/esm/component/schema.d.ts.map +1 -1
  82. package/dist/esm/component/schema.js +54 -65
  83. package/dist/esm/component/schema.js.map +1 -1
  84. package/dist/esm/component/shared.d.ts +130 -0
  85. package/dist/esm/component/shared.d.ts.map +1 -0
  86. package/dist/esm/component/shared.js +65 -0
  87. package/dist/esm/component/shared.js.map +1 -0
  88. package/dist/esm/component/stats.d.ts +3 -2
  89. package/dist/esm/component/stats.d.ts.map +1 -1
  90. package/dist/esm/component/stats.js +17 -3
  91. package/dist/esm/component/stats.js.map +1 -1
  92. package/dist/esm/component/worker.d.ts +25 -0
  93. package/dist/esm/component/worker.d.ts.map +1 -0
  94. package/dist/esm/component/worker.js +86 -0
  95. package/dist/esm/component/worker.js.map +1 -0
  96. package/package.json +6 -5
  97. package/src/client/index.ts +231 -70
  98. package/src/client/utils.ts +45 -0
  99. package/src/component/README.md +73 -0
  100. package/src/component/_generated/api.d.ts +36 -66
  101. package/src/component/convex.config.ts +0 -3
  102. package/src/component/kick.test.ts +286 -0
  103. package/src/component/kick.ts +118 -0
  104. package/src/component/lib.test.ts +203 -0
  105. package/src/component/lib.ts +80 -671
  106. package/src/component/logging.ts +24 -10
  107. package/src/component/loop.ts +579 -0
  108. package/src/component/recovery.ts +79 -0
  109. package/src/component/schema.ts +59 -77
  110. package/src/component/setup.test.ts +5 -0
  111. package/src/component/shared.ts +127 -0
  112. package/src/component/stats.ts +20 -6
  113. package/src/component/worker.ts +94 -0
@@ -1,40 +1,147 @@
1
1
  import { createFunctionHandle, getFunctionName, } from "convex/server";
2
- import { completionStatus, } from "../component/schema.js";
3
- export { completionStatus };
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
- constructor(component, options) {
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
- async enqueueAction(ctx, fn, fnArgs) {
12
- const fnHandle = await createFunctionHandle(fn);
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
- fnHandle,
15
- fnName: getFunctionName(fn),
53
+ ...(await defaultEnqueueArgs(fn, this.options)),
16
54
  fnArgs,
17
55
  fnType: "action",
18
- options: this.options,
56
+ runAt: getRunAt(options),
57
+ onComplete,
58
+ retryBehavior,
19
59
  });
20
60
  return id;
21
61
  }
22
- async enqueueMutation(ctx, fn, fnArgs) {
23
- const fnHandle = await createFunctionHandle(fn);
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
- fnHandle,
26
- fnName: getFunctionName(fn),
77
+ ...(await defaultEnqueueArgs(fn, this.options)),
27
78
  fnArgs,
28
79
  fnType: "mutation",
29
- options: this.options,
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, { id });
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 await ctx.runQuery(this.component.lib.status, { id });
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,EAQpB,eAAe,GAChB,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAyB,CAAC;AAInD,MAAM,OAAO,QAAQ;IAET;IACA;IAFV,YACU,SAA6B,EAC7B,OAiBP;QAlBO,cAAS,GAAT,SAAS,CAAoB;QAC7B,YAAO,GAAP,OAAO,CAiBd;IACA,CAAC;IACJ,KAAK,CAAC,aAAa,CACjB,GAAmB,EACnB,EAAqE,EACrE,MAAY;QAEZ,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;YAC3D,QAAQ;YACR,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3B,MAAM;YACN,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,OAAO,EAAY,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,eAAe,CACnB,GAAmB,EACnB,EAAuE,EACvE,MAAY;QAEZ,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;YAC3D,QAAQ;YACR,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3B,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QACH,OAAO,EAAY,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,GAAmB,EAAE,EAAU;QAC1C,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,MAAM,CACV,GAAgB,EAChB,EAAU;QAMV,OAAO,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.js.map
@@ -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":"AAGA,QAAA,MAAM,SAAS,kDAA8B,CAAC;AAI9C,eAAe,SAAS,CAAC"}
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,6 +1,4 @@
1
1
  import { defineComponent } from "convex/server";
2
- import crons from "@convex-dev/crons/convex.config";
3
2
  const component = defineComponent("workpool");
4
- component.use(crons);
5
3
  export default component;
6
4
  //# sourceMappingURL=convex.config.js.map
@@ -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;AAChD,OAAO,KAAK,MAAM,iCAAiC,CAAC;AAEpD,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAE9C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAErB,eAAe,SAAS,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
- fnType: "action" | "mutation";
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
- options: {
7
- statusTtl?: number | undefined;
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 mainLoop: import("convex/server").RegisteredMutation<"internal", {
16
- generation: number;
17
- }, Promise<void>>;
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 kind: "completed";
38
- readonly completionStatus: "success" | "error" | "canceled" | "timeout";
32
+ readonly state: "finished";
33
+ readonly attempt?: undefined;
39
34
  } | {
40
- readonly kind: "pending";
41
- readonly completionStatus?: undefined;
35
+ readonly state: "pending";
36
+ readonly attempt: number;
42
37
  } | {
43
- readonly kind: "inProgress";
44
- readonly completionStatus?: undefined;
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":"AAuBA,eAAO,MAAM,OAAO;;;;;;;;;;sDAiClB,CAAC;AAEH,eAAO,MAAM,MAAM;;iBAOjB,CAAC;AAiBH,eAAO,MAAM,QAAQ;;iBA8OnB,CAAC;AA+EH,eAAO,MAAM,gBAAgB;;;;iBAyB3B,CAAC;AAEH,eAAO,MAAM,UAAU;;;iBAiBrB,CAAC;AAEH,eAAO,MAAM,cAAc,2EAczB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;iBAyB7B,CAAC;AAUH,eAAO,MAAM,WAAW,yEAQtB,CAAC;AAiEH,eAAO,MAAM,MAAM;;;;;;;;;;;GAuCjB,CAAC;AAEH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,eAAO,MAAM,OAAO;;iBA2BlB,CAAC"}
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"}