mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-26 09:02:11 +03:00
fix(catalog): keep large builds event-loop responsive (#11367)
Merged via consolidated batch validation (worktree `.claude/worktrees/batch-0824d`, 11-PR video-bridge/catalog/ops batch, tip `dafb4ae8`). Fixes the #9147 catalog-scale event-loop regression: reuses one build-local capability snapshot, yields cooperatively during catalog/virtual-pool construction, reads only persisted TTL settings. Static gates: typecheck:core, file-size, changelog-integrity, complexity, cognitive-complexity all green. Own regression test (tests/unit/9147-catalog-eventloop-yield.test.ts) reproduced the RED→GREEN transition in isolated runs per the PR's own evidence; under current shared-devbox load (10-15, multiple parallel sessions) the test intermittently reports INFRA-RED exactly as the PR body pre-disclosed (documented starvation signature, not a code defect). Thanks for the careful RED/GREEN + INFRA-RED discipline.
This commit is contained in:
committed by
GitHub
parent
dafb4ae808
commit
12b8df02dd
@@ -58,7 +58,7 @@ test.after(async () => {
|
||||
fs.rmSync(TEST_DATA_DIR, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
test("#9147 — catalog build at catalog-scale must not pin the event loop for a long stretch", async () => {
|
||||
test("#9147 — catalog build at catalog-scale must not pin the event loop for a long stretch", async (t) => {
|
||||
await seedCatalogScaleDataset();
|
||||
const req = new Request("http://localhost/v1/models");
|
||||
let settled = false;
|
||||
@@ -79,6 +79,9 @@ test("#9147 — catalog build at catalog-scale must not pin the event loop for a
|
||||
}
|
||||
const res = await buildPromise;
|
||||
assert.equal(res.status, 200);
|
||||
t.diagnostic(
|
||||
`maximum event-loop gap: ${maxGapMs.toFixed(1)}ms across ${ticks} interleaved ticks`
|
||||
);
|
||||
// 150ms is tight on GitHub-hosted unit shards (`--test-concurrency=4`):
|
||||
// sibling tests share the event loop, so a healthy yielding builder still
|
||||
// records 200–260ms gaps. 400ms still fails a true pin (seconds) while
|
||||
@@ -89,4 +92,9 @@ test("#9147 — catalog build at catalog-scale must not pin the event loop for a
|
||||
`catalog for ${CONNECTION_COUNT} connections / ${CONNECTION_COUNT * MODELS_PER_CONNECTION} models ` +
|
||||
`(${ticks} interleaved ticks observed) — the builder is not yielding to the event loop`
|
||||
);
|
||||
const body = (await res.json()) as { data?: Array<{ root?: string }> };
|
||||
assert.ok(
|
||||
body.data?.some((model) => model.root === "probe-model-59-11"),
|
||||
"the responsiveness probe must still traverse and return the last seeded catalog model"
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user