@mclawnet/scheduler 0.1.3 → 0.1.4

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.
@@ -5,11 +5,19 @@ import { join } from "node:path";
5
5
  import FakeTimers from "@sinonjs/fake-timers";
6
6
  import { SchedulerService } from "../scheduler-service.js";
7
7
  import { JsonScheduleRepository } from "../json-schedule-repository.js";
8
- import { makeDeferredExecutor, makeImmediateExecutor, sample, drainFactory, } from "./tick-helpers.js";
8
+ import { makeDeferredExecutor, makeImmediateExecutor, sample, drainUntilFactory, } from "./tick-helpers.js";
9
+ // Deflaked from a fixed-iter `drain()` to predicate-based `drainUntil()`.
10
+ // The previous drainFactory(clock, 200) was an empirical wait (10s fake time)
11
+ // that depended on Linux CI being fast enough to flush proper-lockfile retry
12
+ // chains within 200 setTimeout iterations. CI runners hit the wall ~once per
13
+ // 5 PRs (#120 M6.0 T9 docs, #131 M6.1 hotfix), needing a rerun each time.
14
+ // drainUntil short-circuits the moment the assertion would pass, so slow CI
15
+ // just waits longer (up to one cron interval = 60s fake time) instead of
16
+ // silently coming up short.
9
17
  let home;
10
18
  let repo;
11
19
  let clock;
12
- let drain;
20
+ let drainUntil;
13
21
  beforeEach(() => {
14
22
  home = mkdtempSync(join(tmpdir(), "sched-tick-"));
15
23
  repo = new JsonScheduleRepository({ home });
@@ -18,7 +26,7 @@ beforeEach(() => {
18
26
  shouldAdvanceTime: true,
19
27
  advanceTimeDelta: 20,
20
28
  });
21
- drain = drainFactory(clock);
29
+ drainUntil = drainUntilFactory(clock);
22
30
  });
