@quolu/lattice 0.43.0 → 0.44.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.
- package/package.json +4 -2
- package/sensor/dist/bin/lattice-sensor.js +14 -0
- package/sensor/dist/db/index.d.ts +114 -0
- package/sensor/dist/db/index.d.ts.map +1 -1
- package/sensor/dist/db/index.js +235 -7
- package/sensor/dist/db/index.js.map +1 -1
- package/sensor/dist/db/queries.d.ts +26 -4
- package/sensor/dist/db/queries.d.ts.map +1 -1
- package/sensor/dist/db/queries.js +72 -10
- package/sensor/dist/db/queries.js.map +1 -1
- package/sensor/dist/db/wal-valve.d.ts +15 -2
- package/sensor/dist/db/wal-valve.d.ts.map +1 -1
- package/sensor/dist/db/wal-valve.js +88 -6
- package/sensor/dist/db/wal-valve.js.map +1 -1
- package/sensor/dist/extraction/extraction-version.d.ts +1 -1
- package/sensor/dist/extraction/extraction-version.d.ts.map +1 -1
- package/sensor/dist/extraction/extraction-version.js +5 -1
- package/sensor/dist/extraction/extraction-version.js.map +1 -1
- package/sensor/dist/extraction/function-ref.d.ts.map +1 -1
- package/sensor/dist/extraction/function-ref.js +6 -0
- package/sensor/dist/extraction/function-ref.js.map +1 -1
- package/sensor/dist/extraction/grammars.d.ts.map +1 -1
- package/sensor/dist/extraction/grammars.js +46 -0
- package/sensor/dist/extraction/grammars.js.map +1 -1
- package/sensor/dist/extraction/index.d.ts +11 -1
- package/sensor/dist/extraction/index.d.ts.map +1 -1
- package/sensor/dist/extraction/index.js +50 -11
- package/sensor/dist/extraction/index.js.map +1 -1
- package/sensor/dist/extraction/kernel/decode.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/decode.js +9 -3
- package/sensor/dist/extraction/kernel/decode.js.map +1 -1
- package/sensor/dist/extraction/kernel/index.d.ts +2 -0
- package/sensor/dist/extraction/kernel/index.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/index.js +122 -8
- package/sensor/dist/extraction/kernel/index.js.map +1 -1
- package/sensor/dist/extraction/kernel/layout.d.ts +10 -1
- package/sensor/dist/extraction/kernel/layout.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/layout.js +11 -2
- package/sensor/dist/extraction/kernel/layout.js.map +1 -1
- package/sensor/dist/extraction/kernel/loader.d.ts +42 -0
- package/sensor/dist/extraction/kernel/loader.d.ts.map +1 -1
- package/sensor/dist/extraction/kernel/loader.js.map +1 -1
- package/sensor/dist/extraction/languages/c-cpp.d.ts +13 -0
- package/sensor/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/sensor/dist/extraction/languages/c-cpp.js +809 -13
- package/sensor/dist/extraction/languages/c-cpp.js.map +1 -1
- package/sensor/dist/extraction/store-worker.js +29 -0
- package/sensor/dist/extraction/store-worker.js.map +1 -1
- package/sensor/dist/extraction/tree-sitter.d.ts +4 -1
- package/sensor/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/sensor/dist/extraction/tree-sitter.js +20 -4
- package/sensor/dist/extraction/tree-sitter.js.map +1 -1
- package/sensor/dist/extraction/wasm/tree-sitter-c.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-cpp.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-dart.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-kotlin.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-php.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-ruby.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-rust.wasm +0 -0
- package/sensor/dist/extraction/wasm/tree-sitter-swift.wasm +0 -0
- package/sensor/dist/index.d.ts +3 -1
- package/sensor/dist/index.d.ts.map +1 -1
- package/sensor/dist/index.js +31 -7
- package/sensor/dist/index.js.map +1 -1
- package/sensor/dist/mcp/index.d.ts +24 -0
- package/sensor/dist/mcp/index.d.ts.map +1 -1
- package/sensor/dist/mcp/index.js +51 -2
- package/sensor/dist/mcp/index.js.map +1 -1
- package/sensor/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/sensor/dist/mcp/liveness-watchdog.js +3 -1
- package/sensor/dist/mcp/liveness-watchdog.js.map +1 -1
- package/sensor/dist/mcp/server-instructions.d.ts +1 -1
- package/sensor/dist/mcp/server-instructions.d.ts.map +1 -1
- package/sensor/dist/mcp/server-instructions.js +1 -0
- package/sensor/dist/mcp/server-instructions.js.map +1 -1
- package/sensor/dist/mcp/tools.d.ts +48 -0
- package/sensor/dist/mcp/tools.d.ts.map +1 -1
- package/sensor/dist/mcp/tools.js +231 -4
- package/sensor/dist/mcp/tools.js.map +1 -1
- package/sensor/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/sensor/dist/resolution/c-fnptr-synthesizer.js +561 -127
- package/sensor/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/sensor/dist/resolution/callback-synthesizer.d.ts +1 -1
- package/sensor/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/sensor/dist/resolution/callback-synthesizer.js +80 -11
- package/sensor/dist/resolution/callback-synthesizer.js.map +1 -1
- package/sensor/dist/resolution/import-resolver.d.ts.map +1 -1
- package/sensor/dist/resolution/import-resolver.js +34 -2
- package/sensor/dist/resolution/import-resolver.js.map +1 -1
- package/sensor/dist/resolution/index.d.ts +34 -0
- package/sensor/dist/resolution/index.d.ts.map +1 -1
- package/sensor/dist/resolution/index.js +393 -51
- package/sensor/dist/resolution/index.js.map +1 -1
- package/sensor/dist/resolution/memory-budget.d.ts +48 -0
- package/sensor/dist/resolution/memory-budget.d.ts.map +1 -0
- package/sensor/dist/resolution/memory-budget.js +162 -0
- package/sensor/dist/resolution/memory-budget.js.map +1 -0
- package/sensor/dist/resolution/name-matcher.d.ts +4 -7
- package/sensor/dist/resolution/name-matcher.d.ts.map +1 -1
- package/sensor/dist/resolution/name-matcher.js +256 -91
- package/sensor/dist/resolution/name-matcher.js.map +1 -1
- package/sensor/dist/resolution/resolver-pool.d.ts +41 -1
- package/sensor/dist/resolution/resolver-pool.d.ts.map +1 -1
- package/sensor/dist/resolution/resolver-pool.js +103 -3
- package/sensor/dist/resolution/resolver-pool.js.map +1 -1
- package/sensor/dist/resolution/resolver-worker.js +27 -0
- package/sensor/dist/resolution/resolver-worker.js.map +1 -1
- package/sensor/dist/sync/watcher.d.ts +8 -1
- package/sensor/dist/sync/watcher.d.ts.map +1 -1
- package/sensor/dist/sync/watcher.js +44 -2
- package/sensor/dist/sync/watcher.js.map +1 -1
- package/sensor/dist/types.d.ts +3 -0
- package/sensor/dist/types.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quolu/lattice",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.44.0",
|
|
4
4
|
"description": "Schedulability compiler for multi-agent development: observe real code boundaries, refactor the conflicting seam, recompile the plan for parallel execution",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Quo / クオ at kitepon.dev",
|
|
@@ -74,7 +74,9 @@
|
|
|
74
74
|
"verify:todo-store": "node bin/lattice.mjs todo verify --json",
|
|
75
75
|
"check:cli-surface": "node scripts/verify-cli-surface.mjs",
|
|
76
76
|
"check:open-questions": "node scripts/verify-open-questions.mjs",
|
|
77
|
-
"check:reachability": "node scripts/verify-product-reachability.mjs"
|
|
77
|
+
"check:reachability": "node scripts/verify-product-reachability.mjs",
|
|
78
|
+
"upstream:check": "node scripts/upstream-check.mjs",
|
|
79
|
+
"upstream:sync": "node scripts/upstream-sync.mjs"
|
|
78
80
|
},
|
|
79
81
|
"homepage": "https://github.com/kitepon-rgb/Lattice#readme",
|
|
80
82
|
"bugs": {
|
|
@@ -878,6 +878,7 @@ function main() {
|
|
|
878
878
|
nodeCount: stats.nodeCount,
|
|
879
879
|
edgeCount: stats.edgeCount,
|
|
880
880
|
dbSizeBytes: stats.dbSizeBytes,
|
|
881
|
+
walSizeBytes: stats.walSizeBytes,
|
|
881
882
|
backend,
|
|
882
883
|
journalMode,
|
|
883
884
|
nodesByKind: stats.nodesByKind,
|
|
@@ -933,6 +934,19 @@ function main() {
|
|
|
933
934
|
console.log(` Nodes: ${formatNumber(stats.nodeCount)}`);
|
|
934
935
|
console.log(` Edges: ${formatNumber(stats.edgeCount)}`);
|
|
935
936
|
console.log(` DB Size: ${(stats.dbSizeBytes / 1024 / 1024).toFixed(2)} MB`);
|
|
937
|
+
// Surface the WAL sidecar (#1431): a WAL that dwarfs the DB at rest is
|
|
938
|
+
// the killed-session leak — invisible before this line, it only showed
|
|
939
|
+
// up as a mysteriously full disk. open() above already kicked off the
|
|
940
|
+
// automatic heal for the oversized case.
|
|
941
|
+
if (stats.walSizeBytes > 0) {
|
|
942
|
+
const { WAL_HEAL_THRESHOLD_BYTES } = await Promise.resolve().then(() => __importStar(require('../db/index')));
|
|
943
|
+
const oversized = stats.walSizeBytes > Math.max(WAL_HEAL_THRESHOLD_BYTES, stats.dbSizeBytes);
|
|
944
|
+
const walLabel = `${(stats.walSizeBytes / 1024 / 1024).toFixed(2)} MB`;
|
|
945
|
+
console.log(` WAL Size: ${oversized ? chalk.yellow(walLabel) : walLabel}`);
|
|
946
|
+
if (oversized) {
|
|
947
|
+
warn('The write-ahead log is larger than the database — killed sessions left it behind. It is reclaimed automatically on open; if it persists across runs, another live LatticeSensor process is holding it.');
|
|
948
|
+
}
|
|
949
|
+
}
|
|
936
950
|
// Surface the active SQLite backend (node:sqlite — Node's built-in real
|
|
937
951
|
// SQLite, full WAL + FTS5, no native build).
|
|
938
952
|
const backendLabel = chalk.green(`node:sqlite ${(0, glyphs_1.getGlyphs)().dash} built-in (full WAL)`);
|
|
@@ -6,6 +6,20 @@
|
|
|
6
6
|
import { SqliteDatabase, SqliteBackend } from './sqlite-adapter';
|
|
7
7
|
import { SchemaVersion } from '../types';
|
|
8
8
|
export { SqliteDatabase, SqliteBackend } from './sqlite-adapter';
|
|
9
|
+
/**
|
|
10
|
+
* WAL size past which `healOversizedWal` (run at every `open`) checkpoints and
|
|
11
|
+
* truncates the file, and to which `journal_size_limit` clips the WAL after any
|
|
12
|
+
* resetting checkpoint. A SIGKILL'd process (the #850 liveness watchdog, OOM,
|
|
13
|
+
* crash) can leave an arbitrarily large WAL behind — a whole deferred-sync
|
|
14
|
+
* run's worth (#1248) — and before #1431 no later session ever shrank it: the
|
|
15
|
+
* file just grew, killed session after killed session, until the disk filled
|
|
16
|
+
* (25.6 GB observed). 64 MB is far above anything a healthy open ever sees
|
|
17
|
+
* (a clean close deletes the WAL) yet small enough to cap the leak.
|
|
18
|
+
* Override with `LATTICE_SENSOR_WAL_HEAL_MB` (also feeds `journal_size_limit`).
|
|
19
|
+
*/
|
|
20
|
+
export declare const WAL_HEAL_THRESHOLD_BYTES: number;
|
|
21
|
+
/** Resolve the heal threshold from the env override (MB); invalid ⇒ 64 MB. */
|
|
22
|
+
export declare function resolveWalHealBytes(envVal: string | undefined): number;
|
|
9
23
|
/**
|
|
10
24
|
* Database connection wrapper with lifecycle management
|
|
11
25
|
*/
|
|
@@ -52,6 +66,64 @@ export declare class DatabaseConnection {
|
|
|
52
66
|
* IF NOT EXISTS).
|
|
53
67
|
*/
|
|
54
68
|
endBulkNodeLoad(): void;
|
|
69
|
+
/**
|
|
70
|
+
* NON-UNIQUE secondary indexes maintained per-row during the parse phase's
|
|
71
|
+
* bulk inserts — the store-architecture arc's first lever (plan §4d: dubbo's
|
|
72
|
+
* parse-loop wall is 94% store-writer busy, and the #1320 post-mortem showed
|
|
73
|
+
* statement batching and sorted inserts are ~zero on this path because
|
|
74
|
+
* B-TREE MAINTENANCE is the floor). A fresh init writes every row of
|
|
75
|
+
* nodes/unresolved_refs/files exactly once and reads none of them until
|
|
76
|
+
* resolution, so the parse window can drop all of these and rebuild each in
|
|
77
|
+
* one table scan afterwards — the same measured trade as the resolution
|
|
78
|
+
* phase's edge-index window (2.8s → 1.1s inserting, ~0.3s recreating).
|
|
79
|
+
* Primary keys and UNIQUE constraints stay (upserts and OR-IGNORE dedup
|
|
80
|
+
* conflict on them).
|
|
81
|
+
*/
|
|
82
|
+
private static readonly BULK_PARSE_INDEX_NAMES;
|
|
83
|
+
/**
|
|
84
|
+
* Enter bulk-parse-load mode (FRESH-INIT ONLY — the caller gates on a fresh
|
|
85
|
+
* DB, because an incremental index deletes per-file rows mid-phase and needs
|
|
86
|
+
* the file_path indexes): drop every parse-lane secondary index, including
|
|
87
|
+
* the four non-unique edge indexes (parse inserts contains-edges too; the
|
|
88
|
+
* UNIQUE identity index stays for INSERT OR IGNORE dedup, and its `source`
|
|
89
|
+
* prefix keeps source-keyed reads indexed, as in the edge window). MUST be
|
|
90
|
+
* paired with endBulkParseLoad(); a crash inside the window is healed on the
|
|
91
|
+
* next DatabaseConnection open (schema.sql re-applies CREATE INDEX IF NOT
|
|
92
|
+
* EXISTS).
|
|
93
|
+
*/
|
|
94
|
+
beginBulkParseLoad(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Leave bulk-parse-load mode: recreate everything the window dropped, one
|
|
97
|
+
* table scan per index, with a yield between statements (same
|
|
98
|
+
* liveness-watchdog rationale as endBulkEdgeLoad — at kernel scale each
|
|
99
|
+
* build is a long synchronous scan). The edge indexes are rebuilt here too,
|
|
100
|
+
* so paths that never enter the resolution phase's own bulk-edge window
|
|
101
|
+
* (small runs) are left with a complete schema; the batched resolver's
|
|
102
|
+
* beginBulkEdgeLoad simply re-drops them (DROP IF EXISTS — idempotent).
|
|
103
|
+
*/
|
|
104
|
+
endBulkParseLoad(): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* unresolved_refs secondary indexes NOT read by the batched resolution
|
|
107
|
+
* loop. The loop pages pending refs by keyset (`status='pending' AND id>?`
|
|
108
|
+
* — the status index + PK), deletes resolved rows by id, and parks failures
|
|
109
|
+
* with a status UPDATE; every other ref index serves SYNC-time paths
|
|
110
|
+
* (per-file re-index deletes, name-keyed retry, failed-tail heal). Each
|
|
111
|
+
* per-batch DELETE maintains all of them — the biggest single main-thread
|
|
112
|
+
* stage on the dubbo profile (deletes 1.2s of a 5.4s resolution phase) —
|
|
113
|
+
* so the batched loop drops them and rebuilds at the end, where the table
|
|
114
|
+
* holds only the surviving FAILED refs (resolved rows are gone), making
|
|
115
|
+
* the recreate near-free.
|
|
116
|
+
*/
|
|
117
|
+
private static readonly BULK_REF_INDEX_NAMES;
|
|
118
|
+
/**
|
|
119
|
+
* Enter bulk-ref mode for the batched resolution loop — see
|
|
120
|
+
* BULK_REF_INDEX_NAMES. MUST be paired with endBulkRefLoad(); a crash
|
|
121
|
+
* inside the window heals on the next open (schema.sql re-applies
|
|
122
|
+
* CREATE INDEX IF NOT EXISTS).
|
|
123
|
+
*/
|
|
124
|
+
beginBulkRefLoad(): void;
|
|
125
|
+
/** Leave bulk-ref mode: recreate each index in one scan (yield between). */
|
|
126
|
+
endBulkRefLoad(): Promise<void>;
|
|
55
127
|
/**
|
|
56
128
|
* Names of the NON-UNIQUE edge indexes dropped for a bulk edge load.
|
|
57
129
|
* idx_edges_identity deliberately stays: INSERT OR IGNORE's dedup conflicts
|
|
@@ -136,6 +208,9 @@ export declare class DatabaseConnection {
|
|
|
136
208
|
* journal mode, in-memory DB, or no write since the last checkpoint+reset).
|
|
137
209
|
*/
|
|
138
210
|
getWalSizeBytes(): number;
|
|
211
|
+
/** Size of the main DB file in bytes (0 for in-memory/unknown) — the WAL
|
|
212
|
+
* valve scales its fold caps with it (resolveWalValveMb). */
|
|
213
|
+
getDbFileSizeBytes(): number;
|
|
139
214
|
/** Current `wal_autocheckpoint` interval in pages (0 = disabled). */
|
|
140
215
|
getWalAutocheckpoint(): number;
|
|
141
216
|
/**
|
|
@@ -169,6 +244,45 @@ export declare class DatabaseConnection {
|
|
|
169
244
|
log: number;
|
|
170
245
|
checkpointed: number;
|
|
171
246
|
} | null>;
|
|
247
|
+
/**
|
|
248
|
+
* `PRAGMA wal_checkpoint(TRUNCATE)` — same off-thread pattern as PASSIVE,
|
|
249
|
+
* but on success the WAL FILE is chopped to zero. A completed passive
|
|
250
|
+
* backfill bounds the un-checkpointed backlog, yet the FILE only stops
|
|
251
|
+
* growing when a commit finds ZERO readers holding WAL marks — rare while
|
|
252
|
+
* pool workers cycle, so at kernel scale a fully-backfilled WAL still
|
|
253
|
+
* accreted the phase's whole write volume on disk (§7a.1: 22GB). The valve
|
|
254
|
+
* calls this exactly at a parked barrier (writer parked, pool drained,
|
|
255
|
+
* backfill complete) where the no-reader condition is guaranteed rather
|
|
256
|
+
* than lucky. The worker sets a short busy_timeout so a racing reader
|
|
257
|
+
* degrades this to a no-op (busy=1) instead of a stall.
|
|
258
|
+
*/
|
|
259
|
+
checkpointWalTruncate(): Promise<{
|
|
260
|
+
busy: number;
|
|
261
|
+
log: number;
|
|
262
|
+
checkpointed: number;
|
|
263
|
+
} | null>;
|
|
264
|
+
/**
|
|
265
|
+
* Shrink a leftover oversized WAL (#1431). A SIGKILL'd session — the #850
|
|
266
|
+
* liveness watchdog, OOM, a crash — leaves its WAL on disk, the next session
|
|
267
|
+
* appends to the same file, and (pre-#1431) nothing ever truncated it:
|
|
268
|
+
* PASSIVE checkpoints fold frames but keep the file at its high-water mark,
|
|
269
|
+
* and the one shrinking path (a clean last-connection close) is exactly what
|
|
270
|
+
* the killed world never takes. Unbounded growth until the disk fills.
|
|
271
|
+
*
|
|
272
|
+
* Called fire-and-forget from every `open()`: cost is one statSync when the
|
|
273
|
+
* WAL is small (the overwhelmingly common case). Past the threshold it runs
|
|
274
|
+
* the off-thread PASSIVE fold then TRUNCATE — both on worker connections
|
|
275
|
+
* with a busy_timeout, so a racing writer degrades this to a no-op that the
|
|
276
|
+
* next open retries rather than a stall.
|
|
277
|
+
*/
|
|
278
|
+
healOversizedWal(): Promise<{
|
|
279
|
+
healed: boolean;
|
|
280
|
+
beforeBytes: number;
|
|
281
|
+
afterBytes: number;
|
|
282
|
+
}>;
|
|
283
|
+
private walHeal;
|
|
284
|
+
private runWalHeal;
|
|
285
|
+
private checkpointWal;
|
|
172
286
|
/**
|
|
173
287
|
* Optimize database (vacuum and analyze)
|
|
174
288
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAkB,MAAM,kBAAkB,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
|
package/sensor/dist/db/index.js
CHANGED
|
@@ -38,7 +38,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
38
38
|
};
|
|
39
39
|
})();
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.DATABASE_FILENAME = exports.DatabaseConnection = void 0;
|
|
41
|
+
exports.DATABASE_FILENAME = exports.DatabaseConnection = exports.WAL_HEAL_THRESHOLD_BYTES = void 0;
|
|
42
|
+
exports.resolveWalHealBytes = resolveWalHealBytes;
|
|
42
43
|
exports.getDatabasePath = getDatabasePath;
|
|
43
44
|
exports.removeDatabaseFiles = removeDatabaseFiles;
|
|
44
45
|
const sqlite_adapter_1 = require("./sqlite-adapter");
|
|
@@ -68,6 +69,34 @@ function configureConnection(db) {
|
|
|
68
69
|
db.pragma('cache_size = -64000'); // 64 MB page cache
|
|
69
70
|
db.pragma('temp_store = MEMORY'); // temp tables in memory
|
|
70
71
|
db.pragma('mmap_size = 268435456'); // 256 MB memory-mapped I/O
|
|
72
|
+
// Without a journal_size_limit the -wal file never shrinks below its
|
|
73
|
+
// high-water mark while a connection lives: checkpoints fold frames back but
|
|
74
|
+
// leave the file at full size, so one giant deferred-sync WAL stays giant
|
|
75
|
+
// forever. With the limit set, any checkpoint that resets the WAL truncates
|
|
76
|
+
// the file back down. Killed-process leftovers are handled separately by
|
|
77
|
+
// healOversizedWal() at open. (#1431)
|
|
78
|
+
db.pragma(`journal_size_limit = ${exports.WAL_HEAL_THRESHOLD_BYTES}`);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* WAL size past which `healOversizedWal` (run at every `open`) checkpoints and
|
|
82
|
+
* truncates the file, and to which `journal_size_limit` clips the WAL after any
|
|
83
|
+
* resetting checkpoint. A SIGKILL'd process (the #850 liveness watchdog, OOM,
|
|
84
|
+
* crash) can leave an arbitrarily large WAL behind — a whole deferred-sync
|
|
85
|
+
* run's worth (#1248) — and before #1431 no later session ever shrank it: the
|
|
86
|
+
* file just grew, killed session after killed session, until the disk filled
|
|
87
|
+
* (25.6 GB observed). 64 MB is far above anything a healthy open ever sees
|
|
88
|
+
* (a clean close deletes the WAL) yet small enough to cap the leak.
|
|
89
|
+
* Override with `LATTICE_SENSOR_WAL_HEAL_MB` (also feeds `journal_size_limit`).
|
|
90
|
+
*/
|
|
91
|
+
exports.WAL_HEAL_THRESHOLD_BYTES = resolveWalHealBytes(process.env.LATTICE_SENSOR_WAL_HEAL_MB);
|
|
92
|
+
/** Resolve the heal threshold from the env override (MB); invalid ⇒ 64 MB. */
|
|
93
|
+
function resolveWalHealBytes(envVal) {
|
|
94
|
+
if (envVal !== undefined && envVal !== '') {
|
|
95
|
+
const n = Number(envVal);
|
|
96
|
+
if (Number.isFinite(n) && n > 0)
|
|
97
|
+
return Math.floor(n * 1024 * 1024);
|
|
98
|
+
}
|
|
99
|
+
return 64 * 1024 * 1024;
|
|
71
100
|
}
|
|
72
101
|
/**
|
|
73
102
|
* Database connection wrapper with lifecycle management
|
|
@@ -133,6 +162,9 @@ class DatabaseConnection {
|
|
|
133
162
|
// beginBulkNodeLoad and endBulkNodeLoad): the FTS triggers are missing and
|
|
134
163
|
// nodes_fts is stale. Rebuild + recreate so search stays in sync.
|
|
135
164
|
conn.healBulkNodeLoad();
|
|
165
|
+
// Self-heal a killed session's leftover oversized WAL (#1431) — one
|
|
166
|
+
// statSync when healthy, off-thread checkpoint+truncate when not.
|
|
167
|
+
void conn.healOversizedWal();
|
|
136
168
|
return conn;
|
|
137
169
|
}
|
|
138
170
|
/**
|
|
@@ -163,6 +195,116 @@ class DatabaseConnection {
|
|
|
163
195
|
this.db.exec(`INSERT INTO nodes_fts(nodes_fts) VALUES('rebuild')`);
|
|
164
196
|
this.recreateFtsTriggers();
|
|
165
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* NON-UNIQUE secondary indexes maintained per-row during the parse phase's
|
|
200
|
+
* bulk inserts — the store-architecture arc's first lever (plan §4d: dubbo's
|
|
201
|
+
* parse-loop wall is 94% store-writer busy, and the #1320 post-mortem showed
|
|
202
|
+
* statement batching and sorted inserts are ~zero on this path because
|
|
203
|
+
* B-TREE MAINTENANCE is the floor). A fresh init writes every row of
|
|
204
|
+
* nodes/unresolved_refs/files exactly once and reads none of them until
|
|
205
|
+
* resolution, so the parse window can drop all of these and rebuild each in
|
|
206
|
+
* one table scan afterwards — the same measured trade as the resolution
|
|
207
|
+
* phase's edge-index window (2.8s → 1.1s inserting, ~0.3s recreating).
|
|
208
|
+
* Primary keys and UNIQUE constraints stay (upserts and OR-IGNORE dedup
|
|
209
|
+
* conflict on them).
|
|
210
|
+
*/
|
|
211
|
+
static BULK_PARSE_INDEX_NAMES = [
|
|
212
|
+
'idx_nodes_kind',
|
|
213
|
+
'idx_nodes_name',
|
|
214
|
+
'idx_nodes_qualified_name',
|
|
215
|
+
'idx_nodes_file_path',
|
|
216
|
+
'idx_nodes_language',
|
|
217
|
+
'idx_nodes_file_line',
|
|
218
|
+
'idx_nodes_lower_name',
|
|
219
|
+
'idx_unresolved_from_node',
|
|
220
|
+
'idx_unresolved_name',
|
|
221
|
+
'idx_unresolved_file_path',
|
|
222
|
+
'idx_unresolved_from_name',
|
|
223
|
+
'idx_unresolved_status',
|
|
224
|
+
'idx_unresolved_failed_tail',
|
|
225
|
+
'idx_files_language',
|
|
226
|
+
'idx_files_modified_at',
|
|
227
|
+
];
|
|
228
|
+
/**
|
|
229
|
+
* Enter bulk-parse-load mode (FRESH-INIT ONLY — the caller gates on a fresh
|
|
230
|
+
* DB, because an incremental index deletes per-file rows mid-phase and needs
|
|
231
|
+
* the file_path indexes): drop every parse-lane secondary index, including
|
|
232
|
+
* the four non-unique edge indexes (parse inserts contains-edges too; the
|
|
233
|
+
* UNIQUE identity index stays for INSERT OR IGNORE dedup, and its `source`
|
|
234
|
+
* prefix keeps source-keyed reads indexed, as in the edge window). MUST be
|
|
235
|
+
* paired with endBulkParseLoad(); a crash inside the window is healed on the
|
|
236
|
+
* next DatabaseConnection open (schema.sql re-applies CREATE INDEX IF NOT
|
|
237
|
+
* EXISTS).
|
|
238
|
+
*/
|
|
239
|
+
beginBulkParseLoad() {
|
|
240
|
+
for (const idx of DatabaseConnection.BULK_PARSE_INDEX_NAMES) {
|
|
241
|
+
this.db.exec(`DROP INDEX IF EXISTS ${idx}`);
|
|
242
|
+
}
|
|
243
|
+
this.beginBulkEdgeLoad();
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Leave bulk-parse-load mode: recreate everything the window dropped, one
|
|
247
|
+
* table scan per index, with a yield between statements (same
|
|
248
|
+
* liveness-watchdog rationale as endBulkEdgeLoad — at kernel scale each
|
|
249
|
+
* build is a long synchronous scan). The edge indexes are rebuilt here too,
|
|
250
|
+
* so paths that never enter the resolution phase's own bulk-edge window
|
|
251
|
+
* (small runs) are left with a complete schema; the batched resolver's
|
|
252
|
+
* beginBulkEdgeLoad simply re-drops them (DROP IF EXISTS — idempotent).
|
|
253
|
+
*/
|
|
254
|
+
async endBulkParseLoad() {
|
|
255
|
+
const schemaPath = path.join(__dirname, 'schema.sql');
|
|
256
|
+
const schema = fs.readFileSync(schemaPath, 'utf-8');
|
|
257
|
+
for (const idx of DatabaseConnection.BULK_PARSE_INDEX_NAMES) {
|
|
258
|
+
const m = schema.match(new RegExp(`CREATE INDEX IF NOT EXISTS ${idx}\\b[^;]*;`));
|
|
259
|
+
if (!m)
|
|
260
|
+
throw new Error(`schema.sql: parse index ${idx} not found for bulk-load recreation`);
|
|
261
|
+
this.db.exec(m[0]);
|
|
262
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
263
|
+
}
|
|
264
|
+
await this.endBulkEdgeLoad();
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* unresolved_refs secondary indexes NOT read by the batched resolution
|
|
268
|
+
* loop. The loop pages pending refs by keyset (`status='pending' AND id>?`
|
|
269
|
+
* — the status index + PK), deletes resolved rows by id, and parks failures
|
|
270
|
+
* with a status UPDATE; every other ref index serves SYNC-time paths
|
|
271
|
+
* (per-file re-index deletes, name-keyed retry, failed-tail heal). Each
|
|
272
|
+
* per-batch DELETE maintains all of them — the biggest single main-thread
|
|
273
|
+
* stage on the dubbo profile (deletes 1.2s of a 5.4s resolution phase) —
|
|
274
|
+
* so the batched loop drops them and rebuilds at the end, where the table
|
|
275
|
+
* holds only the surviving FAILED refs (resolved rows are gone), making
|
|
276
|
+
* the recreate near-free.
|
|
277
|
+
*/
|
|
278
|
+
static BULK_REF_INDEX_NAMES = [
|
|
279
|
+
'idx_unresolved_from_node',
|
|
280
|
+
'idx_unresolved_name',
|
|
281
|
+
'idx_unresolved_file_path',
|
|
282
|
+
'idx_unresolved_from_name',
|
|
283
|
+
'idx_unresolved_failed_tail',
|
|
284
|
+
];
|
|
285
|
+
/**
|
|
286
|
+
* Enter bulk-ref mode for the batched resolution loop — see
|
|
287
|
+
* BULK_REF_INDEX_NAMES. MUST be paired with endBulkRefLoad(); a crash
|
|
288
|
+
* inside the window heals on the next open (schema.sql re-applies
|
|
289
|
+
* CREATE INDEX IF NOT EXISTS).
|
|
290
|
+
*/
|
|
291
|
+
beginBulkRefLoad() {
|
|
292
|
+
for (const idx of DatabaseConnection.BULK_REF_INDEX_NAMES) {
|
|
293
|
+
this.db.exec(`DROP INDEX IF EXISTS ${idx}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/** Leave bulk-ref mode: recreate each index in one scan (yield between). */
|
|
297
|
+
async endBulkRefLoad() {
|
|
298
|
+
const schemaPath = path.join(__dirname, 'schema.sql');
|
|
299
|
+
const schema = fs.readFileSync(schemaPath, 'utf-8');
|
|
300
|
+
for (const idx of DatabaseConnection.BULK_REF_INDEX_NAMES) {
|
|
301
|
+
const m = schema.match(new RegExp(`CREATE INDEX IF NOT EXISTS ${idx}\\b[^;]*;`));
|
|
302
|
+
if (!m)
|
|
303
|
+
throw new Error(`schema.sql: ref index ${idx} not found for bulk-load recreation`);
|
|
304
|
+
this.db.exec(m[0]);
|
|
305
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
306
|
+
}
|
|
307
|
+
}
|
|
166
308
|
/**
|
|
167
309
|
* Names of the NON-UNIQUE edge indexes dropped for a bulk edge load.
|
|
168
310
|
* idx_edges_identity deliberately stays: INSERT OR IGNORE's dedup conflicts
|
|
@@ -321,6 +463,18 @@ class DatabaseConnection {
|
|
|
321
463
|
return 0;
|
|
322
464
|
}
|
|
323
465
|
}
|
|
466
|
+
/** Size of the main DB file in bytes (0 for in-memory/unknown) — the WAL
|
|
467
|
+
* valve scales its fold caps with it (resolveWalValveMb). */
|
|
468
|
+
getDbFileSizeBytes() {
|
|
469
|
+
if (!this.dbPath || this.dbPath === ':memory:')
|
|
470
|
+
return 0;
|
|
471
|
+
try {
|
|
472
|
+
return fs.statSync(this.dbPath).size;
|
|
473
|
+
}
|
|
474
|
+
catch {
|
|
475
|
+
return 0;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
324
478
|
/** Current `wal_autocheckpoint` interval in pages (0 = disabled). */
|
|
325
479
|
getWalAutocheckpoint() {
|
|
326
480
|
const v = this.db.pragma('wal_autocheckpoint', { simple: true });
|
|
@@ -356,9 +510,72 @@ class DatabaseConnection {
|
|
|
356
510
|
* never run inline on the main thread).
|
|
357
511
|
*/
|
|
358
512
|
async checkpointWalPassive() {
|
|
513
|
+
return this.checkpointWal('PASSIVE');
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* `PRAGMA wal_checkpoint(TRUNCATE)` — same off-thread pattern as PASSIVE,
|
|
517
|
+
* but on success the WAL FILE is chopped to zero. A completed passive
|
|
518
|
+
* backfill bounds the un-checkpointed backlog, yet the FILE only stops
|
|
519
|
+
* growing when a commit finds ZERO readers holding WAL marks — rare while
|
|
520
|
+
* pool workers cycle, so at kernel scale a fully-backfilled WAL still
|
|
521
|
+
* accreted the phase's whole write volume on disk (§7a.1: 22GB). The valve
|
|
522
|
+
* calls this exactly at a parked barrier (writer parked, pool drained,
|
|
523
|
+
* backfill complete) where the no-reader condition is guaranteed rather
|
|
524
|
+
* than lucky. The worker sets a short busy_timeout so a racing reader
|
|
525
|
+
* degrades this to a no-op (busy=1) instead of a stall.
|
|
526
|
+
*/
|
|
527
|
+
async checkpointWalTruncate() {
|
|
528
|
+
return this.checkpointWal('TRUNCATE');
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Shrink a leftover oversized WAL (#1431). A SIGKILL'd session — the #850
|
|
532
|
+
* liveness watchdog, OOM, a crash — leaves its WAL on disk, the next session
|
|
533
|
+
* appends to the same file, and (pre-#1431) nothing ever truncated it:
|
|
534
|
+
* PASSIVE checkpoints fold frames but keep the file at its high-water mark,
|
|
535
|
+
* and the one shrinking path (a clean last-connection close) is exactly what
|
|
536
|
+
* the killed world never takes. Unbounded growth until the disk fills.
|
|
537
|
+
*
|
|
538
|
+
* Called fire-and-forget from every `open()`: cost is one statSync when the
|
|
539
|
+
* WAL is small (the overwhelmingly common case). Past the threshold it runs
|
|
540
|
+
* the off-thread PASSIVE fold then TRUNCATE — both on worker connections
|
|
541
|
+
* with a busy_timeout, so a racing writer degrades this to a no-op that the
|
|
542
|
+
* next open retries rather than a stall.
|
|
543
|
+
*/
|
|
544
|
+
async healOversizedWal() {
|
|
545
|
+
const beforeBytes = this.getWalSizeBytes();
|
|
546
|
+
if (beforeBytes <= exports.WAL_HEAL_THRESHOLD_BYTES) {
|
|
547
|
+
return { healed: false, beforeBytes, afterBytes: beforeBytes };
|
|
548
|
+
}
|
|
549
|
+
// Single-flight: open() fires this fire-and-forget and callers may also
|
|
550
|
+
// invoke it explicitly. Two concurrent passes DEFEAT each other — each
|
|
551
|
+
// checkpoint worker sees the other as a busy reader and no-ops — so share
|
|
552
|
+
// one in-flight pass instead of racing.
|
|
553
|
+
this.walHeal ??= this.runWalHeal(beforeBytes).finally(() => { this.walHeal = null; });
|
|
554
|
+
return this.walHeal;
|
|
555
|
+
}
|
|
556
|
+
walHeal = null;
|
|
557
|
+
async runWalHeal(beforeBytes) {
|
|
558
|
+
// A racing reader/writer (another session healing the same file, a query
|
|
559
|
+
// pool warming up) degrades a checkpoint pass to a busy no-op — retry a
|
|
560
|
+
// few times before leaving the rest to the next open.
|
|
561
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
562
|
+
if (attempt > 0)
|
|
563
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
564
|
+
await this.checkpointWalPassive();
|
|
565
|
+
await this.checkpointWalTruncate();
|
|
566
|
+
if (this.getWalSizeBytes() <= exports.WAL_HEAL_THRESHOLD_BYTES)
|
|
567
|
+
break;
|
|
568
|
+
}
|
|
569
|
+
const afterBytes = this.getWalSizeBytes();
|
|
570
|
+
if (process.env.LATTICE_SENSOR_WAL_VALVE_DEBUG) {
|
|
571
|
+
console.error(`[wal-heal] oversized WAL at open: ${Math.round(beforeBytes / (1024 * 1024))}MB -> ${Math.round(afterBytes / (1024 * 1024))}MB`);
|
|
572
|
+
}
|
|
573
|
+
return { healed: afterBytes < beforeBytes, beforeBytes, afterBytes };
|
|
574
|
+
}
|
|
575
|
+
async checkpointWal(mode) {
|
|
359
576
|
if (!this.dbPath || this.dbPath === ':memory:') {
|
|
360
577
|
try {
|
|
361
|
-
const row = this.db.prepare(
|
|
578
|
+
const row = this.db.prepare(`PRAGMA wal_checkpoint(${mode})`).get();
|
|
362
579
|
return row ? { busy: Number(row.busy), log: Number(row.log), checkpointed: Number(row.checkpointed) } : null;
|
|
363
580
|
}
|
|
364
581
|
catch {
|
|
@@ -370,13 +587,18 @@ class DatabaseConnection {
|
|
|
370
587
|
const workerSource = `
|
|
371
588
|
const { workerData, parentPort } = require('node:worker_threads');
|
|
372
589
|
let row = null;
|
|
590
|
+
let err = null;
|
|
373
591
|
try {
|
|
374
592
|
const { DatabaseSync } = require('node:sqlite');
|
|
375
593
|
const db = new DatabaseSync(workerData.dbPath);
|
|
376
|
-
|
|
594
|
+
const mode = workerData.mode === 'TRUNCATE' ? 'TRUNCATE' : 'PASSIVE';
|
|
595
|
+
try {
|
|
596
|
+
if (mode === 'TRUNCATE') db.exec('PRAGMA busy_timeout = 2000');
|
|
597
|
+
row = db.prepare('PRAGMA wal_checkpoint(' + mode + ')').get();
|
|
598
|
+
} catch (e) { err = String(e && e.message || e); }
|
|
377
599
|
try { db.close(); } catch {}
|
|
378
|
-
} catch {}
|
|
379
|
-
parentPort.postMessage({ row });
|
|
600
|
+
} catch (e) { err = err || String(e && e.message || e); }
|
|
601
|
+
parentPort.postMessage({ row, err });
|
|
380
602
|
`;
|
|
381
603
|
return await new Promise((resolve) => {
|
|
382
604
|
let settled = false;
|
|
@@ -387,8 +609,14 @@ class DatabaseConnection {
|
|
|
387
609
|
resolve(row ? { busy: Number(row.busy), log: Number(row.log), checkpointed: Number(row.checkpointed) } : null);
|
|
388
610
|
};
|
|
389
611
|
try {
|
|
390
|
-
const worker = new Worker(workerSource, { eval: true, workerData: { dbPath: this.dbPath } });
|
|
391
|
-
worker.once('message', (m) => {
|
|
612
|
+
const worker = new Worker(workerSource, { eval: true, workerData: { dbPath: this.dbPath, mode } });
|
|
613
|
+
worker.once('message', (m) => {
|
|
614
|
+
if (m?.err && process.env.LATTICE_SENSOR_WAL_VALVE_DEBUG) {
|
|
615
|
+
console.error(`[wal-valve] checkpoint worker (${mode}): ${m.err}`);
|
|
616
|
+
}
|
|
617
|
+
void worker.terminate();
|
|
618
|
+
finish(m?.row ?? null);
|
|
619
|
+
});
|
|
392
620
|
worker.once('error', () => { void worker.terminate(); finish(null); });
|
|
393
621
|
worker.once('exit', () => finish(null));
|
|
394
622
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,19 @@ export declare class QueryBuilder {
|
|
|
24
24
|
*/
|
|
25
25
|
private runBatched;
|
|
26
26
|
constructor(db: SqliteDatabase);
|
|
27
|
+
/**
|
|
28
|
+
* Swap the underlying connection in place. Used by pool workers'
|
|
29
|
+
* connection recycling (plan §7a.6, writes-under-readers): a long-lived
|
|
30
|
+
* read connection pins WAL checkpoint progress, and the deep WAL that
|
|
31
|
+
* accumulates behind it taxes every main-thread B-tree page operation
|
|
32
|
+
* (deletes measured 42.6s → 118.8s from 0 to 4 attached readers on
|
|
33
|
+
* identical hardware). Workers therefore close and reopen their read-only
|
|
34
|
+
* connection at the pool-idle boundary; everything above the connection —
|
|
35
|
+
* this QueryBuilder, the resolver and its warm caches — survives, and only
|
|
36
|
+
* connection-derived state (prepared statements) resets, re-preparing
|
|
37
|
+
* lazily on next use.
|
|
38
|
+
*/
|
|
39
|
+
rebind(db: SqliteDatabase): void;
|
|
27
40
|
/** Set the normalized project-name tokens used to down-weight non-discriminative
|
|
28
41
|
* query words in path scoring (#720). Called once when the project opens. */
|
|
29
42
|
setProjectNameTokens(tokens: Set<string>): void;
|
|
@@ -449,6 +462,15 @@ export declare class QueryBuilder {
|
|
|
449
462
|
* has been attempted.
|
|
450
463
|
*/
|
|
451
464
|
getUnresolvedReferencesBatch(offset: number, limit: number): UnresolvedReference[];
|
|
465
|
+
/**
|
|
466
|
+
* Keyset variant of {@link getUnresolvedReferencesBatch} for the batched
|
|
467
|
+
* resolution loop: seek past the last-seen row id instead of OFFSET-walking.
|
|
468
|
+
* OFFSET reads re-scan the accumulated failed-row prefix on every batch —
|
|
469
|
+
* O(failed rows) per read, measured at 54.6s of the kernel-scale batch loop
|
|
470
|
+
* (§7a.2) — while the seek is O(batch) forever. `id` is the rowid alias, so
|
|
471
|
+
* the enumeration order is identical to the OFFSET reader's.
|
|
472
|
+
*/
|
|
473
|
+
getUnresolvedReferencesBatchAfter(afterRowId: number, limit: number): UnresolvedReference[];
|
|
452
474
|
/**
|
|
453
475
|
* Get all tracked file paths (lightweight — no full FileRecord objects)
|
|
454
476
|
*/
|
|
@@ -495,7 +517,7 @@ export declare class QueryBuilder {
|
|
|
495
517
|
fromNodeId: string;
|
|
496
518
|
referenceName: string;
|
|
497
519
|
referenceKind: string;
|
|
498
|
-
}>):
|
|
520
|
+
}>): number;
|
|
499
521
|
/**
|
|
500
522
|
* Delete unresolved-ref rows by row id — the precise cleanup for refs a
|
|
501
523
|
* resolution pass actually processed. The key-tuple variant above also
|
|
@@ -504,7 +526,7 @@ export declare class QueryBuilder {
|
|
|
504
526
|
* caller's same-named call sites, the later sites' edges were silently never
|
|
505
527
|
* created (#1269).
|
|
506
528
|
*/
|
|
507
|
-
deleteReferencesByRowIds(rowIds: number[]):
|
|
529
|
+
deleteReferencesByRowIds(rowIds: number[]): number;
|
|
508
530
|
/**
|
|
509
531
|
* Mark refs a completed resolution pass could not resolve as status='failed'
|
|
510
532
|
* instead of deleting them (#1240). Failed rows are invisible to the pending
|
|
@@ -518,7 +540,7 @@ export declare class QueryBuilder {
|
|
|
518
540
|
fromNodeId: string;
|
|
519
541
|
referenceName: string;
|
|
520
542
|
referenceKind: string;
|
|
521
|
-
}>):
|
|
543
|
+
}>): number;
|
|
522
544
|
/**
|
|
523
545
|
* Park refs as status='failed' by row id — the precise counterpart of
|
|
524
546
|
* markReferencesFailed, for the same reason as deleteReferencesByRowIds:
|
|
@@ -530,7 +552,7 @@ export declare class QueryBuilder {
|
|
|
530
552
|
markReferencesFailedByRowIds(refs: Array<{
|
|
531
553
|
rowId: number;
|
|
532
554
|
referenceName: string;
|
|
533
|
-
}>):
|
|
555
|
+
}>): number;
|
|
534
556
|
/**
|
|
535
557
|
* Failed refs whose name tail matches one of the given symbol names — the
|
|
536
558
|
* candidates a sync should retry after files carrying those names changed
|