instar 1.3.645 → 1.3.646
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/dist/scheduler/JobRunHistory.d.ts +22 -0
- package/dist/scheduler/JobRunHistory.d.ts.map +1 -1
- package/dist/scheduler/JobRunHistory.js +141 -10
- package/dist/scheduler/JobRunHistory.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.646.md +39 -0
- package/upgrades/eli16/jobrunhistory-incremental-cache.md +43 -0
- package/upgrades/side-effects/jobrunhistory-incremental-cache.md +61 -0
|
@@ -104,6 +104,9 @@ export declare class JobRunHistory {
|
|
|
104
104
|
private ledgerDir;
|
|
105
105
|
private file;
|
|
106
106
|
private machineId;
|
|
107
|
+
private cachedRuns;
|
|
108
|
+
private cachedSize;
|
|
109
|
+
private cachedMtimeMs;
|
|
107
110
|
constructor(stateDir: string);
|
|
108
111
|
setMachineId(machineId: string): void;
|
|
109
112
|
/**
|
|
@@ -219,6 +222,25 @@ export declare class JobRunHistory {
|
|
|
219
222
|
* a degradation event is reported. Essential fields are always preserved.
|
|
220
223
|
*/
|
|
221
224
|
private applyRowSizeCap;
|
|
225
|
+
/**
|
|
226
|
+
* Parse a JSONL string into JobRun rows, skipping torn/corrupt lines
|
|
227
|
+
* (matches the long-standing readLines convention — a corrupt line reads as
|
|
228
|
+
* absent and is repaired on the next compaction/append).
|
|
229
|
+
*/
|
|
230
|
+
private parseJsonl;
|
|
231
|
+
/**
|
|
232
|
+
* Read all entries — cache-aware. Returns the parsed rows in file (append)
|
|
233
|
+
* order. The result is the SAME as a full readFileSync+parse, but the
|
|
234
|
+
* per-call cost is O(bytes-appended-since-last-read), not O(file-size):
|
|
235
|
+
*
|
|
236
|
+
* - file unchanged (size + mtime match the cache) → return the cache, no IO.
|
|
237
|
+
* - file grew with an intact prefix → read ONLY the appended tail and merge.
|
|
238
|
+
* - file shrank / was rewritten (compaction, external truncation) → one
|
|
239
|
+
* full re-read (rare).
|
|
240
|
+
*
|
|
241
|
+
* On any read error the cache is cleared and an empty list is returned (the
|
|
242
|
+
* historical fail-safe).
|
|
243
|
+
*/
|
|
222
244
|
private readLines;
|
|
223
245
|
}
|
|
224
246
|
//# sourceMappingURL=JobRunHistory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobRunHistory.d.ts","sourceRoot":"","sources":["../../src/scheduler/JobRunHistory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yBAAyB;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,sDAAsD;IACtD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,MAAM;IACrB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;IACtE,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAExC;iFAC6E;IAC7E,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;8CAE0C;IAC1C,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;IACtC,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;gEAC4D;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;0CACsC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAsBD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAuB;
|
|
1
|
+
{"version":3,"file":"JobRunHistory.d.ts","sourceRoot":"","sources":["../../src/scheduler/JobRunHistory.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,29 @@ export class JobRunHistory {
|
|
|
39
39
|
ledgerDir;
|
|
40
40
|
file;
|
|
41
41
|
machineId = null;
|
|
42
|
+
// ── Event-loop-freeze fix: incremental in-memory cache of parsed runs ──
|
|
43
|
+
//
|
|
44
|
+
// job-runs.jsonl is an append-only ledger that grows to tens of MB. Every
|
|
45
|
+
// read operation (findRun, recordCompletion, recordReflection, recordHandoff,
|
|
46
|
+
// query, stats, allStats, getLastHandoff) used to call readLines(), which did
|
|
47
|
+
// a SYNCHRONOUS full-file readFileSync + per-line JSON.parse on every call.
|
|
48
|
+
// The scheduler calls these on every job completion, on the wake-reaper tick,
|
|
49
|
+
// and on every job spawn — and the dashboard polls history routes — so a
|
|
50
|
+
// 13MB ledger blocked the event loop for 13-16s, repeatedly. A live
|
|
51
|
+
// /usr/bin/sample caught ~39% of main-thread time in JsonParser.
|
|
52
|
+
//
|
|
53
|
+
// The ledger is single-writer-per-process for JobRun rows (this instance),
|
|
54
|
+
// but a SECOND writer exists in-process — MigrationLedger.appendMigrationEvent
|
|
55
|
+
// appends `migration.*` rows to the SAME file. So the cache is validated
|
|
56
|
+
// against the file's (size, mtimeMs) and, when the file only GREW with an
|
|
57
|
+
// intact prefix, only the appended TAIL is read+parsed (O(delta), not O(13MB)).
|
|
58
|
+
// A shrink/truncation (compaction by another path, or external rewrite) falls
|
|
59
|
+
// back to a full re-read. This preserves the existing "JSONL append-only,
|
|
60
|
+
// dedup last-entry-per-runId, skip torn lines" semantics exactly — it only
|
|
61
|
+
// removes the per-call full parse.
|
|
62
|
+
cachedRuns = null;
|
|
63
|
+
cachedSize = 0;
|
|
64
|
+
cachedMtimeMs = 0;
|
|
42
65
|
constructor(stateDir) {
|
|
43
66
|
this.ledgerDir = path.join(stateDir, 'ledger');
|
|
44
67
|
this.file = path.join(this.ledgerDir, 'job-runs.jsonl');
|
|
@@ -340,13 +363,52 @@ export class JobRunHistory {
|
|
|
340
363
|
deduped.sort((a, b) => a.startedAt.localeCompare(b.startedAt));
|
|
341
364
|
const content = deduped.map(l => JSON.stringify(l)).join('\n') + '\n';
|
|
342
365
|
fs.writeFileSync(this.file, content);
|
|
366
|
+
// The rewrite invalidates the (size, mtime) readLines() just cached.
|
|
367
|
+
// Seed the cache with the deduped set and the post-rewrite stat so the
|
|
368
|
+
// first read after boot is a no-IO cache hit, not a full 13MB re-parse.
|
|
369
|
+
try {
|
|
370
|
+
const stat = fs.statSync(this.file);
|
|
371
|
+
this.cachedRuns = deduped;
|
|
372
|
+
this.cachedSize = stat.size;
|
|
373
|
+
this.cachedMtimeMs = stat.mtimeMs;
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
// @silent-fallback-ok — if the post-compaction stat fails, drop the cache
|
|
377
|
+
// so the next read re-reads the freshly-written file from disk. The
|
|
378
|
+
// compaction itself already succeeded (writeFileSync above); this only
|
|
379
|
+
// governs whether we seed the in-memory cache or rebuild it lazily.
|
|
380
|
+
this.cachedRuns = null;
|
|
381
|
+
this.cachedSize = 0;
|
|
382
|
+
this.cachedMtimeMs = 0;
|
|
383
|
+
}
|
|
343
384
|
console.log(`[JobRunHistory] Compacted ${removed} duplicate entries (${deduped.length} unique runs preserved)`);
|
|
344
385
|
}
|
|
345
386
|
}
|
|
346
387
|
appendLine(data) {
|
|
347
388
|
try {
|
|
348
389
|
const capped = this.applyRowSizeCap(data);
|
|
349
|
-
|
|
390
|
+
const serialized = JSON.stringify(capped) + '\n';
|
|
391
|
+
fs.appendFileSync(this.file, serialized);
|
|
392
|
+
// Keep the in-memory cache coherent with our own append so the read that
|
|
393
|
+
// typically follows a completion does NOT have to re-stat+tail-read. If
|
|
394
|
+
// the cache isn't populated yet, leave it null — the next read builds it.
|
|
395
|
+
if (this.cachedRuns !== null) {
|
|
396
|
+
this.cachedRuns.push(capped);
|
|
397
|
+
try {
|
|
398
|
+
const stat = fs.statSync(this.file);
|
|
399
|
+
this.cachedSize = stat.size;
|
|
400
|
+
this.cachedMtimeMs = stat.mtimeMs;
|
|
401
|
+
}
|
|
402
|
+
catch {
|
|
403
|
+
// @silent-fallback-ok — if we can't stat after writing, drop the cache
|
|
404
|
+
// so the NEXT read does a fresh full re-read rather than trusting a
|
|
405
|
+
// stale (size,mtime). This is a self-correcting fail-safe (the data is
|
|
406
|
+
// already durably on disk via appendFileSync), not a lost write.
|
|
407
|
+
this.cachedRuns = null;
|
|
408
|
+
this.cachedSize = 0;
|
|
409
|
+
this.cachedMtimeMs = 0;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
350
412
|
}
|
|
351
413
|
catch (error) {
|
|
352
414
|
console.error(`[JobRunHistory] Failed to write:`, error);
|
|
@@ -389,21 +451,86 @@ export class JobRunHistory {
|
|
|
389
451
|
}
|
|
390
452
|
return truncated;
|
|
391
453
|
}
|
|
454
|
+
/**
|
|
455
|
+
* Parse a JSONL string into JobRun rows, skipping torn/corrupt lines
|
|
456
|
+
* (matches the long-standing readLines convention — a corrupt line reads as
|
|
457
|
+
* absent and is repaired on the next compaction/append).
|
|
458
|
+
*/
|
|
459
|
+
parseJsonl(content) {
|
|
460
|
+
const trimmed = content.trim();
|
|
461
|
+
if (!trimmed)
|
|
462
|
+
return [];
|
|
463
|
+
return trimmed.split('\n').map(line => {
|
|
464
|
+
try {
|
|
465
|
+
return JSON.parse(line);
|
|
466
|
+
}
|
|
467
|
+
catch {
|
|
468
|
+
// @silent-fallback-ok — a torn/corrupt JSONL line reads as absent; the
|
|
469
|
+
// next compaction/append repairs it. This is the long-standing readLines
|
|
470
|
+
// convention (moved here unchanged), not a new degradation.
|
|
471
|
+
return null;
|
|
472
|
+
}
|
|
473
|
+
}).filter(Boolean);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Read all entries — cache-aware. Returns the parsed rows in file (append)
|
|
477
|
+
* order. The result is the SAME as a full readFileSync+parse, but the
|
|
478
|
+
* per-call cost is O(bytes-appended-since-last-read), not O(file-size):
|
|
479
|
+
*
|
|
480
|
+
* - file unchanged (size + mtime match the cache) → return the cache, no IO.
|
|
481
|
+
* - file grew with an intact prefix → read ONLY the appended tail and merge.
|
|
482
|
+
* - file shrank / was rewritten (compaction, external truncation) → one
|
|
483
|
+
* full re-read (rare).
|
|
484
|
+
*
|
|
485
|
+
* On any read error the cache is cleared and an empty list is returned (the
|
|
486
|
+
* historical fail-safe).
|
|
487
|
+
*/
|
|
392
488
|
readLines() {
|
|
393
|
-
if (!fs.existsSync(this.file))
|
|
489
|
+
if (!fs.existsSync(this.file)) {
|
|
490
|
+
this.cachedRuns = [];
|
|
491
|
+
this.cachedSize = 0;
|
|
492
|
+
this.cachedMtimeMs = 0;
|
|
394
493
|
return [];
|
|
494
|
+
}
|
|
395
495
|
try {
|
|
396
|
-
const
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
496
|
+
const stat = fs.statSync(this.file);
|
|
497
|
+
const size = stat.size;
|
|
498
|
+
const mtimeMs = stat.mtimeMs;
|
|
499
|
+
// Fast path: nothing changed on disk since the last read.
|
|
500
|
+
if (this.cachedRuns !== null && size === this.cachedSize && mtimeMs === this.cachedMtimeMs) {
|
|
501
|
+
return this.cachedRuns;
|
|
502
|
+
}
|
|
503
|
+
// Incremental tail-read: the file only grew and our cached prefix is
|
|
504
|
+
// still valid (no truncation/rewrite). Read just the new bytes.
|
|
505
|
+
if (this.cachedRuns !== null && size > this.cachedSize && this.cachedSize > 0) {
|
|
506
|
+
const fd = fs.openSync(this.file, 'r');
|
|
400
507
|
try {
|
|
401
|
-
|
|
508
|
+
const tailLen = size - this.cachedSize;
|
|
509
|
+
const buf = Buffer.allocUnsafe(tailLen);
|
|
510
|
+
fs.readSync(fd, buf, 0, tailLen, this.cachedSize);
|
|
511
|
+
const tail = buf.toString('utf-8');
|
|
512
|
+
// The cached prefix ended on a newline boundary IFF the byte at
|
|
513
|
+
// cachedSize-1 was '\n'. appendLine always writes a trailing '\n',
|
|
514
|
+
// so a grow that begins mid-line means the previous write was torn;
|
|
515
|
+
// parseJsonl drops that torn fragment safely. Merge the new rows.
|
|
516
|
+
const newRuns = this.parseJsonl(tail);
|
|
517
|
+
if (newRuns.length > 0)
|
|
518
|
+
this.cachedRuns = this.cachedRuns.concat(newRuns);
|
|
519
|
+
this.cachedSize = size;
|
|
520
|
+
this.cachedMtimeMs = mtimeMs;
|
|
521
|
+
return this.cachedRuns;
|
|
402
522
|
}
|
|
403
|
-
|
|
404
|
-
|
|
523
|
+
finally {
|
|
524
|
+
fs.closeSync(fd);
|
|
405
525
|
}
|
|
406
|
-
}
|
|
526
|
+
}
|
|
527
|
+
// Full re-read: first read, or the file shrank / was rewritten.
|
|
528
|
+
const content = fs.readFileSync(this.file, 'utf-8');
|
|
529
|
+
const runs = this.parseJsonl(content);
|
|
530
|
+
this.cachedRuns = runs;
|
|
531
|
+
this.cachedSize = size;
|
|
532
|
+
this.cachedMtimeMs = mtimeMs;
|
|
533
|
+
return runs;
|
|
407
534
|
}
|
|
408
535
|
catch (error) {
|
|
409
536
|
console.error(`[JobRunHistory] Failed to read:`, error);
|
|
@@ -414,6 +541,10 @@ export class JobRunHistory {
|
|
|
414
541
|
reason: `Failed to read ledger: ${error instanceof Error ? error.message : String(error)}`,
|
|
415
542
|
impact: 'Job history queries return empty results',
|
|
416
543
|
});
|
|
544
|
+
// Clear the cache so a transient error doesn't pin a stale view.
|
|
545
|
+
this.cachedRuns = null;
|
|
546
|
+
this.cachedSize = 0;
|
|
547
|
+
this.cachedMtimeMs = 0;
|
|
417
548
|
return [];
|
|
418
549
|
}
|
|
419
550
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobRunHistory.js","sourceRoot":"","sources":["../../src/scheduler/JobRunHistory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JobRunHistory.js","sourceRoot":"","sources":["../../src/scheduler/JobRunHistory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-22T19:03:48.553Z",
|
|
5
|
+
"instarVersion": "1.3.646",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`JobRunHistory.readLines()` did a synchronous `readFileSync` + per-line `JSON.parse` of the entire
|
|
9
|
+
`.instar/ledger/job-runs.jsonl` (~13MB) on EVERY call — on the hot path of `findRun` /
|
|
10
|
+
`recordCompletion` / `recordHandoff` / `query` / `stats` (every job completion/spawn, ~60s cadence).
|
|
11
|
+
A live `/usr/bin/sample` caught the event loop frozen 13–16s in `ReadFileUtf8 → ParseJson →
|
|
12
|
+
WriteFileUtf8`, misreported by SleepWakeDetector as a ~15s "wake". This is the THIRD distinct
|
|
13
|
+
event-loop blocker behind the dashboard "disconnected" flapping (after sync tmux and sync keychain
|
|
14
|
+
reads). The read path now uses an incremental in-memory cache keyed on `(size, mtimeMs)`: unchanged
|
|
15
|
+
file → cache hit (zero IO); append → tail-read only (O(delta)); shrink/compaction → one full re-read.
|
|
16
|
+
|
|
17
|
+
## What to Tell Your User
|
|
18
|
+
|
|
19
|
+
If your dashboard kept dropping its connection even after the tmux and keychain fixes, this was the
|
|
20
|
+
remaining cause: a 13MB job-history file re-read whole, every minute, on the server's main thread.
|
|
21
|
+
After this update that freeze is gone. (A separate cleanup — capping that file's unbounded growth —
|
|
22
|
+
is tracked separately.)
|
|
23
|
+
|
|
24
|
+
## Summary of New Capabilities
|
|
25
|
+
|
|
26
|
+
- Incremental `(size, mtimeMs)`-keyed in-memory cache in `JobRunHistory`; unchanged file = zero-IO
|
|
27
|
+
cache hit, append = tail-read only, compaction = one full re-read. Existing semantics (append-only,
|
|
28
|
+
dedup-last-wins, torn-line skip, corrupt-file recovery) preserved exactly.
|
|
29
|
+
- Removes the third event-loop blocker behind the dashboard flapping + the associated SleepWakeDetector
|
|
30
|
+
false-wakes.
|
|
31
|
+
|
|
32
|
+
## Evidence
|
|
33
|
+
|
|
34
|
+
Root cause diagnosed by a live `/usr/bin/sample` (main thread in ReadFileUtf8 → ParseJson →
|
|
35
|
+
WriteFileUtf8) + an mtime-watch catching the 13MB rewrite, correlated with 15–20s freezes every
|
|
36
|
+
~20–60s. Fix covered by 4 new regression tests (cache-hit does zero full-file reads across 75 ops;
|
|
37
|
+
external append via tail-read; torn-line skip; full re-read on shrink) on top of 30 existing; full
|
|
38
|
+
scheduler suite green (346 tests total); tsc clean; no-silent-fallbacks + bounded-accumulation +
|
|
39
|
+
no-wholefile-sync-read lints green.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# JobRunHistory incremental cache — event-loop freeze fix — ELI16
|
|
2
|
+
|
|
3
|
+
## What this is
|
|
4
|
+
|
|
5
|
+
Your agent's server runs everything on one main thread. If any single operation makes that thread
|
|
6
|
+
wait, *everything* waits — the dashboard, your messages, every background check. That's a "freeze,"
|
|
7
|
+
and a long-enough freeze drops the dashboard's live connection (the "Disconnected" flapping).
|
|
8
|
+
|
|
9
|
+
This fixes the THIRD distinct freeze behind that flapping. (The first was a slow shared terminal
|
|
10
|
+
manager; the second was reading the macOS keychain the blocking way — both already fixed.) This one:
|
|
11
|
+
the agent keeps a log of every background job it has ever run, in a file called `job-runs.jsonl`. That
|
|
12
|
+
file has grown to about **13 megabytes**. And every time a job finished or started — which happens
|
|
13
|
+
about every minute — the server read the WHOLE 13MB file from disk and re-parsed all of it, on the
|
|
14
|
+
main thread. That single operation froze the server for **13 to 16 seconds**, every minute or so. It
|
|
15
|
+
even looked to the agent like the laptop had gone to sleep (a blocked main thread uses almost no CPU,
|
|
16
|
+
so the sleep-detector misreads it).
|
|
17
|
+
|
|
18
|
+
## What already exists
|
|
19
|
+
|
|
20
|
+
The agent already uses this "keep a cached copy instead of re-reading from scratch" pattern elsewhere
|
|
21
|
+
(the cartographer code map serves a cached snapshot instead of recomputing live). This job-history
|
|
22
|
+
file just never got that treatment — it re-read the whole thing every single time.
|
|
23
|
+
|
|
24
|
+
## What's new
|
|
25
|
+
|
|
26
|
+
The job-run history now keeps a **smart in-memory cache**. It remembers the file's size and
|
|
27
|
+
last-modified time:
|
|
28
|
+
- If nothing changed since last time → it returns the cached copy instantly, reading nothing from
|
|
29
|
+
disk.
|
|
30
|
+
- If a new line was appended (the normal case) → it reads ONLY the new bit at the end, not the whole
|
|
31
|
+
13MB.
|
|
32
|
+
- If the file was compacted (shrunk) → it does one full re-read to stay correct.
|
|
33
|
+
|
|
34
|
+
So the per-call full-file read+parse is gone from every hot path. The freeze it caused is eliminated.
|
|
35
|
+
All the existing behavior (how it dedupes, recovers from a corrupt file, etc.) is preserved exactly,
|
|
36
|
+
proven by the test suite.
|
|
37
|
+
|
|
38
|
+
## What you need to decide
|
|
39
|
+
|
|
40
|
+
Nothing. It's a self-contained, low-risk read-path cache, fully covered by tests. One honest note:
|
|
41
|
+
the `job-runs.jsonl` file (and a separate 91MB cartographer file) keep growing without a size limit —
|
|
42
|
+
the cache makes reading them cheap regardless, but capping their growth is a separate cleanup item
|
|
43
|
+
I've flagged to track, not fixed here.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Side-Effects Review — JobRunHistory incremental cache (event-loop freeze fix)
|
|
2
|
+
|
|
3
|
+
**Slug:** `jobrunhistory-incremental-cache` · **Tier:** 1 (focused bug fix, no spec; live-profiler
|
|
4
|
+
root-cause). Parent principle: **Structure beats Willpower** — never block the event loop (the third
|
|
5
|
+
distinct event-loop blocker behind the dashboard "disconnected" flapping, after sync tmux + sync
|
|
6
|
+
keychain reads).
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
`JobRunHistory.readLines()` (`src/scheduler/JobRunHistory.ts`) did `fs.readFileSync` + per-line
|
|
11
|
+
`JSON.parse` of the ENTIRE `.instar/ledger/job-runs.jsonl` (~13MB) on EVERY call — and it is on the
|
|
12
|
+
hot path of `findRun` / `recordCompletion` / `recordReflection` / `recordHandoff` / `query` / `stats`
|
|
13
|
+
/ `allStats` / `getLastHandoff`, all driven by the scheduler every job completion/spawn (~60s
|
|
14
|
+
cadence: health-check, commitment-detection, mentor jobs). A live `/usr/bin/sample` caught the main
|
|
15
|
+
thread in `ReadFileUtf8 → ParseJson → WriteFileUtf8` — a 13–16s event-loop freeze misreported by
|
|
16
|
+
SleepWakeDetector as a ~15s "wake" (the ~0-CPU false-sleep signature). This adds an **incremental
|
|
17
|
+
in-memory cache** of parsed runs keyed on the file's `(size, mtimeMs)`: an unchanged file returns the
|
|
18
|
+
cache with ZERO IO/parse; an append-only growth reads ONLY the appended tail via `fs.readSync` from
|
|
19
|
+
the last offset (O(delta), not O(13MB)); a shrink/rewrite (compaction) triggers one full re-read.
|
|
20
|
+
|
|
21
|
+
## 1. Correctness / behavioral equivalence
|
|
22
|
+
|
|
23
|
+
Existing semantics preserved exactly: append-only, dedup-last-wins, torn-line skip, corrupt-file
|
|
24
|
+
recovery. `appendLine` keeps the cache coherent so the read after a completion is also free;
|
|
25
|
+
`compact()` re-seeds the cache after its rewrite. Verified: 30 original `JobRunHistory` tests + 4 new
|
|
26
|
+
regression tests (cache-hit does zero full-file reads across 75 ops; external append picked up via
|
|
27
|
+
tail-read; torn-line skipped; full re-read on shrink); the full scheduler suite (incl. MigrationLedger,
|
|
28
|
+
reaper, run-record) = 325; 346 total green.
|
|
29
|
+
|
|
30
|
+
## 2. Cache-coherence / multi-writer safety
|
|
31
|
+
|
|
32
|
+
The file has two in-process append writers (this instance + `MigrationLedger.appendMigrationEvent`),
|
|
33
|
+
both append-only. The `(size, mtimeMs)` key + intact-prefix tail-read handles an external append
|
|
34
|
+
correctly (picks up appended rows via tail-read). A shrink (only `compact()` rewrites) forces a full
|
|
35
|
+
re-read, so a compaction can never serve a stale cache. The cache is per-process in-memory (not
|
|
36
|
+
shared) — no cross-process coherence concern (each process reads its own view, same as before).
|
|
37
|
+
|
|
38
|
+
## 3. Fail-safe
|
|
39
|
+
|
|
40
|
+
The new fail paths (cache read, tail-read, stat) fall back to a full re-read or to the prior
|
|
41
|
+
behavior; each genuinely fail-safe catch is tagged `@silent-fallback-ok`. A stat/read error degrades
|
|
42
|
+
to a full re-read (correct result, just not the fast path) — never wrong data, never a crash.
|
|
43
|
+
|
|
44
|
+
## 4. Blast radius
|
|
45
|
+
|
|
46
|
+
One module (`JobRunHistory.ts`) + its test. No API/route change, no schema change, no write-path
|
|
47
|
+
semantics change (`compact()` still rewrites on its existing cadence — see the residual note). No
|
|
48
|
+
new external surface.
|
|
49
|
+
|
|
50
|
+
## 5. Residual (tracked, NOT fixed here — out of scope)
|
|
51
|
+
|
|
52
|
+
`job-runs.jsonl` grows UNBOUNDED to 13MB (and the cartographer `index.json` is 91MB) — a genuine
|
|
53
|
+
Bounded-Accumulation issue. The cache makes READS cheap regardless of size, but `compact()` still
|
|
54
|
+
does a full synchronous ~13MB WRITE on startup, and the file keeps growing. A retention/rotation cap
|
|
55
|
+
on `job-runs.jsonl` (and the cartographer index) is a separate Bounded-Accumulation follow-up worth
|
|
56
|
+
filing — named here so it is not silently dropped.
|
|
57
|
+
|
|
58
|
+
## 6. Rollback
|
|
59
|
+
|
|
60
|
+
Revert the one source file. The change is purely a read-path cache; reverting restores the (slow but
|
|
61
|
+
correct) full-read behavior.
|