anbaric-state-machine 1.56.7 → 1.56.8
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.
|
@@ -3,11 +3,12 @@ import { StateMachine } from "../StateMachine.js";
|
|
|
3
3
|
import { Schedule } from "./Schedule.js";
|
|
4
4
|
declare class JobRunScheduler {
|
|
5
5
|
private persistence;
|
|
6
|
+
private tickIntervalMs;
|
|
6
7
|
private static singleton?;
|
|
7
8
|
private machines;
|
|
8
9
|
private ticker?;
|
|
9
10
|
private ticking;
|
|
10
|
-
constructor(persistence?: JobRunSchedulePersistence);
|
|
11
|
+
constructor(persistence?: JobRunSchedulePersistence, tickIntervalMs?: number);
|
|
11
12
|
static instance(): JobRunScheduler;
|
|
12
13
|
schedule(machine: StateMachine, at: Schedule, lookaheadMs?: number, randomRunOffsetMs?: [number, number]): void;
|
|
13
14
|
tick(now?: Date): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobRunScheduler.d.ts","sourceRoot":"","sources":["../../src/scheduling/JobRunScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAe,MAAM,eAAe,CAAC;AACtE,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"JobRunScheduler.d.ts","sourceRoot":"","sources":["../../src/scheduling/JobRunScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAe,MAAM,eAAe,CAAC;AACtE,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAgCvC,cAAM,eAAe;IAQL,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,cAAc;IAPlC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAmB;IAE5C,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,MAAM,CAAC,CAAkC;IACjD,OAAO,CAAC,OAAO,CAAS;IAExB,YAAoB,WAAW,GAAG,yBAAuE,EACrF,cAAc,GAAG,MAAmC,EAAI;IAE5E,MAAM,CAAC,QAAQ,IAAK,eAAe,CAGlC;IAED,QAAQ,CAAC,OAAO,EAAG,YAAY,EAAE,EAAE,EAAG,QAAQ,EAAE,WAAW,GAAG,MAA6B,EAAE,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAyB,GAAI,IAAI,CAIhK;IAGK,IAAI,CAAC,GAAG,GAAG,IAAiB,GAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;IAEK,OAAO,IAAK,OAAO,CAAC,IAAI,CAAC,CAI9B;IAED,OAAO,CAAC,KAAK;YAOC,QAAQ;YAYR,SAAS;YAkBT,QAAQ;IAWtB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,GAAG;CAId;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { JobRunSchedulePersistenceFactory } from "./JobRunSchedulePersistenceFactory.js";
|
|
2
|
-
const
|
|
2
|
+
const DEFAULT_TICK_INTERVAL_MS = 10_000;
|
|
3
3
|
const DEFAULT_LOOKAHEAD_MS = 1000 * 60 * 60 * 24;
|
|
4
|
+
/* Every tick asks the store for the high-water mark of each machine and for
|
|
5
|
+
whatever has come due - on the platform, that many requests. Ten seconds
|
|
6
|
+
keeps that cheap and starts a run well within the random offset it was
|
|
7
|
+
planned with; ANBARIC_SCHEDULER_TICK_MS overrides it. */
|
|
8
|
+
const configuredTickIntervalMs = () => {
|
|
9
|
+
const ms = Number(process.env.ANBARIC_SCHEDULER_TICK_MS);
|
|
10
|
+
return Number.isFinite(ms) && ms > 0 ? ms : DEFAULT_TICK_INTERVAL_MS;
|
|
11
|
+
};
|
|
4
12
|
const DEFAULT_RUN_OFFSET_MS = [0, 1000 * 60 * 2];
|
|
5
13
|
/* Starts jobs on a timetable. Runs are planned ahead of time and stored, so
|
|
6
14
|
the plan survives a restart and a machine that was down does not silently
|
|
@@ -14,12 +22,14 @@ const DEFAULT_RUN_OFFSET_MS = [0, 1000 * 60 * 2];
|
|
|
14
22
|
due run still starts exactly once. */
|
|
15
23
|
class JobRunScheduler {
|
|
16
24
|
persistence;
|
|
25
|
+
tickIntervalMs;
|
|
17
26
|
static singleton;
|
|
18
27
|
machines = new Map();
|
|
19
28
|
ticker;
|
|
20
29
|
ticking = false;
|
|
21
|
-
constructor(persistence = JobRunSchedulePersistenceFactory.instance()) {
|
|
30
|
+
constructor(persistence = JobRunSchedulePersistenceFactory.instance(), tickIntervalMs = configuredTickIntervalMs()) {
|
|
22
31
|
this.persistence = persistence;
|
|
32
|
+
this.tickIntervalMs = tickIntervalMs;
|
|
23
33
|
}
|
|
24
34
|
static instance() {
|
|
25
35
|
if (!JobRunScheduler.singleton)
|
|
@@ -45,7 +55,7 @@ class JobRunScheduler {
|
|
|
45
55
|
start() {
|
|
46
56
|
if (this.ticker)
|
|
47
57
|
return;
|
|
48
|
-
this.ticker = setInterval(() => void this.tickOnce(),
|
|
58
|
+
this.ticker = setInterval(() => void this.tickOnce(), this.tickIntervalMs);
|
|
49
59
|
// Scheduling alone should not hold a process open.
|
|
50
60
|
this.ticker.unref?.();
|
|
51
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobRunScheduler.js","sourceRoot":"","sources":["../../src/scheduling/JobRunScheduler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gCAAgC,EAAC,MAAM,uCAAuC,CAAC;AAGvF,MAAM,
|
|
1
|
+
{"version":3,"file":"JobRunScheduler.js","sourceRoot":"","sources":["../../src/scheduling/JobRunScheduler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gCAAgC,EAAC,MAAM,uCAAuC,CAAC;AAGvF,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEjD;;;2DAG2D;AAC3D,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC;AACzE,CAAC,CAAC;AACF,MAAM,qBAAqB,GAAsB,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AASpE;;;;;;;;;wCASwC;AACxC,MAAM,eAAe;IAQG,WAAW;IACX,cAAc;IAP1B,MAAM,CAAC,SAAS,CAAoB;IAEpC,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC/C,MAAM,CAAmC;IACzC,OAAO,GAAG,KAAK,CAAC;IAExB,YAAoB,WAAW,GAA+B,gCAAgC,CAAC,QAAQ,EAAE,EACrF,cAAc,GAAY,wBAAwB,EAAE;2BADpD,WAAW;8BACX,cAAc;IAAyC,CAAC;IAE5E,MAAM,CAAC,QAAQ;QACX,IAAI,CAAC,eAAe,CAAC,SAAS;YAAE,eAAe,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QAClF,OAAO,eAAe,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,OAAsB,EAAE,EAAa,EAAE,WAAW,GAAY,oBAAoB,EAAE,iBAAiB,GAAsB,qBAAqB;QACrJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,EAC9D,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,IAAI,CAAC,GAAG,GAAU,IAAI,IAAI,EAAE;QAC9B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACrF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3E,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,QAAQ;QAClB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACL,gEAAgE;QACpE,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,SAA4B,EAAE,GAAU;QAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1E,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAE3C,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5D,KAAK;YACL,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;SAC7D,CAAC,CAAC,CAAC;QAEJ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,GAAU;QAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,2EAA2E;IAC3E,gCAAgC;IACxB,UAAU,CAAC,KAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAoB;QACjE,IAAI,OAAO,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QACpC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC/F,CAAC;IAEO,aAAa,CAAC,GAAkB;QACpC,OAAO,IAAI,GAAG,CAAc,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEO,GAAG,CAAC,KAAc,EAAE,UAAmB;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC;CAEJ;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anbaric-state-machine",
|
|
3
|
-
"version": "1.56.
|
|
3
|
+
"version": "1.56.8",
|
|
4
4
|
"description": "This is the state machine library that one can use to add state management to an application. It will, by default, be locally runnable but can deployed to the Anbaric Cloud via the CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "chris@anbaric.ai",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"typescript": "^7.0.2"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"anbaric-impl-cloud": "^1.56.
|
|
28
|
-
"anbaric-tsapi": "^1.56.
|
|
27
|
+
"anbaric-impl-cloud": "^1.56.8",
|
|
28
|
+
"anbaric-tsapi": "^1.56.8"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
31
|
"dist"
|