@sidequest/engine 1.15.1 → 1.16.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 (54) hide show
  1. package/dist/engine.cjs +22 -1
  2. package/dist/engine.cjs.map +1 -1
  3. package/dist/engine.d.ts +44 -0
  4. package/dist/engine.js +22 -1
  5. package/dist/engine.js.map +1 -1
  6. package/dist/execution/dispatcher.cjs +5 -2
  7. package/dist/execution/dispatcher.cjs.map +1 -1
  8. package/dist/execution/dispatcher.js +5 -2
  9. package/dist/execution/dispatcher.js.map +1 -1
  10. package/dist/execution/executor-manager.cjs +62 -26
  11. package/dist/execution/executor-manager.cjs.map +1 -1
  12. package/dist/execution/executor-manager.d.ts +13 -1
  13. package/dist/execution/executor-manager.js +63 -27
  14. package/dist/execution/executor-manager.js.map +1 -1
  15. package/dist/index.cjs +4 -0
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/job/job-builder.cjs +1 -0
  21. package/dist/job/job-builder.cjs.map +1 -1
  22. package/dist/job/job-builder.js +1 -0
  23. package/dist/job/job-builder.js.map +1 -1
  24. package/dist/routines/release-stale-jobs.cjs +1 -0
  25. package/dist/routines/release-stale-jobs.cjs.map +1 -1
  26. package/dist/routines/release-stale-jobs.js +1 -0
  27. package/dist/routines/release-stale-jobs.js.map +1 -1
  28. package/dist/shared-runner/inline-runner.cjs +44 -0
  29. package/dist/shared-runner/inline-runner.cjs.map +1 -0
  30. package/dist/shared-runner/inline-runner.d.ts +35 -0
  31. package/dist/shared-runner/inline-runner.js +42 -0
  32. package/dist/shared-runner/inline-runner.js.map +1 -0
  33. package/dist/shared-runner/job-runner.d.ts +24 -0
  34. package/dist/shared-runner/runner-pool.cjs +34 -2
  35. package/dist/shared-runner/runner-pool.cjs.map +1 -1
  36. package/dist/shared-runner/runner-pool.d.ts +10 -4
  37. package/dist/shared-runner/runner-pool.js +35 -3
  38. package/dist/shared-runner/runner-pool.js.map +1 -1
  39. package/dist/shared-runner/runner.cjs +45 -4
  40. package/dist/shared-runner/runner.cjs.map +1 -1
  41. package/dist/shared-runner/runner.d.ts +12 -2
  42. package/dist/shared-runner/runner.js +46 -5
  43. package/dist/shared-runner/runner.js.map +1 -1
  44. package/dist/workers/main.cjs +6 -76
  45. package/dist/workers/main.cjs.map +1 -1
  46. package/dist/workers/main.d.ts +1 -22
  47. package/dist/workers/main.js +6 -76
  48. package/dist/workers/main.js.map +1 -1
  49. package/dist/workers/worker-runtime.cjs +88 -0
  50. package/dist/workers/worker-runtime.cjs.map +1 -0
  51. package/dist/workers/worker-runtime.d.ts +44 -0
  52. package/dist/workers/worker-runtime.js +86 -0
  53. package/dist/workers/worker-runtime.js.map +1 -0
  54. package/package.json +4 -4
package/dist/engine.cjs CHANGED
@@ -17,7 +17,9 @@ require('node:fs');
17
17
  require('node:url');
18
18
  var shutdown = require('./utils/shutdown.cjs');
19
19
  var manualLoader = require('./shared-runner/manual-loader.cjs');
20
+ require('node:worker_threads');
20
21
  require('piscina');
22
+ var workerRuntime = require('./workers/worker-runtime.cjs');
21
23
 
22
24
  /**
23
25
  * The main engine for managing job queues and workers in Sidequest.
@@ -28,6 +30,11 @@ class Engine {
28
30
  * This is created when the engine is started and handles job processing.
29
31
  */
30
32
  mainWorker;
33
+ /**
34
+ * Worker runtime when the engine runs in-process (`fork: false`).
35
+ * Mutually exclusive with {@link mainWorker}.
36
+ */
37
+ inProcessRuntime;
31
38
  /**
32
39
  * Flag indicating whether the engine is currently shutting down.
33
40
  * This is used to prevent multiple shutdown attempts and ensure graceful shutdown behavior.
@@ -59,6 +66,9 @@ class Engine {
59
66
  json: config?.logger?.json ?? false,
60
67
  },
61
68
  gracefulShutdown: config?.gracefulShutdown ?? true,
69
+ fork: config?.fork ?? true,
70
+ runner: config?.runner ?? "thread",
71
+ abortGracePeriodMs: config?.abortGracePeriodMs ?? 0,
62
72
  minThreads: config?.minThreads ?? os.cpus().length,
63
73
  maxThreads: config?.maxThreads ?? os.cpus().length * 2,
64
74
  idleWorkerTimeout: config?.idleWorkerTimeout ?? 10_000,
@@ -138,7 +148,7 @@ class Engine {
138
148
  * @param config Optional configuration object.
139
149
  */
