@harperfast/harper 5.0.25 → 5.0.26
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/resources/RocksTransactionLogStore.js +44 -26
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.js +52 -6
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.d.ts +11 -0
- package/dist/resources/auditStore.js +13 -0
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/replayLogs.js +19 -0
- package/dist/resources/replayLogs.js.map +1 -1
- package/package.json +2 -2
- package/resources/RocksTransactionLogStore.ts +44 -26
- package/resources/Table.ts +60 -11
- package/resources/auditStore.ts +13 -0
- package/resources/replayLogs.ts +20 -0
- package/studio/web/assets/{index-CmtPP0YO.js → index-tpQxqcfB.js} +5 -5
- package/studio/web/assets/{index-CmtPP0YO.js.map → index-tpQxqcfB.js.map} +1 -1
- package/studio/web/assets/{index.lazy-C8jvGtlu.js → index.lazy-Cr82BZoJ.js} +2 -2
- package/studio/web/assets/{index.lazy-C8jvGtlu.js.map → index.lazy-Cr82BZoJ.js.map} +1 -1
- package/studio/web/assets/{profile-O0DYlJUv.js → profile-CfwQpiKM.js} +2 -2
- package/studio/web/assets/{profile-O0DYlJUv.js.map → profile-CfwQpiKM.js.map} +1 -1
- package/studio/web/assets/{status-BIlJkJby.js → status-fDIUHt_X.js} +2 -2
- package/studio/web/assets/{status-BIlJkJby.js.map → status-fDIUHt_X.js.map} +1 -1
- package/studio/web/index.html +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RocksDatabase } from '@harperfast/rocksdb-js';
|
|
1
2
|
export type AuditRecord = {
|
|
2
3
|
version?: number;
|
|
3
4
|
localTime?: number;
|
|
@@ -43,6 +44,16 @@ export declare function openAuditStore(rootStore: any): any;
|
|
|
43
44
|
export declare function removeAuditEntry(auditStore: any, auditRecord: AuditRecord): Promise<void>;
|
|
44
45
|
export declare function getLastRemoved(auditStore: any): number;
|
|
45
46
|
export declare function setAuditRetention(retentionTime: any, defaultDelay?: number): void;
|
|
47
|
+
/**
|
|
48
|
+
* One-shot purge of transaction-log files already older than the audit retention window,
|
|
49
|
+
* intended to run during startup/recovery before transaction-log replay. The steady-state
|
|
50
|
+
* cleanup loop (scheduleAuditCleanup) only starts once a worker reaches steady state, so a node
|
|
51
|
+
* that crash-loops during recovery never purges and its aged backlog only grows, enlarging the
|
|
52
|
+
* next replay/full-copy. Safe to run before replay: the native purge only deletes log files
|
|
53
|
+
* entirely before the last-flushed-to-RocksDB position, so unflushed entries that replay still
|
|
54
|
+
* needs are never removed. Returns the names of the purged files. See harper#1115.
|
|
55
|
+
*/
|
|
56
|
+
export declare function purgeAgedLogs(rootStore: RocksDatabase): string[];
|
|
46
57
|
export declare const ACTION_32_BIT = 14;
|
|
47
58
|
export declare const ACTION_64_BIT = 15;
|
|
48
59
|
/** Used to indicate we have received a remote local time update */
|
|
@@ -38,6 +38,7 @@ exports.openAuditStore = openAuditStore;
|
|
|
38
38
|
exports.removeAuditEntry = removeAuditEntry;
|
|
39
39
|
exports.getLastRemoved = getLastRemoved;
|
|
40
40
|
exports.setAuditRetention = setAuditRetention;
|
|
41
|
+
exports.purgeAgedLogs = purgeAgedLogs;
|
|
41
42
|
exports.createAuditEntry = createAuditEntry;
|
|
42
43
|
exports.readAuditEntry = readAuditEntry;
|
|
43
44
|
const ordered_binary_1 = require("ordered-binary");
|
|
@@ -276,6 +277,18 @@ function setAuditRetention(retentionTime, defaultDelay = DEFAULT_AUDIT_CLEANUP_D
|
|
|
276
277
|
exports.auditRetention = retentionTime;
|
|
277
278
|
DEFAULT_AUDIT_CLEANUP_DELAY = defaultDelay;
|
|
278
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* One-shot purge of transaction-log files already older than the audit retention window,
|
|
282
|
+
* intended to run during startup/recovery before transaction-log replay. The steady-state
|
|
283
|
+
* cleanup loop (scheduleAuditCleanup) only starts once a worker reaches steady state, so a node
|
|
284
|
+
* that crash-loops during recovery never purges and its aged backlog only grows, enlarging the
|
|
285
|
+
* next replay/full-copy. Safe to run before replay: the native purge only deletes log files
|
|
286
|
+
* entirely before the last-flushed-to-RocksDB position, so unflushed entries that replay still
|
|
287
|
+
* needs are never removed. Returns the names of the purged files. See harper#1115.
|
|
288
|
+
*/
|
|
289
|
+
function purgeAgedLogs(rootStore) {
|
|
290
|
+
return rootStore.purgeLogs({ before: Date.now() - exports.auditRetention });
|
|
291
|
+
}
|
|
279
292
|
const HAS_RECORD = 16;
|
|
280
293
|
const HAS_PARTIAL_RECORD = 32; // will be used for CRDTs
|
|
281
294
|
const PUT = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditStore.js","sourceRoot":"","sources":["../../resources/auditStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auditStore.js","sourceRoot":"","sources":["../../resources/auditStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ const DatabaseTransaction_ts_1 = require("./DatabaseTransaction.js");
|
|
|
40
40
|
const node_worker_threads_1 = require("node:worker_threads");
|
|
41
41
|
const RequestTarget_ts_1 = require("./RequestTarget.js");
|
|
42
42
|
const replayLogsGuards_ts_1 = require("./replayLogsGuards.js");
|
|
43
|
+
const auditStore_ts_1 = require("./auditStore.js");
|
|
43
44
|
let warnedReplayHappening = false;
|
|
44
45
|
function replayLogs(rootStore, tables) {
|
|
45
46
|
if (!node_worker_threads_1.isMainThread)
|
|
@@ -50,6 +51,24 @@ function replayLogs(rootStore, tables) {
|
|
|
50
51
|
});
|
|
51
52
|
if (!acquired)
|
|
52
53
|
return;
|
|
54
|
+
// Shed transaction-log files already older than the audit retention window before
|
|
55
|
+
// replaying. A node that crash-loops during recovery never reaches the steady-state
|
|
56
|
+
// cleanup loop, so without this its aged backlog only grows and enlarges each subsequent
|
|
57
|
+
// replay/full-copy. The native purge keeps any file holding unflushed entries, so this
|
|
58
|
+
// never drops data the replay below still needs. See harper#1115.
|
|
59
|
+
// Purging is a non-critical optimization, so a purge failure (filesystem/permission/native
|
|
60
|
+
// error) must never block the critical replay path that follows — especially here, during
|
|
61
|
+
// the recovery this fix is meant to harden.
|
|
62
|
+
let purgedLogs = [];
|
|
63
|
+
try {
|
|
64
|
+
purgedLogs = (0, auditStore_ts_1.purgeAgedLogs)(rootStore);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
logger.warn(`Failed to purge aged transaction logs before replay in ${rootStore.databaseName} database`, error);
|
|
68
|
+
}
|
|
69
|
+
if (purgedLogs.length > 0) {
|
|
70
|
+
logger.info(`Purged ${purgedLogs.length} aged transaction-log file(s) before replay in ${rootStore.databaseName} database`);
|
|
71
|
+
}
|
|
53
72
|
const tableById = new Map();
|
|
54
73
|
for (const tableName in tables) {
|
|
55
74
|
const table = tables[tableName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replayLogs.js","sourceRoot":"","sources":["../../resources/replayLogs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"replayLogs.js","sourceRoot":"","sources":["../../resources/replayLogs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@harperfast/harper",
|
|
3
3
|
"description": "Harper is an open-source Node.js performance platform that unifies database, cache, application, and messaging layers into one in-memory process.",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.26",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://harper.fast",
|
|
7
7
|
"bugs": {
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
"@fastify/cors": "^11.2.0",
|
|
164
164
|
"@fastify/static": "^9.1.3",
|
|
165
165
|
"@harperfast/extended-iterable": "^1.0.1",
|
|
166
|
-
"@harperfast/rocksdb-js": "^1.4.
|
|
166
|
+
"@harperfast/rocksdb-js": "^1.4.2",
|
|
167
167
|
"@turf/area": "6.5.0",
|
|
168
168
|
"@turf/boolean-contains": "6.5.0",
|
|
169
169
|
"@turf/boolean-disjoint": "6.5.0",
|
|
@@ -236,35 +236,53 @@ export class RocksTransactionLogStore extends EventEmitter {
|
|
|
236
236
|
|
|
237
237
|
aggregateIterator = {
|
|
238
238
|
next() {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
239
|
+
// We get up to two passes: the normal find-earliest pass, plus one retry that
|
|
240
|
+
// forces nextEntries.length = 0 to re-poll every per-log iterator (each picks
|
|
241
|
+
// up new entries when its log file has grown since the last `.next()` returned
|
|
242
|
+
// done) and to let updateIterators pick up any new logs added since the last
|
|
243
|
+
// call (e.g. a peer's log created by replication). Without the retry, a
|
|
244
|
+
// `{ done: true }` slot in nextEntries carried over from a previous call
|
|
245
|
+
// persists across a burst of commits that all coalesce into a single
|
|
246
|
+
// notifyFromTransactionData wake-up — the find-earliest loop keeps skipping
|
|
247
|
+
// the stale done slot, never re-polls the underlying iterator, and the entire
|
|
248
|
+
// burst is silently dropped (no further 'committed' arrives to unstick us).
|
|
249
|
+
// This was the fingerprint of the cloneNode topology bug where peer rows
|
|
250
|
+
// landed in hdb_nodes via system-DB replication but subscribeToNodeUpdates
|
|
251
|
+
// never received the events, so onNodeUpdate never opened replication
|
|
252
|
+
// connections to those peers.
|
|
253
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
254
|
+
if (nextEntries.length === 0) {
|
|
255
|
+
// on the first iteration and any time we finished all the iterators,
|
|
256
|
+
// we re-retrieve all the next entries (in case we are resuming after
|
|
257
|
+
// being done)
|
|
258
|
+
updateIterators();
|
|
259
|
+
}
|
|
260
|
+
let earliest: TransactionEntry;
|
|
261
|
+
let earliestIndex = -1;
|
|
262
|
+
for (let i = 0; i < nextEntries.length; i++) {
|
|
263
|
+
const result = nextEntries[i];
|
|
264
|
+
// skip any that are done
|
|
265
|
+
if (result.done) {
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
// find the earliest one that is not done
|
|
269
|
+
const next = result.value;
|
|
270
|
+
if (!earliest || earliest.timestamp > next.timestamp) {
|
|
271
|
+
earliest = next;
|
|
272
|
+
earliestIndex = i;
|
|
273
|
+
}
|
|
251
274
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
275
|
+
if (earliestIndex >= 0) {
|
|
276
|
+
// replace the entry with the next one from the iterator we pulled from
|
|
277
|
+
nextEntries[earliestIndex] = iterators[earliestIndex].next();
|
|
278
|
+
return {
|
|
279
|
+
value: onlyKeys ? earliest.timestamp : earliest,
|
|
280
|
+
done: false,
|
|
281
|
+
};
|
|
257
282
|
}
|
|
283
|
+
// All current entries are done; force the retry pass to re-poll
|
|
284
|
+
nextEntries.length = 0;
|
|
258
285
|
}
|
|
259
|
-
if (earliestIndex >= 0) {
|
|
260
|
-
// replace the entry with the next one from the iterator we pulled from
|
|
261
|
-
nextEntries[earliestIndex] = iterators[earliestIndex].next();
|
|
262
|
-
return {
|
|
263
|
-
value: onlyKeys ? earliest.timestamp : earliest,
|
|
264
|
-
done: false,
|
|
265
|
-
};
|
|
266
|
-
} // else we are done
|
|
267
|
-
nextEntries.length = 0; // reset so if this iterator is restarted, we can re-query
|
|
268
286
|
return { value: undefined, done: true };
|
|
269
287
|
},
|
|
270
288
|
addLog(logName: string) {
|
package/resources/Table.ts
CHANGED
|
@@ -100,6 +100,11 @@ const TEST_WRITE_KEY_BUFFER = Buffer.allocUnsafeSlow(8192);
|
|
|
100
100
|
const MAX_KEY_BYTES = 1978;
|
|
101
101
|
const EVENT_HIGH_WATER_MARK = 100;
|
|
102
102
|
const REPLAY_YIELD_INTERVAL = 100; // yield to the event loop every N records during subscription replay
|
|
103
|
+
// Cap for the out-of-order write reconciliation audit-chain walk in commit(). A pathologically deep
|
|
104
|
+
// audit history (e.g. a replication full-copy of a large-history database) would otherwise walk and
|
|
105
|
+
// buffer the entire backward chain per record, synchronously, on every worker — pinning the JS heap
|
|
106
|
+
// until the worker OOMs (issue #1114). Beyond this depth we fall back to a bounded reconciliation.
|
|
107
|
+
const MAX_OUT_OF_ORDER_AUDIT_DEPTH = 1000;
|
|
103
108
|
const FULL_PERMISSIONS = {
|
|
104
109
|
read: true,
|
|
105
110
|
insert: true,
|
|
@@ -1739,8 +1744,18 @@ export function makeTable(options) {
|
|
|
1739
1744
|
}
|
|
1740
1745
|
let addedAuditRef = false;
|
|
1741
1746
|
let nextRef: { localTime: number; nodeId: number };
|
|
1747
|
+
let walkSteps = 0;
|
|
1748
|
+
let auditWalkCapped = false;
|
|
1742
1749
|
do {
|
|
1743
1750
|
while (localTime > txnTime || (auditedVersion >= txnTime && localTime > 0)) {
|
|
1751
|
+
// Bound the walk only for RocksDB, where the OOM was observed (issue #1114): each step
|
|
1752
|
+
// is a transaction-log range scan + msgpackr decode, and the per-node logs can be huge.
|
|
1753
|
+
// LMDB audit entries are keyed by local audit time (not version), so the duplicate
|
|
1754
|
+
// shortcut below would not apply — keep its exact, unbounded reconciliation.
|
|
1755
|
+
if (isRocksDB && ++walkSteps > MAX_OUT_OF_ORDER_AUDIT_DEPTH) {
|
|
1756
|
+
auditWalkCapped = true;
|
|
1757
|
+
break;
|
|
1758
|
+
}
|
|
1744
1759
|
const auditRecord = auditStore.get(localTime, tableId, id, nodeId);
|
|
1745
1760
|
if (!auditRecord) break;
|
|
1746
1761
|
auditedVersion = auditRecord.version;
|
|
@@ -1768,8 +1783,11 @@ export function makeTable(options) {
|
|
|
1768
1783
|
}
|
|
1769
1784
|
if (auditRecord.type === 'patch') {
|
|
1770
1785
|
logger.debug?.('out of order patch will be applied', id, auditRecord);
|
|
1771
|
-
//
|
|
1772
|
-
|
|
1786
|
+
// Materialize the patch value now and keep only { version, value } rather than the
|
|
1787
|
+
// audit record itself, so its backing transaction-log buffer and decoders can be
|
|
1788
|
+
// reclaimed immediately. Only these two fields are needed for the ordered fold below;
|
|
1789
|
+
// retaining the full records is what pins the heap on a deep chain (issue #1114).
|
|
1790
|
+
succeedingUpdates.push({ version: auditedVersion, value: auditRecord.getValue(primaryStore) });
|
|
1773
1791
|
auditRecordToStore = recordUpdate; // use the original update for the audit record
|
|
1774
1792
|
} else if (auditRecord.type === 'put' || auditRecord.type === 'delete') {
|
|
1775
1793
|
// There is newer full record update, so this incremental update is completely superseded
|
|
@@ -1801,6 +1819,7 @@ export function makeTable(options) {
|
|
|
1801
1819
|
nodeId = auditRecord.previousNodeId;
|
|
1802
1820
|
}
|
|
1803
1821
|
// Check if we need to scan additional audit refs from this record
|
|
1822
|
+
if (auditWalkCapped) break;
|
|
1804
1823
|
nextRef = auditRefsToVisit.shift();
|
|
1805
1824
|
if (nextRef) {
|
|
1806
1825
|
localTime = auditedVersion = nextRef.localTime;
|
|
@@ -1808,7 +1827,7 @@ export function makeTable(options) {
|
|
|
1808
1827
|
logger.debug?.('Following additional audit ref to continue scanning', { localTime, nodeId });
|
|
1809
1828
|
}
|
|
1810
1829
|
} while (nextRef);
|
|
1811
|
-
if (!localTime) {
|
|
1830
|
+
if (!localTime && !auditWalkCapped) {
|
|
1812
1831
|
// if we reached the end of the audit trail, we can just apply the update
|
|
1813
1832
|
logger.debug?.(
|
|
1814
1833
|
'No further audit history, applying incremental updates based on available history',
|
|
@@ -1817,15 +1836,45 @@ export function makeTable(options) {
|
|
|
1817
1836
|
existingEntry
|
|
1818
1837
|
);
|
|
1819
1838
|
}
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1839
|
+
if (auditWalkCapped) {
|
|
1840
|
+
// The out-of-order audit chain exceeded MAX_OUT_OF_ORDER_AUDIT_DEPTH (a pathologically deep
|
|
1841
|
+
// history, seen during a replication full-copy of a large-history database — issue #1114).
|
|
1842
|
+
// Walking and buffering the whole chain per record OOMs the worker, so we stopped at the cap
|
|
1843
|
+
// and reconcile against only the most recent MAX_OUT_OF_ORDER_AUDIT_DEPTH updates (the fold
|
|
1844
|
+
// below). That is an approximation for histories deeper than the cap — updates older than the
|
|
1845
|
+
// retained window are not layered in — but the authoritative full-copy record restores exact
|
|
1846
|
+
// convergence. Because we stopped before reaching txnTime, the inline duplicate detection in
|
|
1847
|
+
// the walk never ran; full-copy audit-replay re-delivers writes, and re-applying one would
|
|
1848
|
+
// double-apply its commutative ops, so rule that out here with a single O(1) lookup at txnTime
|
|
1849
|
+
// (RocksDB audit logs are keyed by version, and the cap is RocksDB-only).
|
|
1850
|
+
logger.warn?.(
|
|
1851
|
+
'Out-of-order audit reconciliation exceeded depth cap; reconciling against most recent updates only',
|
|
1852
|
+
{
|
|
1853
|
+
table: tableName,
|
|
1854
|
+
id,
|
|
1855
|
+
depth: walkSteps,
|
|
1856
|
+
}
|
|
1828
1857
|
);
|
|
1858
|
+
const duplicate = auditStore.get(txnTime, tableId, id, options?.nodeId);
|
|
1859
|
+
if (
|
|
1860
|
+
duplicate &&
|
|
1861
|
+
duplicate.version === txnTime &&
|
|
1862
|
+
precedesExistingVersion(
|
|
1863
|
+
txnTime,
|
|
1864
|
+
{ version: txnTime, localTime: txnTime, key: id, nodeId: duplicate.nodeId },
|
|
1865
|
+
options?.nodeId
|
|
1866
|
+
) === 0
|
|
1867
|
+
) {
|
|
1868
|
+
write.skipped = true;
|
|
1869
|
+
return; // duplicate write already applied
|
|
1870
|
+
}
|
|
1871
|
+
}
|
|
1872
|
+
// Fold the retained succeeding updates (the full chain, or — when capped — the most recent
|
|
1873
|
+
// window) onto this older write so newer fields win; for a capped walk this layers in only
|
|
1874
|
+
// what we collected before the cap.
|
|
1875
|
+
succeedingUpdates.sort((a, b) => a.version - b.version); // order the patches
|
|
1876
|
+
for (const { version: patchVersion, value: newerUpdate } of succeedingUpdates) {
|
|
1877
|
+
logger.debug?.('Rebuilding update with future patch:', new Date(patchVersion), newerUpdate);
|
|
1829
1878
|
incrementalUpdateToApply = rebuildUpdateBefore(
|
|
1830
1879
|
incrementalUpdateToApply ?? recordUpdate,
|
|
1831
1880
|
newerUpdate,
|
package/resources/auditStore.ts
CHANGED
|
@@ -259,6 +259,19 @@ export function setAuditRetention(retentionTime, defaultDelay = DEFAULT_AUDIT_CL
|
|
|
259
259
|
DEFAULT_AUDIT_CLEANUP_DELAY = defaultDelay;
|
|
260
260
|
}
|
|
261
261
|
|
|
262
|
+
/**
|
|
263
|
+
* One-shot purge of transaction-log files already older than the audit retention window,
|
|
264
|
+
* intended to run during startup/recovery before transaction-log replay. The steady-state
|
|
265
|
+
* cleanup loop (scheduleAuditCleanup) only starts once a worker reaches steady state, so a node
|
|
266
|
+
* that crash-loops during recovery never purges and its aged backlog only grows, enlarging the
|
|
267
|
+
* next replay/full-copy. Safe to run before replay: the native purge only deletes log files
|
|
268
|
+
* entirely before the last-flushed-to-RocksDB position, so unflushed entries that replay still
|
|
269
|
+
* needs are never removed. Returns the names of the purged files. See harper#1115.
|
|
270
|
+
*/
|
|
271
|
+
export function purgeAgedLogs(rootStore: RocksDatabase): string[] {
|
|
272
|
+
return rootStore.purgeLogs({ before: Date.now() - auditRetention });
|
|
273
|
+
}
|
|
274
|
+
|
|
262
275
|
const HAS_RECORD = 16;
|
|
263
276
|
const HAS_PARTIAL_RECORD = 32; // will be used for CRDTs
|
|
264
277
|
const PUT = 1;
|
package/resources/replayLogs.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { RocksTransactionLogStore } from './RocksTransactionLogStore.ts';
|
|
|
7
7
|
import { isMainThread } from 'node:worker_threads';
|
|
8
8
|
import { RequestTarget } from './RequestTarget.ts';
|
|
9
9
|
import { classifyAuditEntryForReplay } from './replayLogsGuards.ts';
|
|
10
|
+
import { purgeAgedLogs } from './auditStore.ts';
|
|
10
11
|
|
|
11
12
|
let warnedReplayHappening = false;
|
|
12
13
|
export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void> {
|
|
@@ -16,6 +17,25 @@ export function replayLogs(rootStore: RocksDatabase, tables: any): Promise<void>
|
|
|
16
17
|
resolve();
|
|
17
18
|
});
|
|
18
19
|
if (!acquired) return;
|
|
20
|
+
// Shed transaction-log files already older than the audit retention window before
|
|
21
|
+
// replaying. A node that crash-loops during recovery never reaches the steady-state
|
|
22
|
+
// cleanup loop, so without this its aged backlog only grows and enlarges each subsequent
|
|
23
|
+
// replay/full-copy. The native purge keeps any file holding unflushed entries, so this
|
|
24
|
+
// never drops data the replay below still needs. See harper#1115.
|
|
25
|
+
// Purging is a non-critical optimization, so a purge failure (filesystem/permission/native
|
|
26
|
+
// error) must never block the critical replay path that follows — especially here, during
|
|
27
|
+
// the recovery this fix is meant to harden.
|
|
28
|
+
let purgedLogs: string[] = [];
|
|
29
|
+
try {
|
|
30
|
+
purgedLogs = purgeAgedLogs(rootStore);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
logger.warn(`Failed to purge aged transaction logs before replay in ${rootStore.databaseName} database`, error);
|
|
33
|
+
}
|
|
34
|
+
if (purgedLogs.length > 0) {
|
|
35
|
+
logger.info(
|
|
36
|
+
`Purged ${purgedLogs.length} aged transaction-log file(s) before replay in ${rootStore.databaseName} database`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
19
39
|
const tableById = new Map<number, typeof Resource>();
|
|
20
40
|
for (const tableName in tables) {
|
|
21
41
|
const table = tables[tableName];
|