23
31
  afterEach(() => {
24
32
  clock.uninstall();
@@ -34,7 +42,13 @@ describe("SchedulerService.tick — single-flight (Task 2.3)", () => {
34
42
  await svc.start();
35
43
  expect(svc.getRegistered()).toContain(s.id);
36
44
  await clock.tickAsync(60_000);
37
- await drain();
45
+ // Wait until the run record actually lands AND reaches the "completed"
46
+ // terminal state. Without the status check, slow CI can observe a single
47
+ // "running" row mid-flight (assertion then fires on the wrong state).
48
+ await drainUntil(async () => {
49
+ const r = await repo.listRuns(s.id);
50
+ return r.length >= 1 && r[0].status === "completed";
51
+ });
38
52
  expect(exec.invocations).toHaveLength(1);
39
53
  const runs = await repo.listRuns(s.id);
40
54
  expect(runs).toHaveLength(1);
@@ -52,17 +66,28 @@ describe("SchedulerService.tick — single-flight (Task 2.3)", () => {
52
66
  });
53
67
  await svc.start();
54
68
  await clock.tickAsync(60_000);
55
- await drain();
69
+ // First tick: wait for executor to be invoked.
70
+ await drainUntil(() => exec.invocations.length >= 1);
56
71
  expect(exec.invocations).toHaveLength(1);
57
72
  await clock.tickAsync(60_000);
58
- await drain();
73
+ // Second tick: wait for the cancelled "previous_run_in_progress" record
74
+ // to land. Crucially, the executor must NOT be invoked again (single-flight
75
+ // gate); we wait on the run record, not on a second invocation.
76
+ await drainUntil(async () => {
77
+ const r = await repo.listRuns(s.id);
78
+ return r.length >= 2 && r.some(x => x.status === "cancelled");
79
+ });
59
80
  expect(exec.invocations).toHaveLength(1); // single-flight: no new call
60
81
  const runs = await repo.listRuns(s.id);
61
82
  expect(runs).toHaveLength(2);
62
83
  const cancelled = runs.find(r => r.status === "cancelled");
63
84
  expect(cancelled?.error).toBe("previous_run_in_progress");
64
85
  exec.resolveNext({ exitCode: 0 });
65
- await drain();
86
+ // Wait for the first run to transition to completed after deferred resolve.
87
+ await drainUntil(async () => {
88
+ const r = await repo.listRuns(s.id);
89
+ return r.some(x => x.status === "completed");
90
+ });
66
91
  const after = await repo.listRuns(s.id);
67
92
  const completed = after.find(r => r.status === "completed");
68
93
  expect(completed?.exitCode).toBe(0);
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler-service-tick-23.test.js","sourceRoot":"","sources":["../../src/__tests__/scheduler-service-tick-23.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler-service-tick-23.test.js","sourceRoot":"","sources":["../../src/__tests__/scheduler-service-tick-23.test.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,5 @@ export interface ImmediateExecutor extends ScheduleExecutor {
13
13
  }
14
14
  export declare function makeImmediateExecutor(result: ExecutorResult, mode?: "swarm" | "oneshot"): ImmediateExecutor;
15
15
  export declare function drainFactory(clock: FakeTimers.InstalledClock, iters?: number): () => Promise<void>;
16
- export declare function drainUntilFactory(clock: FakeTimers.InstalledClock, maxIters?: number): (cond: () => boolean) => Promise<void>;
16
+ export declare function drainUntilFactory(clock: FakeTimers.InstalledClock, maxIters?: number): (cond: () => boolean | Promise<boolean>) => Promise<void>;
17
17
  //# sourceMappingURL=tick-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tick-helpers.d.ts","sourceRoot":"","sources":["../../src/__tests__/tick-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EACV,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAClD,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,MAAM,GAAI,OAAM,OAAO,CAAC,mBAAmB,CAAM,KAAG,mBAS/D,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,OAAO,GAAG,SAAqB,GAAG,gBAAgB,CAyB5F;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,OAAO,GAAG,SAAqB,GACpC,iBAAiB,CAUnB;AAmBD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,CAAC,cAAc,EAChC,KAAK,SAAM,GACV,MAAM,OAAO,CAAC,IAAI,CAAC,CAMrB;AAaD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,CAAC,cAAc,EAChC,QAAQ,SAAO,GACd,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAYxC"}
1
+ {"version":3,"file":"tick-helpers.d.ts","sourceRoot":"","sources":["../../src/__tests__/tick-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EACV,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAClD,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,MAAM,GAAI,OAAM,OAAO,CAAC,mBAAmB,CAAM,KAAG,mBAS/D,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,OAAO,GAAG,SAAqB,GAAG,gBAAgB,CAyB5F;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,OAAO,GAAG,SAAqB,GACpC,iBAAiB,CAUnB;AAmBD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,CAAC,cAAc,EAChC,KAAK,SAAM,GACV,MAAM,OAAO,CAAC,IAAI,CAAC,CAMrB;AAaD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,CAAC,cAAc,EAChC,QAAQ,SAAO,GACd,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAY3D"}
@@ -85,11 +85,11 @@ export function drainFactory(clock, iters = 200) {
85
85
  export function drainUntilFactory(clock, maxIters = 1200) {
86
86
  return async function drainUntil(cond) {
87
87
  for (let i = 0; i < maxIters; i++) {
88
- if (cond())
88
+ if (await cond())
89
89
  return;
90
90
  await clock.tickAsync(50);
91
91
  }
92
- if (!cond()) {
92
+ if (!(await cond())) {
93
93
  throw new Error(`drainUntil: condition still false after ${maxIters} iters (${maxIters * 50}ms fake time)`);
94
94
  }
95
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tick-helpers.js","sourceRoot":"","sources":["../../src/__tests__/tick-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tick-helpers.js","sourceRoot":"","sources":["../../src/__tests__/tick-helpers.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAqC,EAAE,EAAuB,EAAE,CAAC,CAAC;IACvF,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,kBAAkB;IAC3B,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,SAAS;IACf,cAAc,EAAE,WAAW;IAC3B,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9B,GAAG,IAAI;CACR,CAAC,CAAC;AAQH,MAAM,UAAU,oBAAoB,CAAC,OAA4B,SAAS;IACxE,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAuC,EAAE,CAAC;IACzD,MAAM,SAAS,GAA8B,EAAE,CAAC;IAChD,OAAO;QACL,IAAI;QACJ,WAAW;QACX,WAAW,EAAE,CAAC,MAAsB,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YAC5B,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC;gBAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QACD,UAAU,EAAE,CAAC,GAAU,EAAE,EAAE;YACzB,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,EAAE;gBAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,GAAoB;YAChC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,qBAAqB,CACnC,MAAsB,EACtB,OAA4B,SAAS;IAErC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,OAAO;QACL,IAAI;QACJ,WAAW;QACX,KAAK,CAAC,OAAO,CAAC,GAAoB;YAChC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,0EAA0E;AAC1E,yDAAyD;AACzD,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,uEAAuE;AACvE,2CAA2C;AAC3C,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,qEAAqE;AACrE,EAAE;AACF,yEAAyE;AACzE,oEAAoE;AACpE,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAC1B,KAAgC,EAChC,KAAK,GAAG,GAAG;IAEX,OAAO,KAAK,UAAU,KAAK;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,6EAA6E;AAC7E,2DAA2D;AAC3D,0EAA0E;AAC1E,wEAAwE;AACxE,yCAAyC;AACzC,mEAAmE;AACnE,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAC/B,KAAgC,EAChC,QAAQ,GAAG,IAAI;IAEf,OAAO,KAAK,UAAU,UAAU,CAAC,IAAsC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,MAAM,IAAI,EAAE;gBAAE,OAAO;YACzB,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,2CAA2C,QAAQ,WAAW,QAAQ,GAAG,EAAE,eAAe,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mclawnet/scheduler",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -18,8 +18,8 @@
18
18
  "dependencies": {
19
19
  "croner": "^10.0.1",
20
20
  "ulid": "^2.3.0",
21
- "@mclawnet/logger": "0.1.7",
22
- "@mclawnet/task": "0.1.2"
21
+ "@mclawnet/task": "0.1.3",
22
+ "@mclawnet/logger": "0.1.7"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@sinonjs/fake-timers": "^11.2.2",