140
150
  async start(config) {
141
- if (this.mainWorker) {
151
+ if (this.mainWorker || this.inProcessRuntime) {
142
152
  core.logger("Engine").warn("Sidequest engine already started");
143
153
  return;
144
154
  }
@@ -149,6 +159,13 @@ class Engine {
149
159
  await grantQueueConfig.grantQueueConfig(dependencyRegistry.dependencyRegistry.get(dependencyRegistry.Dependency.Backend), queue, nonNullConfig.queueDefaults, true);
150
160
  }
151
161
  }
162
+ if (!nonNullConfig.fork) {
163
+ core.logger("Engine").info("Starting Sidequest in-process (fork disabled)");
164
+ this.inProcessRuntime = new workerRuntime.WorkerRuntime(dependencyRegistry.dependencyRegistry.get(dependencyRegistry.Dependency.Backend), nonNullConfig);
165
+ await this.inProcessRuntime.start();
166
+ shutdown.gracefulShutdown(this.close.bind(this), "Engine", nonNullConfig.gracefulShutdown);
167
+ return;
168
+ }
152
169
  return new Promise((resolve, reject) => {
153
170
  const timeout = setTimeout(() => {
154
171
  reject(new Error("Timeout on starting sidequest fork!"));
@@ -208,6 +225,9 @@ class Engine {
208
225
  this.mainWorker.send({ type: "shutdown" });
209
226
  await promise;
210
227
  }
228
+ if (this.inProcessRuntime) {
229
+ await this.inProcessRuntime.shutdown();
230
+ }
211
231
  try {
212
232
  await dependencyRegistry.dependencyRegistry.get(dependencyRegistry.Dependency.Backend)?.close();
213
233
  }
@@ -215,6 +235,7 @@ class Engine {
215
235
  core.logger("Engine").error("Error closing backend:", error);
216
236
  }
217
237
  this.mainWorker = undefined;
238
+ this.inProcessRuntime = undefined;
218
239
  // Reset the shutting down flag after closing
219
240
  // This allows the engine to be reconfigured or restarted later
220
241
  shutdown.clearGracefulShutdown();
@@ -1 +1 @@
1
- {"version":3,"file":"engine.cjs","sources":["../src/engine.ts"],"sourcesContent":[null],"names":["logger","cpus","MISC_FALLBACK","JOB_BUILDER_FALLBACK","QUEUE_FALLBACK","dependencyRegistry","Dependency","inspect","configureLogger","backend","LazyBackend","resolveScriptPath","existsSync","fileURLToPath","findSidequestJobsScriptInParentDirs","grantQueueConfig","fork","DEFAULT_WORKER_PATH","WORKER_PROCESS_FLAG","gracefulShutdown","ScheduledJobRegistry","clearGracefulShutdown","JobBuilder"],"mappings":"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"}
1
+ {"version":3,"file":"engine.cjs","sources":["../src/engine.ts"],"sourcesContent":[null],"names":["logger","cpus","MISC_FALLBACK","JOB_BUILDER_FALLBACK","QUEUE_FALLBACK","dependencyRegistry","Dependency","inspect","configureLogger","backend","LazyBackend","resolveScriptPath","existsSync","fileURLToPath","findSidequestJobsScriptInParentDirs","grantQueueConfig","WorkerRuntime","gracefulShutdown","fork","DEFAULT_WORKER_PATH","WORKER_PROCESS_FLAG","ScheduledJobRegistry","clearGracefulShutdown","JobBuilder"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2JA;;AAEG;MACU,MAAM,CAAA;AACjB;;;AAGG;AACK,IAAA,UAAU;AAElB;;;AAGG;AACK,IAAA,gBAAgB;AAExB;;;AAGG;IACK,YAAY,GAAG,KAAK;AAE5B;;;;AAIG;IACH,MAAM,SAAS,CAAC,MAAqB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpBA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,EAAG;QAC1B;AACA,QAAA,MAAM,aAAa,GAA4B;AAC7C,YAAA,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE;AAC5B,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,2BAA2B;AAC9D,gBAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,oBAAoB;AACxD,aAAA;AACD,YAAA,8BAA8B,EAAE,MAAM,EAAE,8BAA8B,IAAI,EAAE;AAC5E,YAAA,4BAA4B,EAAE,MAAM,EAAE,4BAA4B,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;AAC9F,YAAA,2BAA2B,EAAE,MAAM,EAAE,2BAA2B,IAAI,EAAE;AACtE,YAAA,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,EAAE;AAClD,YAAA,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,KAAK;AAC7C,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM;AACtC,gBAAA,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,KAAK;AACpC,aAAA;AACD,YAAA,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,IAAI,IAAI;AAClD,YAAA,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;AAC1B,YAAA,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ;AAClC,YAAA,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,IAAI,CAAC;YACnD,UAAU,EAAE,MAAM,EAAE,UAAU,IAAIC,OAAI,EAAE,CAAC,MAAM;YAC/C,UAAU,EAAE,MAAM,EAAE,UAAU,IAAIA,OAAI,EAAE,CAAC,MAAM,GAAG,CAAC;AACnD,YAAA,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,MAAM;YACtD,0BAA0B,EAAE,MAAM,EAAE,0BAA0B,IAAIC,qBAAa,CAAC,UAAU;YAC1F,4BAA4B,EAAE,MAAM,EAAE,4BAA4B,IAAIA,qBAAa,CAAC,YAAY;AAChG,YAAA,WAAW,EAAE;gBACX,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,IAAIC,8BAAoB,CAAC,KAAM;gBAChE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,IAAIA,8BAAoB,CAAC,WAAY;;;AAGlF,gBAAA,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW;gBAC7C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,IAAIA,8BAAoB,CAAC,OAAQ;gBACtE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,IAAIA,8BAAoB,CAAC,UAAW;gBAC/E,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,IAAIA,8BAAoB,CAAC,eAAgB;gBAC9F,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,IAAIA,8BAAoB,CAAC,UAAW;gBAC/E,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,IAAIA,8BAAoB,CAAC,eAAgB;AAC/F,aAAA;AACD,YAAA,aAAa,EAAE;gBACb,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,IAAIC,sBAAc,CAAC,WAAW;gBAC7E,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,IAAIA,sBAAc,CAAC,QAAQ;gBACpE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,IAAIA,sBAAc,CAAC,KAAK;AAC5D,aAAA;AACD,YAAA,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,IAAI,KAAK;YACzD,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;AAChD,YAAA,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,IAAI,GAAG;SACtD;QACDC,qCAAkB,CAAC,QAAQ,CAACC,6BAAU,CAAC,MAAM,EAAE,aAAa,CAAC;QAE7D,IAAI,CAAC,cAAc,EAAE;AAErB,QAAAN,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,8BAAA,EAAiCO,YAAO,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;AAEjF,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;AACxB,YAAAC,oBAAe,CAAC,aAAa,CAAC,MAAM,CAAC;QACvC;AAEA,QAAA,MAAMC,SAAO,GAAGJ,qCAAkB,CAAC,QAAQ,CAACC,6BAAU,CAAC,OAAO,EAAE,IAAII,mBAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AAChC,YAAA,MAAMD,SAAO,CAAC,OAAO,EAAE;QACzB;AAEA,QAAA,OAAO,aAAa;IACtB;AAEA;;;;;;;;;;;;;;;AAeG;IACH,cAAc,GAAA;AACZ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,IAAI,MAAO,CAAC,iBAAiB,KAAK,SAAS,IAAI,MAAO,CAAC,iBAAiB,GAAG,CAAC,EAAE;AAC5E,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sDAAA,CAAwD,CAAC;QAC3E;AAEA,QAAA,IAAI,MAAO,CAAC,mBAAmB,EAAE;AAC/B,YAAA,IAAI,MAAO,CAAC,YAAY,EAAE;gBACxB,MAAM,SAAS,GAAGE,8BAAiB,CAAC,MAAO,CAAC,YAAY,CAAC;gBACzD,IAAI,CAACC,aAAU,CAACC,iBAAa,CAAC,SAAS,CAAC,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,SAAS,CAAA,CAAE,CAAC;gBACzF;AACA,gBAAAb,WAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAA,2BAAA,EAA8B,MAAO,CAAC,YAAY,CAAA,CAAE,CAAC;AAC3E,gBAAA,MAAO,CAAC,YAAY,GAAG,SAAS;YAClC;iBAAO;;AAEL,gBAAAc,gDAAmC,EAAE;YACvC;QACF;IACF;AAEA;;;AAGG;IACH,MAAM,KAAK,CAAC,MAAoB,EAAA;QAC9B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC5Cd,WAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC;YACzD;QACF;QAEA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAElD,QAAAA,WAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAA,iCAAA,EAAoC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;AAEzF,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;AACxB,YAAA,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE;AACxC,gBAAA,MAAMe,iCAAgB,CAACV,qCAAkB,CAAC,GAAG,CAACC,6BAAU,CAAC,OAAO,CAAE,EAAE,KAAK,EAAE,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC;YAC/G;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvBN,WAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,+CAA+C,CAAC;AACtE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAIgB,2BAAa,CAACX,qCAAkB,CAAC,GAAG,CAACC,6BAAU,CAAC,OAAO,CAAE,EAAE,aAAa,CAAC;AACrG,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACnC,YAAAW,yBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC;YACjF;QACF;QAEA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;AAC9B,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC1D,CAAC,EAAE,IAAI,CAAC;AAER,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,MAAM,SAAS,GAAG,MAAK;oBACrBjB,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;oBACjD,IAAI,CAAC,UAAU,GAAGkB,kBAAI,CAACC,+BAAmB,EAAE,CAACC,+BAAmB,CAAC,CAAC;AAClE,oBAAApB,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,UAAU,CAAC,GAAG,CAAA,CAAE,CAAC;oBAC5D,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,KAAI;AACpC,wBAAA,IAAI,GAAG,KAAK,OAAO,EAAE;4BACnBA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;AAC9C,4BAAA,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;4BACxE,YAAY,CAAC,OAAO,CAAC;AACrB,4BAAA,OAAO,EAAE;wBACX;AACF,oBAAA,CAAC,CAAC;oBAEF,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAK;AAC9B,wBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;4BACtBA,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAChE,4BAAA,SAAS,EAAE;wBACb;AACF,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC;AAED,gBAAA,SAAS,EAAE;AACX,gBAAAiB,yBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC;YACnF;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;IACH,SAAS,GAAA;QACP,OAAOZ,qCAAkB,CAAC,GAAG,CAACC,6BAAU,CAAC,MAAM,CAAC;IAClD;AAEA;;;AAGG;IACH,UAAU,GAAA;QACR,OAAOD,qCAAkB,CAAC,GAAG,CAACC,6BAAU,CAAC,OAAO,CAAC;IACnD;AAEA;;AAEG;AACH,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YACxBN,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;;AAGrD,YAAA,MAAMqB,iCAAoB,CAAC,OAAO,EAAE;AAEpC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;oBACtC,IAAI,CAAC,UAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AACtC,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC1C,gBAAA,MAAM,OAAO;YACf;AACA,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACxC;AACA,YAAA,IAAI;gBACF,MAAMhB,qCAAkB,CAAC,GAAG,CAACC,6BAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;YAC3D;YAAE,OAAO,KAAK,EAAE;gBACdN,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;YACzD;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;;;AAGjC,YAAAsB,8BAAqB,EAAE;YACvBtB,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;YAEzBK,qCAAkB,CAAC,KAAK,EAAE;QAC5B;IACF;AAEA;;;;AAIG;AACH,IAAA,KAAK,CAAyB,QAAW,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC;QAC5F;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AACA,QAAAL,WAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA,wBAAA,EAA2B,QAAQ,CAAC,IAAI,CAAA,CAAE,CAAC;AAClE,QAAA,OAAO,IAAIuB,qBAAU,CACnB,OAAO,EACP,QAAQ,EACR;YACE,GAAG,MAAM,CAAC,WAAW;;;YAGrB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,IAAIpB,8BAAoB,CAAC,WAAY;AACjF,SAAA,EACD,MAAM,CAAC,mBAAmB,CAC3B;IACH;AACD;;;;"}
package/dist/engine.d.ts CHANGED
@@ -30,6 +30,45 @@ interface EngineConfig {
30
30
  cleanupFinishedJobsOlderThan?: number;
31
31
  /** Whether to enable graceful shutdown handling. Defaults to `true` */
32
32
  gracefulShutdown?: boolean;
33
+ /**
34
+ * Whether to run the engine in a forked child process.
35
+ *
36
+ * - `true` (default): the engine runs in a `child_process.fork`, isolating job-code crashes from
37
+ * the host application.
38
+ * - `false`: the engine runs in the host process. A crash in job code can take down the host, but
39
+ * jobs can reach live in-process state. Useful for single-process setups (serverless, tests)
40
+ * and required by framework integrations that rely on in-process execution.
41
+ *
42
+ * Defaults to `true`.
43
+ */
44
+ fork?: boolean;
45
+ /**
46
+ * How jobs are executed.
47
+ *
48
+ * - `"thread"` (default): jobs run in a pool of worker threads (piscina). Gives CPU isolation
49
+ * and lets timeouts/cancellation forcibly abort a running job.
50
+ * - `"inline"`: jobs run in the current process/thread, with no worker pool. A running job cannot
51
+ * be forcibly terminated, so timeouts and cancellation are delivered cooperatively via
52
+ * `this.abortSignal` inside the job (the job must honor it to stop early); a job that ignores it
53
+ * runs to completion, and a CPU-bound job will block the event loop. Useful for single-process
54
+ * setups (serverless, tests, SQLite) and required when jobs need access to live in-process state.
55
+ *
56
+ * Defaults to `"thread"`.
57
+ */
58
+ runner?: "thread" | "inline";
59
+ /**
60
+ * Grace period, in milliseconds, between cooperatively aborting a running job (timeout or
61
+ * cancellation) and forcibly terminating its worker thread.
62
+ *
63
+ * Only applies to `runner: "thread"`. When greater than `0`, the abort is first delivered to the
64
+ * job via `this.abortSignal` so it can stop and clean up; if it has not finished after this many
65
+ * milliseconds, the worker thread is terminated. When `0` (default), the worker is terminated
66
+ * immediately with no cooperative window, preserving the previous behavior. Has no effect in
67
+ * `runner: "inline"` (there is no thread to terminate).
68
+ *
69
+ * Defaults to `0`.
70
+ */
71
+ abortGracePeriodMs?: number;
33
72
  /** Minimum number of worker threads to use. Defaults to number of CPUs */
34
73
  minThreads?: number;
35
74
  /** Maximum number of worker threads to use. Defaults to `minThreads * 2` */
@@ -110,6 +149,11 @@ declare class Engine {
110
149
  * This is created when the engine is started and handles job processing.
111
150
  */
112
151
  private mainWorker?;
152
+ /**
153
+ * Worker runtime when the engine runs in-process (`fork: false`).
154
+ * Mutually exclusive with {@link mainWorker}.
155
+ */
156
+ private inProcessRuntime?;
113
157
  /**
114
158
  * Flag indicating whether the engine is currently shutting down.
115
159
  * This is used to prevent multiple shutdown attempts and ensure graceful shutdown behavior.
package/dist/engine.js CHANGED
@@ -15,7 +15,9 @@ import 'node:fs';
15
15
  import 'node:url';
16
16
  import { gracefulShutdown, clearGracefulShutdown } from './utils/shutdown.js';
17
17
  import { resolveScriptPath, findSidequestJobsScriptInParentDirs } from './shared-runner/manual-loader.js';
18
+ import 'node:worker_threads';
18
19
  import 'piscina';
20
+ import { WorkerRuntime } from './workers/worker-runtime.js';
19
21
 
20
22
  /**
21
23
  * The main engine for managing job queues and workers in Sidequest.
@@ -26,6 +28,11 @@ class Engine {
26
28
  * This is created when the engine is started and handles job processing.
27
29
  */
28
30
  mainWorker;
31
+ /**
32
+ * Worker runtime when the engine runs in-process (`fork: false`).
33
+ * Mutually exclusive with {@link mainWorker}.
34
+ */
35
+ inProcessRuntime;
29
36
  /**
30
37
  * Flag indicating whether the engine is currently shutting down.
31
38
  * This is used to prevent multiple shutdown attempts and ensure graceful shutdown behavior.
@@ -57,6 +64,9 @@ class Engine {
57
64
  json: config?.logger?.json ?? false,
58
65
  },
59
66
  gracefulShutdown: config?.gracefulShutdown ?? true,
67
+ fork: config?.fork ?? true,
68
+ runner: config?.runner ?? "thread",
69
+ abortGracePeriodMs: config?.abortGracePeriodMs ?? 0,
60
70
  minThreads: config?.minThreads ?? cpus().length,
61
71
  maxThreads: config?.maxThreads ?? cpus().length * 2,
62
72
  idleWorkerTimeout: config?.idleWorkerTimeout ?? 10_000,
@@ -136,7 +146,7 @@ class Engine {
136
146
  * @param config Optional configuration object.
137
147
  */
138
148
  async start(config) {
139
- if (this.mainWorker) {
149
+ if (this.mainWorker || this.inProcessRuntime) {
140
150
  logger("Engine").warn("Sidequest engine already started");
141
151
  return;
142
152
  }
@@ -147,6 +157,13 @@ class Engine {
147
157
  await grantQueueConfig(dependencyRegistry.get(Dependency.Backend), queue, nonNullConfig.queueDefaults, true);
148
158
  }
149
159
  }
160
+ if (!nonNullConfig.fork) {
161
+ logger("Engine").info("Starting Sidequest in-process (fork disabled)");
162
+ this.inProcessRuntime = new WorkerRuntime(dependencyRegistry.get(Dependency.Backend), nonNullConfig);
163
+ await this.inProcessRuntime.start();
164
+ gracefulShutdown(this.close.bind(this), "Engine", nonNullConfig.gracefulShutdown);
165
+ return;
166
+ }
150
167
  return new Promise((resolve, reject) => {
151
168
  const timeout = setTimeout(() => {
152
169
  reject(new Error("Timeout on starting sidequest fork!"));
@@ -206,6 +223,9 @@ class Engine {
206
223
  this.mainWorker.send({ type: "shutdown" });
207
224
  await promise;
208
225
  }
226
+ if (this.inProcessRuntime) {
227
+ await this.inProcessRuntime.shutdown();
228
+ }
209
229
  try {
210
230
  await dependencyRegistry.get(Dependency.Backend)?.close();
211
231
  }
@@ -213,6 +233,7 @@ class Engine {
213
233
  logger("Engine").error("Error closing backend:", error);
214
234
  }
215
235
  this.mainWorker = undefined;
236
+ this.inProcessRuntime = undefined;
216
237
  // Reset the shutting down flag after closing
217
238
  // This allows the engine to be reconfigured or restarted later
218
239
  clearGracefulShutdown();
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sources":["../src/engine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sources":["../src/engine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -55,8 +55,11 @@ class Dispatcher {
55
55
  // because the execution is not awaited. This way we ensure that available slots
56
56
  // are correctly calculated.
57
57
  this.executorManager.queueJob(queue, job);
58
- // does not await for job execution.
59
- void this.executorManager.execute(queue, job);
58
+ // does not await for job execution. Guard against any unexpected rejection so a single
59
+ // job can never crash the engine with an unhandled promise rejection.
60
+ void this.executorManager.execute(queue, job).catch((error) => {
61
+ core.logger("Dispatcher").error(`Unexpected error executing job ${job.id}:`, error);
62
+ });
60
63
  }
61
64
  }
62
65
  if (shouldSleep) {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.cjs","sources":["../../src/execution/dispatcher.ts"],"sourcesContent":[null],"names":["logger"],"mappings":";;;;AAKA;;AAEG;MACU,UAAU,CAAA;AAWX,IAAA,OAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;AACA,IAAA,UAAA;;IAZF,SAAS,GAAG,KAAK;AAEzB;;;;;AAKG;AACH,IAAA,WAAA,CACU,OAAgB,EAChB,YAA0B,EAC1B,eAAgC,EAChC,UAAkB,EAAA;QAHlB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,UAAU,GAAV,UAAU;IACjB;AAEH;;;AAGG;AACK,IAAA,MAAM,MAAM,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE;YAExE,IAAI,WAAW,GAAG,IAAI;AAEtB,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACxE,gBAAA,IAAI,cAAc,IAAI,CAAC,EAAE;AACvB,oBAAAA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,IAAI,CAAA,eAAA,CAAiB,CAAC;oBAChE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACjC;gBACF;gBAEA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;AAC/D,gBAAA,IAAI,WAAW,IAAI,CAAC,EAAE;oBACpBA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,iCAAA,CAAmC,CAAC;oBAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACjC;gBACF;gBAEA,MAAM,IAAI,GAAc,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAE7G,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEnB,WAAW,GAAG,KAAK;gBACrB;AAEA,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;;;oBAItB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;;oBAEzC,KAAK,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;gBAC/C;YACF;YAEA,IAAI,WAAW,EAAE;gBACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC;QACF;IACF;AAEA;;;;;AAKG;AACK,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD;AAEA;;AAEG;IACH,KAAK,GAAA;QACHA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,KAAK,IAAI,CAAC,MAAM,EAAE;IACpB;AAEA;;;AAGG;AACH,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;IACtC;AACD;;;;"}
1
+ {"version":3,"file":"dispatcher.cjs","sources":["../../src/execution/dispatcher.ts"],"sourcesContent":[null],"names":["logger"],"mappings":";;;;AAKA;;AAEG;MACU,UAAU,CAAA;AAWX,IAAA,OAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;AACA,IAAA,UAAA;;IAZF,SAAS,GAAG,KAAK;AAEzB;;;;;AAKG;AACH,IAAA,WAAA,CACU,OAAgB,EAChB,YAA0B,EAC1B,eAAgC,EAChC,UAAkB,EAAA;QAHlB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,UAAU,GAAV,UAAU;IACjB;AAEH;;;AAGG;AACK,IAAA,MAAM,MAAM,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE;YAExE,IAAI,WAAW,GAAG,IAAI;AAEtB,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACxE,gBAAA,IAAI,cAAc,IAAI,CAAC,EAAE;AACvB,oBAAAA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,IAAI,CAAA,eAAA,CAAiB,CAAC;oBAChE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACjC;gBACF;gBAEA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;AAC/D,gBAAA,IAAI,WAAW,IAAI,CAAC,EAAE;oBACpBA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,iCAAA,CAAmC,CAAC;oBAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACjC;gBACF;gBAEA,MAAM,IAAI,GAAc,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAE7G,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEnB,WAAW,GAAG,KAAK;gBACrB;AAEA,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;;;oBAItB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;;;AAGzC,oBAAA,KAAK,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AACrE,wBAAAA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,+BAAA,EAAkC,GAAG,CAAC,EAAE,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;AAChF,oBAAA,CAAC,CAAC;gBACJ;YACF;YAEA,IAAI,WAAW,EAAE;gBACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC;QACF;IACF;AAEA;;;;;AAKG;AACK,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD;AAEA;;AAEG;IACH,KAAK,GAAA;QACHA,WAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,KAAK,IAAI,CAAC,MAAM,EAAE;IACpB;AAEA;;;AAGG;AACH,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;IACtC;AACD;;;;"}
@@ -53,8 +53,11 @@ class Dispatcher {
53
53
  // because the execution is not awaited. This way we ensure that available slots
54
54
  // are correctly calculated.
55
55
  this.executorManager.queueJob(queue, job);
56
- // does not await for job execution.
57
- void this.executorManager.execute(queue, job);
56
+ // does not await for job execution. Guard against any unexpected rejection so a single
57
+ // job can never crash the engine with an unhandled promise rejection.
58
+ void this.executorManager.execute(queue, job).catch((error) => {
59
+ logger("Dispatcher").error(`Unexpected error executing job ${job.id}:`, error);
60
+ });
58
61
  }
59
62
  }
60
63
  if (shouldSleep) {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sources":["../../src/execution/dispatcher.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;;AAEG;MACU,UAAU,CAAA;AAWX,IAAA,OAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;AACA,IAAA,UAAA;;IAZF,SAAS,GAAG,KAAK;AAEzB;;;;;AAKG;AACH,IAAA,WAAA,CACU,OAAgB,EAChB,YAA0B,EAC1B,eAAgC,EAChC,UAAkB,EAAA;QAHlB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,UAAU,GAAV,UAAU;IACjB;AAEH;;;AAGG;AACK,IAAA,MAAM,MAAM,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE;YAExE,IAAI,WAAW,GAAG,IAAI;AAEtB,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACxE,gBAAA,IAAI,cAAc,IAAI,CAAC,EAAE;AACvB,oBAAA,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,IAAI,CAAA,eAAA,CAAiB,CAAC;oBAChE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACjC;gBACF;gBAEA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;AAC/D,gBAAA,IAAI,WAAW,IAAI,CAAC,EAAE;oBACpB,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,iCAAA,CAAmC,CAAC;oBAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;oBACjC;gBACF;gBAEA,MAAM,IAAI,GAAc,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAE7G,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEnB,WAAW,GAAG,KAAK;gBACrB;AAEA,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;;;oBAItB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;;oBAEzC,KAAK,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;gBAC/C;YACF;YAEA,IAAI,WAAW,EAAE;gBACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC;QACF;IACF;AAEA;;;;;AAKG;AACK,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD;AAEA;;AAEG;IACH,KAAK,GAAA;QACH,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,KAAK,IAAI,CAAC,MAAM,EAAE;IACpB;AAEA;;;AAGG;AACH,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;IACtC;AACD;;;;"}
1
+ {"version":3,"file":"dispatcher.js","sources":["../../src/execution/dispatcher.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var core = require('@sidequest/core');
4
- var EventEmitter = require('events');
5
4
  var util = require('util');
6
5
  var jobTransitioner = require('../job/job-transitioner.cjs');
7
6
  require('node:fs');
8
7
  require('node:url');
9
8
  require('node:path');
9
+ var inlineRunner = require('../shared-runner/inline-runner.cjs');
10
10
  var runnerPool = require('../shared-runner/runner-pool.cjs');
11
11
 
12
12
  /**
@@ -17,7 +17,7 @@ class ExecutorManager {
17
17
  nonNullConfig;
18
18
  activeByQueue;
19
19
  activeJobs;
20
- runnerPool;
20
+ jobRunner;
21
21
  /**
22
22
  * Creates a new ExecutorManager.
23
23
  * @param backend The backend instance.
@@ -28,7 +28,10 @@ class ExecutorManager {
28
28
  this.nonNullConfig = nonNullConfig;
29
29
  this.activeByQueue = {};
30
30
  this.activeJobs = new Set();
31
- this.runnerPool = new runnerPool.RunnerPool(this.nonNullConfig);
31
+ this.jobRunner =
32
+ this.nonNullConfig.runner === "inline"
33
+ ? new inlineRunner.InlineRunner(this.nonNullConfig)
34
+ : new runnerPool.RunnerPool(this.nonNullConfig);
32
35
  }
33
36
  /**
34
37
  * Gets the number of available slots for a given queue.
@@ -85,6 +88,8 @@ class ExecutorManager {
85
88
  */
86
89
  async execute(queueConfig, job) {
87
90
  let isRunning = false;
91
+ const controller = new AbortController();
92
+ let timeoutHandle;
88
93
  try {
89
94
  core.logger("Executor Manager").debug(`Submitting job ${job.id} for execution in queue ${queueConfig.name}`);
90
95
  // We call prepareJob here again to make sure the jobs are in the queues.
@@ -92,54 +97,85 @@ class ExecutorManager {
92
97
  this.queueJob(queueConfig, job);
93
98
  job = await jobTransitioner.JobTransitioner.apply(this.backend, job, new core.RunTransition());
94
99
  isRunning = true;
95
- const signal = new EventEmitter();
96
100
  const cancellationCheck = async () => {
97
101
  while (isRunning) {
98
102
  const watchedJob = await this.backend.getJob(job.id);
99
- if (watchedJob.state === "canceled") {
100
- core.logger("Executor Manager").debug(`Emitting abort signal for job ${job.id}`);
101
- signal.emit("abort");
103
+ if (watchedJob?.state === "canceled") {
104
+ core.logger("Executor Manager").debug(`Aborting job ${job.id}: canceled`);
105
+ controller.abort(new core.JobCanceled());
102
106
  isRunning = false;
103
107
  return;
104
108
  }
105
109
  await new Promise((r) => setTimeout(r, 1000));
106
110
  }
107
111
  };
108
- void cancellationCheck();
112
+ void cancellationCheck().catch((error) => {
113
+ core.logger("Executor Manager").error(`Cancellation watcher for job ${job.id} failed:`, error);
114
+ });
109
115
  core.logger("Executor Manager").debug(`Running job ${job.id} in queue ${queueConfig.name}`);
110
- const runPromise = this.runnerPool.run(job, signal);
116
+ const runPromise = this.jobRunner.run(job, controller.signal);
111
117
  if (job.timeout) {
112
- void new Promise(() => {
113
- setTimeout(() => {
114
- core.logger("Executor Manager").debug(`Job ${job.id} timed out after ${job.timeout}ms, aborting.`);
115
- signal.emit("abort");
116
- void jobTransitioner.JobTransitioner.apply(this.backend, job, new core.RetryTransition(`Job timed out after ${job.timeout}ms`));
117
- }, job.timeout);
118
- });
118
+ // Only signal the abort here. The terminal transition is decided when the run actually ends
119
+ // (resolve or reject) so a still-running job is never re-queued underneath itself.
120
+ timeoutHandle = setTimeout(() => {
121
+ core.logger("Executor Manager").debug(`Job ${job.id} timed out after ${job.timeout}ms, aborting.`);
122
+ controller.abort(new core.JobTimeout(job.timeout));
123
+ }, job.timeout);
119
124
  }
120
125
  const result = await runPromise;
121
126
  isRunning = false;
122
- core.logger("Executor Manager").debug(`Job ${job.id} completed with result: ${util.inspect(result)}`);
123
- const transition = core.JobTransitionFactory.create(result);
124
- await jobTransitioner.JobTransitioner.apply(this.backend, job, transition);
127
+ // The job ran to a conclusion and returned a state (even if a timeout/cancel was signaled);
128
+ // respect it and transition accordingly.
129
+ core.logger("Executor Manager").debug(`Job ${job.id} settled with result: ${util.inspect(result)}`);
130
+ await this.applyTerminalTransition(job, core.JobTransitionFactory.create(result));
125
131
  }
126
132
  catch (error) {
127
133
  isRunning = false;
128
134
  const err = error;
129
- if (err.message === "The task has been aborted") {
130
- core.logger("Executor Manager").debug(`Job ${job.id} was aborted`);
135
+ if (controller.signal.aborted) {
136
+ // The run produced no result because the worker was hard-killed (thread). Only a clear
137
+ // cancellation maps to canceled; every other abort reason (timeout, or anything else) defaults
138
+ // to a retry as a failsafe. The rejection is logged so a real error during the abort is kept.
139
+ const reason = controller.signal.reason;
140
+ core.logger("Executor Manager").debug(`Job ${job.id} was hard-killed (${String(reason)}): ${err.message}`);
141
+ const transition = reason instanceof core.JobCanceled
142
+ ? new core.CancelTransition()
143
+ : new core.RetryTransition(reason instanceof Error ? reason : new Error(`Job aborted: ${String(reason)}`));
144
+ await this.applyTerminalTransition(job, transition);
131
145
  }
132
146
  else {
133
147
  core.logger("Executor Manager").error(`Unhandled error while executing job ${job.id}: ${err.message}`);
134
- await jobTransitioner.JobTransitioner.apply(this.backend, job, new core.RetryTransition(err));
148
+ await this.applyTerminalTransition(job, new core.RetryTransition(err));
135
149
  }
136
150
  }
137
151
  finally {
138
152
  isRunning = false;
153
+ if (timeoutHandle) {
154
+ clearTimeout(timeoutHandle);
155
+ }
139
156
  this.activeByQueue[queueConfig.name].delete(job.id);
140
157
  this.activeJobs.delete(job.id);
141
158
  }
142
159
  }
160
+ /**
161
+ * Applies a job's final transition, tolerating the job row having disappeared.
162
+ *
163
+ * A job's row can be deleted while it runs (cleanup routine, an explicit delete, or a test
164
+ * truncating the table). Recording its terminal state is then impossible and safe to skip. This
165
+ * must never throw: `execute` is fire-and-forget, so an error here would surface as an unhandled
166
+ * rejection.
167
+ *
168
+ * @param job The job being finalized.
169
+ * @param transition The terminal transition to apply.
170
+ */
171
+ async applyTerminalTransition(job, transition) {
172
+ try {
173
+ await jobTransitioner.JobTransitioner.apply(this.backend, job, transition);
174
+ }
175
+ catch (error) {
176
+ core.logger("Executor Manager").warn(`Could not record terminal state for job ${job.id} (it may no longer exist): ${error instanceof Error ? error.message : String(error)}`);
177
+ }
178
+ }
143
179
  /**
144
180
  * Destroys the runner pool and releases resources.
145
181
  */
@@ -147,14 +183,14 @@ class ExecutorManager {
147
183
  await new Promise((resolve, reject) => {
148
184
  const checkJobs = () => {
149
185
  if (this.totalActiveWorkers() === 0) {
150
- core.logger("ExecutorManager").info("All active jobs finished. Destroying runner pool.");
186
+ core.logger("ExecutorManager").info("All active jobs finished. Destroying runner.");
151
187
  try {
152
- this.runnerPool.destroy();
153
- core.logger("ExecutorManager").debug("Runner pool destroyed. Returning.");
188
+ this.jobRunner.destroy();
189
+ core.logger("ExecutorManager").debug("Runner destroyed. Returning.");
154
190
  resolve();
155
191
  }
156
192
  catch (error) {
157
- core.logger("ExecutorManager").error("Error while destroying runner pool:", error);
193
+ core.logger("ExecutorManager").error("Error while destroying runner:", error);
158
194
  reject(error);
159
195
  }
160
196
  }
@@ -1 +1 @@
1
- {"version":3,"file":"executor-manager.cjs","sources":["../../src/execution/executor-manager.ts"],"sourcesContent":[null],"names":["RunnerPool","logger","JobTransitioner","RunTransition","RetryTransition","inspect","JobTransitionFactory"],"mappings":"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"}
1
+ {"version":3,"file":"executor-manager.cjs","sources":["../../src/execution/executor-manager.ts"],"sourcesContent":[null],"names":["InlineRunner","RunnerPool","logger","JobTransitioner","RunTransition","JobCanceled","JobTimeout","inspect","JobTransitionFactory","CancelTransition","RetryTransition"],"mappings":"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"}
@@ -10,7 +10,7 @@ declare class ExecutorManager {
10
10
  private nonNullConfig;
11
11
  private activeByQueue;
12
12
  private activeJobs;
13
- private runnerPool;
13
+ private jobRunner;
14
14
  /**
15
15
  * Creates a new ExecutorManager.
16
16
  * @param backend The backend instance.
@@ -45,6 +45,18 @@ declare class ExecutorManager {
45
45
  * @param job The job data to execute.
46
46
  */
47
47
  execute(queueConfig: QueueConfig, job: JobData): Promise<void>;
48
+ /**
49
+ * Applies a job's final transition, tolerating the job row having disappeared.
50
+ *
51
+ * A job's row can be deleted while it runs (cleanup routine, an explicit delete, or a test
52
+ * truncating the table). Recording its terminal state is then impossible and safe to skip. This
53
+ * must never throw: `execute` is fire-and-forget, so an error here would surface as an unhandled
54
+ * rejection.
55
+ *
56
+ * @param job The job being finalized.
57
+ * @param transition The terminal transition to apply.
58
+ */
59
+ private applyTerminalTransition;
48
60
  /**
49
61
  * Destroys the runner pool and releases resources.
50
62
  */