@harperfast/harper-pro 5.0.28 → 5.0.29

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.
Files changed (30) hide show
  1. package/core/package-lock.json +6 -6
  2. package/core/resources/RecordEncoder.ts +56 -3
  3. package/core/resources/Table.ts +23 -0
  4. package/core/resources/auditStore.ts +4 -1
  5. package/core/resources/databases.ts +10 -10
  6. package/core/static/defaultConfig.yaml +1 -0
  7. package/core/utility/hdbTerms.ts +1 -0
  8. package/dist/cloneNode/cloneNode.js +70 -18
  9. package/dist/cloneNode/cloneNode.js.map +1 -1
  10. package/dist/core/resources/RecordEncoder.js +57 -4
  11. package/dist/core/resources/RecordEncoder.js.map +1 -1
  12. package/dist/core/resources/Table.js +22 -0
  13. package/dist/core/resources/Table.js.map +1 -1
  14. package/dist/core/resources/auditStore.js +5 -1
  15. package/dist/core/resources/auditStore.js.map +1 -1
  16. package/dist/core/resources/databases.js +9 -9
  17. package/dist/core/resources/databases.js.map +1 -1
  18. package/dist/core/utility/hdbTerms.js +1 -0
  19. package/dist/core/utility/hdbTerms.js.map +1 -1
  20. package/npm-shrinkwrap.json +6 -6
  21. package/package.json +2 -2
  22. package/studio/web/assets/{index-BJjklK4V.js → index-BFZovM68.js} +5 -5
  23. package/studio/web/assets/{index-BJjklK4V.js.map → index-BFZovM68.js.map} +1 -1
  24. package/studio/web/assets/{index.lazy-DPTCQseJ.js → index.lazy-CTCt7C_C.js} +2 -2
  25. package/studio/web/assets/{index.lazy-DPTCQseJ.js.map → index.lazy-CTCt7C_C.js.map} +1 -1
  26. package/studio/web/assets/{profile-D77bwywc.js → profile-Dy4qT0vm.js} +2 -2
  27. package/studio/web/assets/{profile-D77bwywc.js.map → profile-Dy4qT0vm.js.map} +1 -1
  28. package/studio/web/assets/{status-ChxVrrli.js → status-DQBR5qBd.js} +2 -2
  29. package/studio/web/assets/{status-ChxVrrli.js.map → status-DQBR5qBd.js.map} +1 -1
  30. package/studio/web/index.html +1 -1
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "harper",
3
- "version": "5.0.28",
3
+ "version": "5.0.29",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "harper",
9
- "version": "5.0.28",
9
+ "version": "5.0.29",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@aws-sdk/client-s3": "^3.1012.0",
@@ -60,7 +60,7 @@
60
60
  "minimist": "1.2.8",
61
61
  "moment": "2.30.1",
62
62
  "mqtt-packet": "~9.0.1",
63
- "msgpackr": "1.11.13",
63
+ "msgpackr": "1.12.0",
64
64
  "needle": "3.5.0",
65
65
  "node-forge": "^1.3.1",
66
66
  "node-stream-zip": "1.15.0",
@@ -8249,9 +8249,9 @@
8249
8249
  "license": "MIT"
8250
8250
  },
8251
8251
  "node_modules/msgpackr": {
8252
- "version": "1.11.13",
8253
- "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.13.tgz",
8254
- "integrity": "sha512-pWaxg0k1iiNdkAayUQ7Zlz/vYNfVefUttmHxqFcQjjtyqFa3w4x5rginOEzy/GvbWhBDD9K65/ZXyq8qz8utaQ==",
8252
+ "version": "1.12.0",
8253
+ "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.12.0.tgz",
8254
+ "integrity": "sha512-ShViuAPS67t4m33mZtSokhAtfzTTZPxN7L6JwkhpTfCadm8NcMGBAZMakg1b7cZqFnJLqhh5b+lHJ2ejcM3qlw==",
8255
8255
  "license": "MIT",
8256
8256
  "optionalDependencies": {
8257
8257
  "msgpackr-extract": "^3.0.2"
@@ -6,6 +6,8 @@
6
6
  */
7
7
 
8
8
  import { Encoder } from 'msgpackr';
9
+ import { get as envGet } from '../utility/environment/environmentManager.js';
10
+ import { CONFIG_PARAMS } from '../utility/hdbTerms.ts';
9
11
  import {
10
12
  HAS_PREVIOUS_RESIDENCY_ID,
11
13
  HAS_CURRENT_RESIDENCY_ID,
@@ -90,6 +92,16 @@ export class RecordEncoder extends Encoder {
90
92
  // long-lived primary store, so a wide/sparse schema (whose records vary by per-field value
91
93
  // width) can grow it unbounded and exhaust memory. Caller-overridable; default caps it.
92
94
  options.maxOwnStructures ??= 256;
95
+ // When random-access fields are disabled (storage.randomAccessFields=false), write records as
96
+ // classic shared structures instead of typed random-access structures. randomAccessStructure stays
97
+ // on so reads still decode either form — existing typed-struct data remains readable; only new
98
+ // writes change. lmdb-js does not forward non-whitelisted encoder options, so the flag is derived
99
+ // from the global config here rather than passed through the store options. Read at construction
100
+ // (DBI open, a cold path) so env/CLI config overrides are applied; an explicit option still wins
101
+ // (e.g. rocksdb-js's option spread, or tests).
102
+ if (options.readOnlyStructures === undefined && envGet(CONFIG_PARAMS.STORAGE_RANDOMACCESSFIELDS) === false) {
103
+ options.readOnlyStructures = true;
104
+ }
93
105
  /**
94
106
  * The base class for records that provides the read-only methods for accessing
95
107
  * metadata and will be assigned computed property getters. On its own, these instances
@@ -206,7 +218,18 @@ export class RecordEncoder extends Encoder {
206
218
  const superGetStructures = this.getStructures;
207
219
  this.saveStructures = function (structures, isCompatible): boolean | undefined {
208
220
  if (this.isRocksDB) {
209
- return this.rootStore.transactionSync(
221
+ // transactionSync returns the callback's value on commit, but returns `undefined`
222
+ // when the txn was aborted (it swallows ERR_ALREADY_ABORTED). The success path here
223
+ // returns an explicit `true`; anything else means the shared structures were NOT
224
+ // durably committed (a CAS conflict → `false`, or a swallowed abort → `undefined`).
225
+ //
226
+ // We must report a non-commit as `false` (not the buggy `undefined`, which msgpackr
227
+ // reads as success and then writes a record referencing a structure that was never
228
+ // saved → later "Record id is not defined" on decode). Returning `false` makes msgpackr
229
+ // re-pack; paired with msgpackr 1.11.14's structures-rebuild-on-save-failure fix, the
230
+ // re-pack reloads the durable structures, rebuilds the transition trie, re-mints, and
231
+ // re-saves — so the record always references a persisted structure.
232
+ const committed = this.rootStore.transactionSync(
210
233
  (txn) => {
211
234
  const sharedStructuresKey = [Symbol.for('structures'), this.name];
212
235
  const existingStructuresBuffer = txn.getBinarySync(sharedStructuresKey);
@@ -219,10 +242,18 @@ export class RecordEncoder extends Encoder {
219
242
  return false;
220
243
  }
221
244
  txn.putSync(sharedStructuresKey, structures);
222
- this.structureUpdate = structures;
245
+ return true;
223
246
  },
224
247
  { retryOnBusy: true }
225
248
  );
249
+ // Only record the structure update once the txn has actually committed. Setting it
250
+ // inside the callback would leave it dangling on an aborted txn and could flag a
251
+ // HAS_STRUCTURE_UPDATE in the audit log for a structure that was never persisted.
252
+ if (committed === true) {
253
+ this.structureUpdate = structures;
254
+ return true;
255
+ }
256
+ return false;
226
257
  } else {
227
258
  const result = superSaveStructures.call(this, structures, isCompatible);
228
259
  this.structureUpdate = structures;
@@ -246,7 +277,14 @@ export class RecordEncoder extends Encoder {
246
277
  let nextByte = buffer[start];
247
278
  let metadataFlags = 0;
248
279
  try {
249
- if ((this.isRocksDB && nextByte === 66) || (nextByte < 32 && end > 2)) {
280
+ // The metadata/timestamp prefix is detected heuristically by the first byte. For rocksdb a
281
+ // local-timestamp prefix starts with 66 — but 66 (0x42) is also classic shared-structure
282
+ // record-id #2, so a timestamp-less classic record beginning with that id is misread as a
283
+ // timestamped record (8 bytes stripped → corrupt). Callers that pass a value known to have no
284
+ // prefix (e.g. the audit store's getValue) set options.noMetadata to skip the heuristic. Typed
285
+ // structs start at 0x20-0x3f and never hit this, which is why it only surfaces with classic
286
+ // structures (random-access fields off).
287
+ if (!options?.noMetadata && ((this.isRocksDB && nextByte === 66) || (nextByte < 32 && end > 2))) {
250
288
  // record with metadata
251
289
  // this means that the record starts with a local timestamp (that was assigned by lmdb-js).
252
290
  // we copy it so we can decode it as float-64; we need to do it first because if structural data
@@ -343,6 +381,21 @@ export class RecordEncoder extends Encoder {
343
381
  }
344
382
  }
345
383
  }
384
+
385
+ /**
386
+ * Encoder for custom-index object stores (e.g. HNSW vector graphs). These hold fixed-shape internal
387
+ * nodes — numeric-keyed per-level connection arrays and quantized bins — that depend on random-access
388
+ * struct encoding and are mutated in place during graph maintenance. Keep them writing typed structs
389
+ * even when storage.randomAccessFields disables structs for user tables: their node shapes are
390
+ * controlled, so the wide/heterogeneous OOM risk that motivates opt-out doesn't apply, and classic
391
+ * (frozen) decoding would break the in-place graph mutation.
392
+ */
393
+ export class IndexRecordEncoder extends RecordEncoder {
394
+ constructor(options) {
395
+ options.readOnlyStructures = false;
396
+ super(options);
397
+ }
398
+ }
346
399
  function getTimestamp() {
347
400
  TIMESTAMP_HOLDER[0] = TIMESTAMP_HOLDER[0] ^ 0x40; // restore the first byte, we xor to differentiate the first byte from structures
348
401
  return TIMESTAMP_VIEW.getFloat64(0);
@@ -94,6 +94,19 @@ const RECORD_PRUNING_INTERVAL = 60000; // one minute
94
94
  envMngr.initSync();
95
95
  const LMDB_PREFETCH_WRITES = envMngr.get(CONFIG_PARAMS.STORAGE_PREFETCHWRITES);
96
96
  const LOCK_TIMEOUT = 10000;
97
+
98
+ // True only for frozen plain/record objects (the immutable decoded records). Excludes Buffers,
99
+ // TypedArrays, ArrayBuffers and primitives/null, which must not be shallow-copied via spread (that
100
+ // would corrupt binary values). Used to decide when to copy-on-mutate before stamping a record.
101
+ function isFrozenRecordObject(value: any): boolean {
102
+ return (
103
+ value !== null &&
104
+ typeof value === 'object' &&
105
+ !ArrayBuffer.isView(value) &&
106
+ !(value instanceof ArrayBuffer) &&
107
+ Object.isFrozen(value)
108
+ );
109
+ }
97
110
  export const INVALIDATED = 1;
98
111
  export const EVICTED = 8; // note that 2 is reserved for timestamps
99
112
  const TEST_WRITE_KEY_BUFFER = Buffer.allocUnsafeSlow(8192);
@@ -1639,6 +1652,12 @@ export function makeTable(options) {
1639
1652
  if (fullUpdate || (recordUpdate && hasChanges(this.#changes === recordUpdate ? this : recordUpdate))) {
1640
1653
  if (!context?.source) {
1641
1654
  transaction.checkOverloaded();
1655
+ // Records are intentionally immutable: decoded records are frozen (and 5.2 record
1656
+ // caching relies on it), so mutating in place would corrupt cached/shared state.
1657
+ // validate() coerces values and we stamp created/updated times + the primary key
1658
+ // below, so copy-on-mutate when recordUpdate is frozen (e.g. a record decoded during
1659
+ // log replay) instead of writing through the frozen object.
1660
+ if (isFrozenRecordObject(recordUpdate)) recordUpdate = { ...recordUpdate };
1642
1661
  this.validate(recordUpdate, !fullUpdate);
1643
1662
  if (updatedTimeProperty) {
1644
1663
  recordUpdate[updatedTimeProperty.name] =
@@ -4255,6 +4274,10 @@ export function makeTable(options) {
4255
4274
  }
4256
4275
  }
4257
4276
  if (typeof updatedRecord.toJSON === 'function') updatedRecord = updatedRecord.toJSON();
4277
+ // updatedRecord may still be a frozen record (e.g. a reused existingRecord); copy-on-mutate
4278
+ // before stamping the primary key below (records are immutable — 5.2 record caching relies
4279
+ // on it — so we must not write through the frozen object).
4280
+ if (isFrozenRecordObject(updatedRecord)) updatedRecord = { ...updatedRecord };
4258
4281
  if (primaryKey && updatedRecord[primaryKey] !== id) updatedRecord[primaryKey] = id;
4259
4282
  }
4260
4283
  resolved = true;
@@ -552,7 +552,10 @@ export function readAuditEntry(buffer: Uint8Array, start = 0, end = undefined):
552
552
  if (action & HAS_RECORD || (action & HAS_PARTIAL_RECORD && !fullRecord)) {
553
553
  if (!value) {
554
554
  value = decodeFromDatabase(
555
- () => store.decoder.decode(buffer.subarray(decoder.position, end)),
555
+ // the audit value has no on-disk timestamp/metadata prefix (the audit entry carries
556
+ // its own time), so skip the prefix heuristic — otherwise a classic record whose
557
+ // structure-id byte is 66 (0x42) is misread as a rocksdb timestamp. See RecordEncoder.decode.
558
+ () => store.decoder.decode(buffer.subarray(decoder.position, end), { noMetadata: true }),
556
559
  store.rootStore
557
560
  );
558
561
  }
@@ -22,7 +22,7 @@ import harperLogger from '../utility/logging/harper_logger.js';
22
22
  const { forComponent } = harperLogger;
23
23
  import * as manageThreads from '../server/threads/manageThreads.js';
24
24
  import { openAuditStore, readAuditEntry, createAuditEntry, type AuditRecord } from './auditStore.ts';
25
- import { handleLocalTimeForGets } from './RecordEncoder.ts';
25
+ import { handleLocalTimeForGets, IndexRecordEncoder } from './RecordEncoder.ts';
26
26
  import { deleteRootBlobPathsForDB } from './blob.ts';
27
27
  import { CUSTOM_INDEXES } from './indexes/customIndexes.ts';
28
28
  import { OpenDBIObject } from '../utility/lmdb/OpenDBIObject.js';
@@ -134,15 +134,9 @@ function openRocksDatabase(path: string, options: RocksDatabaseOptions & { dupSo
134
134
  const writeBufferManagerAllowStall = envGet(CONFIG_PARAMS.STORAGE_ROCKS_WRITEBUFFERMANAGERALLOWSTALL);
135
135
  RocksDatabase.config({
136
136
  blockCacheSize,
137
- ...(typeof writeBufferManagerSize === 'number' && writeBufferManagerSize > 0
138
- ? { writeBufferManagerSize }
139
- : {}),
140
- ...(typeof writeBufferManagerCostToCache === 'boolean'
141
- ? { writeBufferManagerCostToCache }
142
- : {}),
143
- ...(typeof writeBufferManagerAllowStall === 'boolean'
144
- ? { writeBufferManagerAllowStall }
145
- : {}),
137
+ ...(typeof writeBufferManagerSize === 'number' && writeBufferManagerSize > 0 ? { writeBufferManagerSize } : {}),
138
+ ...(typeof writeBufferManagerCostToCache === 'boolean' ? { writeBufferManagerCostToCache } : {}),
139
+ ...(typeof writeBufferManagerAllowStall === 'boolean' ? { writeBufferManagerAllowStall } : {}),
146
140
  });
147
141
  if (!existsSync(path)) {
148
142
  mkdirSync(path, { recursive: true });
@@ -824,6 +818,12 @@ function openIndex(dbiKey: string, rootStore: RootDatabaseKind, attribute: any)
824
818
  const objectStorage =
825
819
  attribute.isPrimaryKey || (attribute.indexed.type && CUSTOM_INDEXES[attribute.indexed.type]?.useObjectStore);
826
820
  const dbiInit = createOpenDBIObject(!objectStorage, objectStorage);
821
+ // Custom-index object stores (e.g. HNSW vector graphs) must keep writing typed structs regardless
822
+ // of the storage.randomAccessFields opt-out — their internal nodes are mutated in place and depend
823
+ // on random-access struct encoding (see IndexRecordEncoder).
824
+ if (attribute.indexed?.type && CUSTOM_INDEXES[attribute.indexed.type]?.useObjectStore) {
825
+ dbiInit.encoder = { Encoder: IndexRecordEncoder };
826
+ }
827
827
  let dbi:
828
828
  | LMDBDatabase
829
829
  | (RocksDatabase & {
@@ -69,6 +69,7 @@ rootPath: null
69
69
  storage:
70
70
  writeAsync: false
71
71
  caching: true
72
+ randomAccessFields: true
72
73
  compression: true
73
74
  noReadAhead: false
74
75
  path: null
@@ -554,6 +554,7 @@ export const CONFIG_PARAMS = {
554
554
  STORAGE_WRITEASYNC: 'storage_writeAsync',
555
555
  STORAGE_OVERLAPPINGSYNC: 'storage_overlappingSync',
556
556
  STORAGE_CACHING: 'storage_caching',
557
+ STORAGE_RANDOMACCESSFIELDS: 'storage_randomAccessFields',
557
558
  STORAGE_COMPRESSION: 'storage_compression',
558
559
  STORAGE_NOREADAHEAD: 'storage_noReadAhead',
559
560
  STORAGE_PREFETCHWRITES: 'storage_prefetchWrites',
@@ -72,8 +72,7 @@ const hdbTerms_ts_1 = require("../core/utility/hdbTerms.js");
72
72
  * - CLONE_SSH_KEYS: Clone SSH keys from leader (default: true)
73
73
  * - CLONE_JWT_KEYS: Clone JWT keys from leader (default: true)
74
74
  * - ALLOW_SELF_SIGNED: Allow self-signed certificates to be used for authentication (default: false)
75
- * - CLONE_NODE_UPDATE_STATUS: Update node status during clone (default: false)
76
- * - CLONE_SYNC_TIMEOUT: Sync timeout in milliseconds (default: 30000)
75
+ * - CLONE_SYNC_TIMEOUT: Sync timeout in milliseconds (default: 300000)
77
76
  * - REPLICATION_PORT: Port for replication
78
77
  * - FORCE_CLONE: Force clone even if node exists (default: false)
79
78
  * - ROOTPATH: HarperDB installation root path
@@ -88,7 +87,7 @@ const hdbTerms_ts_1 = require("../core/utility/hdbTerms.js");
88
87
  * --node-hostname: Hostname for this node
89
88
  * --replication-port: Port for replication
90
89
  * --skip-sync-monitor: Skip monitoring sync status (default: false)
91
- * --sync-timeout: Sync timeout in milliseconds (default: 30000)
90
+ * --sync-timeout: Sync timeout in milliseconds (default: 300000)
92
91
  * --skip-ssh-keys: Skip cloning SSH keys (default: false)
93
92
  * --skip-jwt-keys: Skip cloning JWT keys (default: false)
94
93
  * --force-clone: Force clone even if node exists (default: false)
@@ -254,8 +253,21 @@ async function cloneNode() {
254
253
  log(`Response from set node: ${setNodeResponse}`);
255
254
  await cloneJWTKeys();
256
255
  await cloneSSHKeys();
257
- // Monitor the synchronization status of the databases after cloning and update availability status once sync is complete
258
- await monitorSync();
256
+ // Monitor synchronization after cloning. Only finalize the clone (mark it cloned, log complete)
257
+ // once sync is confirmed and availability has been published as Available — a timeout or failure
258
+ // must not be treated as success.
259
+ const syncOutcome = await monitorSync();
260
+ if (syncOutcome === 'failed') {
261
+ // Leave Harper running so get_status stays queryable for the control plane (availability is
262
+ // now Unavailable). Throwing here would propagate to bin/harper.js and exit the already-started
263
+ // process. Explicitly clear the cloned flag rather than just skipping the write: on a forced
264
+ // reclone, cloneConfig() has already carried the previous `cloned: true` into the rewritten
265
+ // config, so a bare return would leave it set and the next non-forced start would skip cloning
266
+ // despite the unconfirmed sync. Clearing it ensures a subsequent start retries the clone.
267
+ (0, configUtils_js_1.updateConfigValue)(hdbTerms_ts_1.CONFIG_PARAMS.CLONED, false);
268
+ log(`Clone from leader node ${leaderURL} did not complete synchronization; node is running but Unavailable and not marked as cloned`, 'error');
269
+ return;
270
+ }
259
271
  // Delete clone-temp-admin only after monitorSync() so that the account remains valid while
260
272
  // the leader establishes replication and syncs real users. Deleting it earlier leaves the
261
273
  // node with no users during setNode(), which prevents replication from being established.
@@ -301,38 +313,76 @@ async function cloneNode() {
301
313
  log(`Clone from leader node ${leaderURL} complete`);
302
314
  }
303
315
  /**
304
- * Monitors database synchronization status after cloning and updates availability status once complete.
305
- * Polls at regular intervals until sync completes or timeout is reached.
316
+ * Monitors database synchronization after cloning and drives this node's `availability` status.
317
+ *
318
+ * `availability` is a cooperative, multi-writer status whose contract is owned by core; this is the
319
+ * clone producer upholding it. It is published as Unavailable up front so `get_status` always
320
+ * carries a definite signal for the control plane — never an absent field — and is only flipped to
321
+ * Available once sync is confirmed and that write succeeds. On any failure it is left Unavailable.
322
+ *
323
+ * Polls at regular intervals until sync completes or the timeout is reached.
306
324
  */
307
325
  async function monitorSync() {
308
- if (skipSyncMonitor)
309
- return;
310
- const { clusterStatus } = await import('../replication/clusterStatus.js');
311
326
  const { set: setStatus } = await import('../core/server/status/index.js');
327
+ if (skipSyncMonitor) {
328
+ // The operator opted out of the sync gate, so the clone is declared ready. Publish Available
329
+ // (best-effort) — this also clears any Unavailable persisted by a prior failed attempt, since
330
+ // hdb_status is not replicated and survives restarts — keeping availability consistent with the
331
+ // cloned flag the caller sets for this outcome.
332
+ log('Skipping sync monitor (skip-sync-monitor); marking node Available without verifying sync');
333
+ try {
334
+ await setStatus({ id: 'availability', status: 'Available' });
335
+ }
336
+ catch (err) {
337
+ log(`Failed to set availability status to Available: ${err}`, 'error');
338
+ }
339
+ return 'skipped';
340
+ }
341
+ const { clusterStatus } = await import('../replication/clusterStatus.js');
342
+ // The node is not ready to serve traffic until the clone has caught up with the leader. Publish
343
+ // Unavailable up front so get_status always carries a definite availability signal for the whole
344
+ // sync wait. Best-effort: a failed write here must not abort the clone (the loop still runs and
345
+ // publishes Available on success).
346
+ try {
347
+ await setStatus({ id: 'availability', status: 'Unavailable' });
348
+ }
349
+ catch (err) {
350
+ log(`Failed to set availability status to Unavailable: ${err}`, 'error');
351
+ }
352
+ // Test/diagnostic hook (not a user-facing option): deterministically exercise the
353
+ // unconfirmed-sync failure path. Loopback replication is too fast and bidirectional to force a
354
+ // real sync timeout in tests, so this lets the failure-branch behavior — stay Unavailable, do not
355
+ // mark cloned, keep the node running — be asserted deterministically.
356
+ if (process.env.CLONE_SIMULATE_SYNC_FAILURE === 'true') {
357
+ log('CLONE_SIMULATE_SYNC_FAILURE set; treating clone sync as unconfirmed', 'error');
358
+ return 'failed';
359
+ }
312
360
  // Get last updated record timestamps for all DB and write to file
313
361
  // These values can be used for checking when the clone replication has caught up with the leader
314
362
  const targetTimestamps = await getLastUpdatedRecord();
315
363
  if (!targetTimestamps || Object.keys(targetTimestamps).length === 0) {
316
- log('No target timestamps available to check synchronization status', 'error');
317
- return;
364
+ log('No target timestamps available to check synchronization status; leaving availability Unavailable', 'error');
365
+ return 'failed';
318
366
  }
319
367
  log(`Starting to monitor sync status. Will check every ${DEFAULT_SYNC_CHECK_INTERVAL_MS}ms for up to ${Math.round(syncTimeoutMs / 60000)} minutes`);
320
368
  const timeoutAt = Date.now() + syncTimeoutMs;
321
- let syncComplete = false;
322
369
  let loopCount = 0;
323
- while (!syncComplete && Date.now() < timeoutAt) {
370
+ while (Date.now() < timeoutAt) {
324
371
  try {
325
- syncComplete = await checkSyncStatus(targetTimestamps, clusterStatus);
372
+ const syncComplete = await checkSyncStatus(targetTimestamps, clusterStatus);
326
373
  if (syncComplete) {
327
374
  log('All databases synchronized');
375
+ // Only report Available — and let the caller finalize the clone — once the status
376
+ // write itself succeeds. A failed write must not be treated as a successful sync,
377
+ // otherwise the node would be marked cloned without a readiness signal.
328
378
  try {
329
379
  await setStatus({ id: 'availability', status: 'Available' });
330
380
  }
331
381
  catch (err) {
332
- // Don't fail sync monitoring due to status update failure
333
- log(`Failed to update availability status: ${err}`, 'error');
382
+ log(`Synchronized but failed to set availability to Available: ${err}; leaving Unavailable`, 'error');
383
+ return 'failed';
334
384
  }
335
- break; // Exit loop on successful sync
385
+ return 'synced';
336
386
  }
337
387
  // Log every other iteration to reduce noise
338
388
  if (loopCount % 2 === 0) {
@@ -346,6 +396,8 @@ async function monitorSync() {
346
396
  await (0, promises_1.setTimeout)(DEFAULT_SYNC_CHECK_INTERVAL_MS); // Still wait on error
347
397
  }
348
398
  }
399
+ log(`Databases did not synchronize within ${Math.round(syncTimeoutMs / 60000)} minutes; leaving availability Unavailable and not marking node as cloned`, 'error');
400
+ return 'failed';
349
401
  }
350
402
  /**
351
403
  * Check if all databases are synchronized by comparing timestamps
@@ -1 +1 @@
1
- {"version":3,"file":"cloneNode.js","sourceRoot":"","sources":["../../cloneNode/cloneNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloneNode.js","sourceRoot":"","sources":["../../cloneNode/cloneNode.ts"],"names":[],"mappings":"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"}
@@ -39,13 +39,15 @@ var __importStar = (this && this.__importStar) || (function () {
39
39
  };
40
40
  })();
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.RecordEncoder = exports.lastMetadata = exports.lastValueEncoding = exports.entryMap = exports.HAS_ADDITIONAL_AUDIT_REFS = exports.HAS_STRUCTURE_UPDATE = exports.PENDING_LOCAL_TIME = exports.HAS_NODE_ID = exports.HAS_RESIDENCY_ID = exports.HAS_EXPIRATION = exports.TIMESTAMP_RECORD_PREVIOUS = exports.TIMESTAMP_ASSIGN_PREVIOUS = exports.TIMESTAMP_ASSIGN_LAST = exports.TIMESTAMP_ASSIGN_NEW = exports.NO_TIMESTAMP = exports.ENTRY = exports.METADATA = exports.LOCAL_TIMESTAMP = exports.NEW_TIMESTAMP_PLACEHOLDER = exports.PREVIOUS_TIMESTAMP_PLACEHOLDER = exports.LAST_TIMESTAMP_PLACEHOLDER = exports.TIMESTAMP_PLACEHOLDER = void 0;
42
+ exports.IndexRecordEncoder = exports.RecordEncoder = exports.lastMetadata = exports.lastValueEncoding = exports.entryMap = exports.HAS_ADDITIONAL_AUDIT_REFS = exports.HAS_STRUCTURE_UPDATE = exports.PENDING_LOCAL_TIME = exports.HAS_NODE_ID = exports.HAS_RESIDENCY_ID = exports.HAS_EXPIRATION = exports.TIMESTAMP_RECORD_PREVIOUS = exports.TIMESTAMP_ASSIGN_PREVIOUS = exports.TIMESTAMP_ASSIGN_LAST = exports.TIMESTAMP_ASSIGN_NEW = exports.NO_TIMESTAMP = exports.ENTRY = exports.METADATA = exports.LOCAL_TIMESTAMP = exports.NEW_TIMESTAMP_PLACEHOLDER = exports.PREVIOUS_TIMESTAMP_PLACEHOLDER = exports.LAST_TIMESTAMP_PLACEHOLDER = exports.TIMESTAMP_PLACEHOLDER = void 0;
43
43
  exports.handleLocalTimeForGets = handleLocalTimeForGets;
44
44
  exports.setNextEncoding = setNextEncoding;
45
45
  exports.recordUpdater = recordUpdater;
46
46
  exports.setAdditionalAuditRefs = setAdditionalAuditRefs;
47
47
  exports.removeEntry = removeEntry;
48
48
  const msgpackr_1 = require("msgpackr");
49
+ const environmentManager_js_1 = require("../utility/environment/environmentManager.js");
50
+ const hdbTerms_ts_1 = require("../utility/hdbTerms.js");
49
51
  const auditStore_ts_1 = require("./auditStore.js");
50
52
  const harperLogger = __importStar(require("../utility/logging/harper_logger.js"));
51
53
  require("./blob.js");
@@ -94,6 +96,16 @@ class RecordEncoder extends msgpackr_1.Encoder {
94
96
  // long-lived primary store, so a wide/sparse schema (whose records vary by per-field value
95
97
  // width) can grow it unbounded and exhaust memory. Caller-overridable; default caps it.
96
98
  options.maxOwnStructures ??= 256;
99
+ // When random-access fields are disabled (storage.randomAccessFields=false), write records as
100
+ // classic shared structures instead of typed random-access structures. randomAccessStructure stays
101
+ // on so reads still decode either form — existing typed-struct data remains readable; only new
102
+ // writes change. lmdb-js does not forward non-whitelisted encoder options, so the flag is derived
103
+ // from the global config here rather than passed through the store options. Read at construction
104
+ // (DBI open, a cold path) so env/CLI config overrides are applied; an explicit option still wins
105
+ // (e.g. rocksdb-js's option spread, or tests).
106
+ if (options.readOnlyStructures === undefined && (0, environmentManager_js_1.get)(hdbTerms_ts_1.CONFIG_PARAMS.STORAGE_RANDOMACCESSFIELDS) === false) {
107
+ options.readOnlyStructures = true;
108
+ }
97
109
  /**
98
110
  * The base class for records that provides the read-only methods for accessing
99
111
  * metadata and will be assigned computed property getters. On its own, these instances
@@ -212,7 +224,18 @@ class RecordEncoder extends msgpackr_1.Encoder {
212
224
  const superGetStructures = this.getStructures;
213
225
  this.saveStructures = function (structures, isCompatible) {
214
226
  if (this.isRocksDB) {
215
- return this.rootStore.transactionSync((txn) => {
227
+ // transactionSync returns the callback's value on commit, but returns `undefined`
228
+ // when the txn was aborted (it swallows ERR_ALREADY_ABORTED). The success path here
229
+ // returns an explicit `true`; anything else means the shared structures were NOT
230
+ // durably committed (a CAS conflict → `false`, or a swallowed abort → `undefined`).
231
+ //
232
+ // We must report a non-commit as `false` (not the buggy `undefined`, which msgpackr
233
+ // reads as success and then writes a record referencing a structure that was never
234
+ // saved → later "Record id is not defined" on decode). Returning `false` makes msgpackr
235
+ // re-pack; paired with msgpackr 1.11.14's structures-rebuild-on-save-failure fix, the
236
+ // re-pack reloads the durable structures, rebuilds the transition trie, re-mints, and
237
+ // re-saves — so the record always references a persisted structure.
238
+ const committed = this.rootStore.transactionSync((txn) => {
216
239
  const sharedStructuresKey = [Symbol.for('structures'), this.name];
217
240
  const existingStructuresBuffer = txn.getBinarySync(sharedStructuresKey);
218
241
  const existingStructures = existingStructuresBuffer ? this.decode(existingStructuresBuffer) : undefined;
@@ -225,8 +248,16 @@ class RecordEncoder extends msgpackr_1.Encoder {
225
248
  return false;
226
249
  }
227
250
  txn.putSync(sharedStructuresKey, structures);
228
- this.structureUpdate = structures;
251
+ return true;
229
252
  }, { retryOnBusy: true });
253
+ // Only record the structure update once the txn has actually committed. Setting it
254
+ // inside the callback would leave it dangling on an aborted txn and could flag a
255
+ // HAS_STRUCTURE_UPDATE in the audit log for a structure that was never persisted.
256
+ if (committed === true) {
257
+ this.structureUpdate = structures;
258
+ return true;
259
+ }
260
+ return false;
230
261
  }
231
262
  else {
232
263
  const result = superSaveStructures.call(this, structures, isCompatible);
@@ -252,7 +283,14 @@ class RecordEncoder extends msgpackr_1.Encoder {
252
283
  let nextByte = buffer[start];
253
284
  let metadataFlags = 0;
254
285
  try {
255
- if ((this.isRocksDB && nextByte === 66) || (nextByte < 32 && end > 2)) {
286
+ // The metadata/timestamp prefix is detected heuristically by the first byte. For rocksdb a
287
+ // local-timestamp prefix starts with 66 — but 66 (0x42) is also classic shared-structure
288
+ // record-id #2, so a timestamp-less classic record beginning with that id is misread as a
289
+ // timestamped record (8 bytes stripped → corrupt). Callers that pass a value known to have no
290
+ // prefix (e.g. the audit store's getValue) set options.noMetadata to skip the heuristic. Typed
291
+ // structs start at 0x20-0x3f and never hit this, which is why it only surfaces with classic
292
+ // structures (random-access fields off).
293
+ if (!options?.noMetadata && ((this.isRocksDB && nextByte === 66) || (nextByte < 32 && end > 2))) {
256
294
  // record with metadata
257
295
  // this means that the record starts with a local timestamp (that was assigned by lmdb-js).
258
296
  // we copy it so we can decode it as float-64; we need to do it first because if structural data
@@ -346,6 +384,21 @@ class RecordEncoder extends msgpackr_1.Encoder {
346
384
  }
347
385
  }
348
386
  exports.RecordEncoder = RecordEncoder;
387
+ /**
388
+ * Encoder for custom-index object stores (e.g. HNSW vector graphs). These hold fixed-shape internal
389
+ * nodes — numeric-keyed per-level connection arrays and quantized bins — that depend on random-access
390
+ * struct encoding and are mutated in place during graph maintenance. Keep them writing typed structs
391
+ * even when storage.randomAccessFields disables structs for user tables: their node shapes are
392
+ * controlled, so the wide/heterogeneous OOM risk that motivates opt-out doesn't apply, and classic
393
+ * (frozen) decoding would break the in-place graph mutation.
394
+ */
395
+ class IndexRecordEncoder extends RecordEncoder {
396
+ constructor(options) {
397
+ options.readOnlyStructures = false;
398
+ super(options);
399
+ }
400
+ }
401
+ exports.IndexRecordEncoder = IndexRecordEncoder;
349
402
  function getTimestamp() {
350
403
  TIMESTAMP_HOLDER[0] = TIMESTAMP_HOLDER[0] ^ 0x40; // restore the first byte, we xor to differentiate the first byte from structures
351
404
  return TIMESTAMP_VIEW.getFloat64(0);