@harperfast/harper 5.0.2 → 5.0.3

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 (62) hide show
  1. package/bin/cliOperations.js +6 -4
  2. package/bin/copyDb.ts +208 -0
  3. package/bin/restart.js +8 -7
  4. package/bin/run.js +2 -1
  5. package/dist/bin/cliOperations.js +6 -4
  6. package/dist/bin/cliOperations.js.map +1 -1
  7. package/dist/bin/copyDb.d.ts +1 -0
  8. package/dist/bin/copyDb.js +197 -0
  9. package/dist/bin/copyDb.js.map +1 -1
  10. package/dist/bin/restart.js +8 -7
  11. package/dist/bin/restart.js.map +1 -1
  12. package/dist/bin/run.js +3 -1
  13. package/dist/bin/run.js.map +1 -1
  14. package/dist/resources/DatabaseTransaction.js +17 -2
  15. package/dist/resources/DatabaseTransaction.js.map +1 -1
  16. package/dist/resources/RecordEncoder.d.ts +1 -1
  17. package/dist/resources/RecordEncoder.js +2 -2
  18. package/dist/resources/RecordEncoder.js.map +1 -1
  19. package/dist/resources/ResourceInterface.d.ts +1 -1
  20. package/dist/resources/RocksIndexStore.d.ts +14 -7
  21. package/dist/resources/RocksIndexStore.js +19 -12
  22. package/dist/resources/RocksIndexStore.js.map +1 -1
  23. package/dist/resources/Table.js +43 -28
  24. package/dist/resources/Table.js.map +1 -1
  25. package/dist/resources/databases.js +18 -14
  26. package/dist/resources/databases.js.map +1 -1
  27. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +2 -1
  28. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +14 -12
  29. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  30. package/dist/security/certificateVerification/ocspVerification.js +1 -1
  31. package/dist/security/certificateVerification/ocspVerification.js.map +1 -1
  32. package/dist/security/keys.js +7 -7
  33. package/dist/security/keys.js.map +1 -1
  34. package/dist/server/itc/serverHandlers.js +0 -4
  35. package/dist/server/itc/serverHandlers.js.map +1 -1
  36. package/dist/utility/hdbTerms.d.ts +1 -0
  37. package/dist/utility/hdbTerms.js +1 -0
  38. package/dist/utility/hdbTerms.js.map +1 -1
  39. package/dist/utility/install/installer.js +11 -8
  40. package/dist/utility/install/installer.js.map +1 -1
  41. package/package.json +1 -1
  42. package/resources/DatabaseTransaction.ts +19 -2
  43. package/resources/RecordEncoder.ts +2 -2
  44. package/resources/ResourceInterface.ts +1 -1
  45. package/resources/RocksIndexStore.ts +20 -15
  46. package/resources/Table.ts +38 -24
  47. package/resources/databases.ts +29 -14
  48. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +44 -23
  49. package/security/certificateVerification/ocspVerification.ts +1 -1
  50. package/security/keys.js +7 -7
  51. package/server/itc/serverHandlers.js +0 -4
  52. package/studio/web/assets/{index-f5-e8ocl.js → index-CxTavHFE.js} +5 -5
  53. package/studio/web/assets/{index-f5-e8ocl.js.map → index-CxTavHFE.js.map} +1 -1
  54. package/studio/web/assets/{index.lazy-CCd1vMot.js → index.lazy-CfiR1tvq.js} +2 -2
  55. package/studio/web/assets/{index.lazy-CCd1vMot.js.map → index.lazy-CfiR1tvq.js.map} +1 -1
  56. package/studio/web/assets/{profile-gjpePJuu.js → profile-C-uokAal.js} +2 -2
  57. package/studio/web/assets/{profile-gjpePJuu.js.map → profile-C-uokAal.js.map} +1 -1
  58. package/studio/web/assets/{status-CmoVx0A5.js → status-D6xeT4ss.js} +2 -2
  59. package/studio/web/assets/{status-CmoVx0A5.js.map → status-D6xeT4ss.js.map} +1 -1
  60. package/studio/web/index.html +1 -1
  61. package/utility/hdbTerms.ts +1 -0
  62. package/utility/install/installer.js +14 -10
@@ -63,7 +63,7 @@ function buildRequest() {
63
63
  */
64
64
  async function cliOperations(req) {
65
65
  if (!req.target) {
66
- req.target = process.env.CLI_TARGET;
66
+ req.target = process.env.HARPER_CLI_TARGET || process.env.CLI_TARGET;
67
67
  }
68
68
  let target;
69
69
  if (req.target) {
@@ -73,20 +73,22 @@ async function cliOperations(req) {
73
73
  try {
74
74
  target = new URL(`https://${req.target}:9925`);
75
75
  } catch {
76
- throw error; // throw the original error
76
+ throw error;
77
77
  }
78
78
  }
79
79
  target = {
80
80
  protocol: target.protocol,
81
81
  hostname: target.hostname,
82
82
  port: target.port,
83
- username: req.username || target.username || process.env.CLI_TARGET_USERNAME,
84
- password: req.password || target.password || process.env.CLI_TARGET_PASSWORD,
83
+ username: req.username || target.username || process.env.HARPER_CLI_USERNAME || process.env.CLI_TARGET_USERNAME,
84
+ password: req.password || target.password || process.env.HARPER_CLI_PASSWORD || process.env.CLI_TARGET_PASSWORD,
85
85
  rejectUnauthorized: req.rejectUnauthorized,
86
86
  };
87
+ console.error(`Connecting to ${target.protocol}//${target.hostname}:${target.port}`);
87
88
  } else {
88
89
  // if we aren't doing a targeted operation (like deploy), we initialize the config and verify that local harper
89
90
  // is running and that we can communicate with it.
91
+ console.error('Connecting to local Harper instance');
90
92
  initConfig();
91
93
  if (!getHdbPid()) {
92
94
  console.error('Harper must be running to perform this operation');
package/bin/copyDb.ts CHANGED
@@ -2,6 +2,7 @@ import { getDatabases, getDefaultCompression, resetDatabases } from '../resource
2
2
  import { open } from 'lmdb';
3
3
  import { join } from 'path';
4
4
  import { move, remove } from 'fs-extra';
5
+ import { existsSync, mkdirSync } from 'node:fs';
5
6
  import { get } from '../utility/environment/environmentManager.js';
6
7
  import OpenEnvironmentObject from '../utility/lmdb/OpenEnvironmentObject.js';
7
8
  import { OpenDBIObject } from '../utility/lmdb/OpenDBIObject.js';
@@ -11,6 +12,8 @@ import { AUDIT_STORE_OPTIONS } from '../resources/auditStore.ts';
11
12
  import { describeSchema } from '../dataLayer/schemaDescribe.js';
12
13
  import { updateConfigValue } from '../config/configUtils.js';
13
14
  import * as hdbLogger from '../utility/logging/harper_logger.js';
15
+ import { RocksDatabase, type RocksDatabaseOptions } from '@harperfast/rocksdb-js';
16
+ import { RocksIndexStore } from '../resources/RocksIndexStore.ts';
14
17
 
15
18
  export async function compactOnStart() {
16
19
  hdbLogger.notify('Running compact on start');
@@ -278,3 +281,208 @@ export async function copyDb(sourceDatabase: string, targetDatabasePath: string)
278
281
  targetEnv.close();
279
282
  }
280
283
  }
284
+
285
+ function openRocksDb(path: string, options: RocksDatabaseOptions & { dupSort?: boolean } = {}) {
286
+ options.disableWAL ??= false;
287
+ if (!existsSync(path)) {
288
+ mkdirSync(path, { recursive: true });
289
+ }
290
+ let db;
291
+ if (options.dupSort) {
292
+ db = RocksDatabase.open(new RocksIndexStore(path, options));
293
+ } else {
294
+ db = RocksDatabase.open(path, options);
295
+ db.encoder.name = options.name;
296
+ }
297
+ return db;
298
+ }
299
+
300
+ export async function migrateOnStart() {
301
+ hdbLogger.notify('Running migrate on start (LMDB to RocksDB)');
302
+ console.log('Running migrate on start (LMDB to RocksDB)');
303
+
304
+ const rootPath = get(CONFIG_PARAMS.ROOTPATH);
305
+ const databases = getDatabases();
306
+
307
+ updateConfigValue(CONFIG_PARAMS.STORAGE_MIGRATEONSTART, false);
308
+
309
+ try {
310
+ for (const databaseName in databases) {
311
+ if (databaseName === 'system') continue;
312
+ if (databaseName.endsWith('-copy')) continue;
313
+ let rootStore;
314
+ for (const tableName in databases[databaseName]) {
315
+ const table = databases[databaseName][tableName];
316
+ table.primaryStore.put = noop;
317
+ table.primaryStore.remove = noop;
318
+ for (const attributeName in table.indices) {
319
+ const index = table.indices[attributeName];
320
+ index.put = noop;
321
+ index.remove = noop;
322
+ }
323
+ if (table.auditStore) {
324
+ table.auditStore.put = noop;
325
+ table.auditStore.remove = noop;
326
+ }
327
+ rootStore = table.primaryStore.rootStore;
328
+ }
329
+ if (!rootStore) {
330
+ console.log("Couldn't find any tables in database", databaseName);
331
+ continue;
332
+ }
333
+ if (rootStore instanceof RocksDatabase) {
334
+ console.log('Database', databaseName, 'is already RocksDB, skipping');
335
+ continue;
336
+ }
337
+
338
+ const targetPath = join(rootPath, DATABASES_DIR_NAME, databaseName);
339
+ const lmdbPath = rootStore.path;
340
+ const backupDest = join(rootPath, 'backup', databaseName + '.mdb');
341
+
342
+ console.log('Migrating', databaseName, 'from LMDB to RocksDB at', targetPath);
343
+
344
+ await copyDbToRocks(rootStore, databaseName, targetPath);
345
+
346
+ // Back up the original LMDB file
347
+ console.log('Backing up LMDB', databaseName, 'to', backupDest);
348
+ try {
349
+ await move(lmdbPath, backupDest, { overwrite: true });
350
+ } catch (error) {
351
+ console.log('Error moving database', lmdbPath, 'to', backupDest, error);
352
+ }
353
+ // Remove the lock file
354
+ try {
355
+ await remove(lmdbPath + '-lock');
356
+ } catch {
357
+ // lock file may not exist
358
+ }
359
+ }
360
+
361
+ try {
362
+ resetDatabases();
363
+ } catch (err) {
364
+ hdbLogger.error('Error resetting databases after migration', err);
365
+ console.error('Error resetting databases after migration', err);
366
+ }
367
+ } catch (err) {
368
+ hdbLogger.error('Error migrating database', err);
369
+ console.error('Error migrating database', err);
370
+ throw err;
371
+ }
372
+ }
373
+
374
+ async function copyDbToRocks(sourceRootStore, sourceDatabase: string, targetPath: string) {
375
+ console.log(`Migrating database ${sourceDatabase} to RocksDB at ${targetPath}`);
376
+ const sourceDbisDb = sourceRootStore.dbisDb;
377
+
378
+ const targetRootStore = openRocksDb(targetPath, { disableWAL: false });
379
+ const targetDbisDb = openRocksDb(targetPath, {
380
+ disableWAL: false,
381
+ name: INTERNAL_DBIS_NAME,
382
+ });
383
+
384
+ let written;
385
+ let outstandingWrites = 0;
386
+ const transaction = sourceDbisDb.useReadTransaction();
387
+ try {
388
+ for (const { key, value: attribute } of sourceDbisDb.getRange({ transaction })) {
389
+ const isPrimary = attribute.isPrimaryKey;
390
+ targetDbisDb.put(key, attribute);
391
+ if (!(isPrimary || attribute.indexed)) continue;
392
+
393
+ // Open source LMDB dbi with default encoding so values are decoded
394
+ const dbiInit = new OpenDBIObject(!isPrimary, isPrimary);
395
+ const sourceDbi = sourceRootStore.openDB(key, dbiInit);
396
+
397
+ let targetDbi;
398
+ if (!isPrimary) {
399
+ targetDbi = openRocksDb(targetPath, { dupSort: true, name: key });
400
+ } else {
401
+ targetDbi = openRocksDb(targetPath, { name: key });
402
+ }
403
+
404
+ console.log('migrating', key, 'from', sourceDatabase, 'to RocksDB');
405
+ await copyDbiToRocks(sourceDbi, targetDbi, isPrimary, transaction);
406
+ }
407
+
408
+ // Note: audit store is not migrated because LMDB and RocksDB use fundamentally different
409
+ // audit store formats (LMDB uses a custom binary encoding in a regular DB, RocksDB uses TransactionLog).
410
+ // A new audit store will be created automatically when the RocksDB database is opened.
411
+
412
+ await written;
413
+ console.log('migrated database ' + sourceDatabase + ' to RocksDB');
414
+ } finally {
415
+ transaction.done();
416
+ targetRootStore.close();
417
+ }
418
+
419
+ async function copyDbiToRocks(sourceDbi, targetDbi, isPrimary, transaction) {
420
+ let recordsCopied = 0;
421
+ let skippedRecord = 0;
422
+ let retries = 1000000;
423
+ let start = null;
424
+ while (retries-- > 0) {
425
+ try {
426
+ if (isPrimary) {
427
+ for (const { key, value, version } of sourceDbi.getRange({ start, transaction, versions: true })) {
428
+ try {
429
+ start = key;
430
+ if (value == null) {
431
+ skippedRecord++;
432
+ continue;
433
+ }
434
+ written = targetDbi.put(key, value, version);
435
+ recordsCopied++;
436
+ if (transaction.openTimer) transaction.openTimer = 0;
437
+ if (outstandingWrites++ > 5000) {
438
+ await written;
439
+ console.log('migrated', recordsCopied, 'entries, skipped', skippedRecord, 'delete records');
440
+ outstandingWrites = 0;
441
+ }
442
+ } catch (error) {
443
+ console.error(
444
+ 'Error migrating record',
445
+ typeof key === 'symbol' ? 'symbol' : key,
446
+ 'from',
447
+ sourceDatabase,
448
+ error
449
+ );
450
+ }
451
+ }
452
+ } else {
453
+ for (const { key, value } of sourceDbi.getRange({ start, transaction })) {
454
+ try {
455
+ start = key;
456
+ written = targetDbi.put(key, value);
457
+ recordsCopied++;
458
+ if (transaction.openTimer) transaction.openTimer = 0;
459
+ if (outstandingWrites++ > 5000) {
460
+ await written;
461
+ console.log('migrated', recordsCopied, 'index entries');
462
+ outstandingWrites = 0;
463
+ }
464
+ } catch (error) {
465
+ console.error(
466
+ 'Error migrating index record',
467
+ typeof key === 'symbol' ? 'symbol' : key,
468
+ 'from',
469
+ sourceDatabase,
470
+ error
471
+ );
472
+ }
473
+ }
474
+ }
475
+ console.log('finish migrating, copied', recordsCopied, 'entries, skipped', skippedRecord, 'delete records');
476
+ return;
477
+ } catch {
478
+ if (typeof start === 'string') {
479
+ if (start === 'z') {
480
+ return console.error('Reached end of dbi', start, 'for', sourceDatabase);
481
+ }
482
+ start = start.slice(0, -2) + 'z';
483
+ } else if (typeof start === 'number') start++;
484
+ else return console.error('Unknown key type', start, 'for', sourceDatabase);
485
+ }
486
+ }
487
+ }
488
+ }
package/bin/restart.js CHANGED
@@ -61,12 +61,6 @@ async function restart(req) {
61
61
 
62
62
  if (envMgr.get(hdbTerms.CONFIG_PARAMS.STORAGE_COMPACTONSTART)) await compactOnStart();
63
63
 
64
- if (process.env.HARPER_EXIT_ON_RESTART) {
65
- // use this to exit the process so that it will be restarted by the
66
- // PM/container/orchestrator.
67
- hdbLogger.warn('Exiting Harper process to trigger a container restart');
68
- process.exit(0);
69
- }
70
64
  setTimeout(async () => {
71
65
  // It seems like you should just be able to start the other process and kill this process and everything should
72
66
  // be cleaned up, however that doesn't work for some reason; the socket listening fds somehow get transferred to the
@@ -79,9 +73,16 @@ async function restart(req) {
79
73
  // remove pid file so it doesn't trip up the launch
80
74
  await unlinkSync(path.join(envMgr.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), hdbTerms.HDB_PID_FILE), `${process.pid}`);
81
75
  hdbLogger.debug('Starting new process...');
76
+ if (process.env.HARPER_EXIT_ON_RESTART) {
77
+ // use this to exit the process so that it will be restarted by the
78
+ // PM/container/orchestrator.
79
+ hdbLogger.warn('Exiting Harper process to trigger a container restart');
80
+ process.exit(0);
81
+ }
82
82
  // now launch the new process and exit this process
83
83
  require('./run.js').launch(true);
84
- }, 50); // can't await this because it is going to do an exit()
84
+ }, 50); // can't await this because it is going to do an exit(), but wait for 50ms so we give the HTTP thread a
85
+ // chance to return a response
85
86
  } else {
86
87
  // Post msg to main parent thread requesting it restart (so the main thread can process.exit())
87
88
  parentPort.postMessage({
package/bin/run.js CHANGED
@@ -19,7 +19,7 @@ const installation = require('../utility/installation.ts');
19
19
  const configUtils = require('../config/configUtils.js');
20
20
  const assignCMDENVVariables = require('../utility/assignCmdEnvVariables.js');
21
21
  const upgrade = require('./upgrade.js');
22
- const { compactOnStart } = require('./copyDb.ts');
22
+ const { compactOnStart, migrateOnStart } = require('./copyDb.ts');
23
23
  const minimist = require('minimist');
24
24
  const keys = require('../security/keys.js');
25
25
  const { startHTTPThreads } = require('../server/threads/socketRouter.ts');
@@ -192,6 +192,7 @@ async function main(calledByInstall = false) {
192
192
  await initialize(calledByInstall, true);
193
193
 
194
194
  if (env.get(terms.CONFIG_PARAMS.STORAGE_COMPACTONSTART)) await compactOnStart();
195
+ if (env.get(terms.CONFIG_PARAMS.STORAGE_MIGRATEONSTART)) await migrateOnStart();
195
196
 
196
197
  const isScripted = process.env.IS_SCRIPTED_SERVICE && !cmdArgs.service;
197
198
 
@@ -58,7 +58,7 @@ function buildRequest() {
58
58
  */
59
59
  async function cliOperations(req) {
60
60
  if (!req.target) {
61
- req.target = process.env.CLI_TARGET;
61
+ req.target = process.env.HARPER_CLI_TARGET || process.env.CLI_TARGET;
62
62
  }
63
63
  let target;
64
64
  if (req.target) {
@@ -70,21 +70,23 @@ async function cliOperations(req) {
70
70
  target = new URL(`https://${req.target}:9925`);
71
71
  }
72
72
  catch {
73
- throw error; // throw the original error
73
+ throw error;
74
74
  }
75
75
  }
76
76
  target = {
77
77
  protocol: target.protocol,
78
78
  hostname: target.hostname,
79
79
  port: target.port,
80
- username: req.username || target.username || process.env.CLI_TARGET_USERNAME,
81
- password: req.password || target.password || process.env.CLI_TARGET_PASSWORD,
80
+ username: req.username || target.username || process.env.HARPER_CLI_USERNAME || process.env.CLI_TARGET_USERNAME,
81
+ password: req.password || target.password || process.env.HARPER_CLI_PASSWORD || process.env.CLI_TARGET_PASSWORD,
82
82
  rejectUnauthorized: req.rejectUnauthorized,
83
83
  };
84
+ console.error(`Connecting to ${target.protocol}//${target.hostname}:${target.port}`);
84
85
  }
85
86
  else {
86
87
  // if we aren't doing a targeted operation (like deploy), we initialize the config and verify that local harper
87
88
  // is running and that we can communicate with it.
89
+ console.error('Connecting to local Harper instance');
88
90
  initConfig();
89
91
  if (!getHdbPid()) {
90
92
  console.error('Harper must be running to perform this operation');
@@ -1 +1 @@
1
- {"version":3,"file":"cliOperations.js","sourceRoot":"","sources":["../../bin/cliOperations.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliOperations.js","sourceRoot":"","sources":["../../bin/cliOperations.js"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare function compactOnStart(): Promise<void>;
2
2
  export declare function copyDb(sourceDatabase: string, targetDatabasePath: string): Promise<void>;
3
+ export declare function migrateOnStart(): Promise<void>;
@@ -38,10 +38,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.compactOnStart = compactOnStart;
40
40
  exports.copyDb = copyDb;
41
+ exports.migrateOnStart = migrateOnStart;
41
42
  const databases_ts_1 = require("../resources/databases.js");
42
43
  const lmdb_1 = require("lmdb");
43
44
  const path_1 = require("path");
44
45
  const fs_extra_1 = require("fs-extra");
46
+ const node_fs_1 = require("node:fs");
45
47
  const environmentManager_js_1 = require("../utility/environment/environmentManager.js");
46
48
  const OpenEnvironmentObject_js_1 = __importDefault(require("../utility/lmdb/OpenEnvironmentObject.js"));
47
49
  const OpenDBIObject_js_1 = require("../utility/lmdb/OpenDBIObject.js");
@@ -51,6 +53,8 @@ const auditStore_ts_1 = require("../resources/auditStore.js");
51
53
  const schemaDescribe_js_1 = require("../dataLayer/schemaDescribe.js");
52
54
  const configUtils_js_1 = require("../config/configUtils.js");
53
55
  const hdbLogger = __importStar(require("../utility/logging/harper_logger.js"));
56
+ const rocksdb_js_1 = require("@harperfast/rocksdb-js");
57
+ const RocksIndexStore_ts_1 = require("../resources/RocksIndexStore.js");
54
58
  async function compactOnStart() {
55
59
  hdbLogger.notify('Running compact on start');
56
60
  console.log('Running compact on start');
@@ -295,4 +299,197 @@ async function copyDb(sourceDatabase, targetDatabasePath) {
295
299
  targetEnv.close();
296
300
  }
297
301
  }
302
+ function openRocksDb(path, options = {}) {
303
+ options.disableWAL ??= false;
304
+ if (!(0, node_fs_1.existsSync)(path)) {
305
+ (0, node_fs_1.mkdirSync)(path, { recursive: true });
306
+ }
307
+ let db;
308
+ if (options.dupSort) {
309
+ db = rocksdb_js_1.RocksDatabase.open(new RocksIndexStore_ts_1.RocksIndexStore(path, options));
310
+ }
311
+ else {
312
+ db = rocksdb_js_1.RocksDatabase.open(path, options);
313
+ db.encoder.name = options.name;
314
+ }
315
+ return db;
316
+ }
317
+ async function migrateOnStart() {
318
+ hdbLogger.notify('Running migrate on start (LMDB to RocksDB)');
319
+ console.log('Running migrate on start (LMDB to RocksDB)');
320
+ const rootPath = (0, environmentManager_js_1.get)(hdbTerms_ts_1.CONFIG_PARAMS.ROOTPATH);
321
+ const databases = (0, databases_ts_1.getDatabases)();
322
+ (0, configUtils_js_1.updateConfigValue)(hdbTerms_ts_1.CONFIG_PARAMS.STORAGE_MIGRATEONSTART, false);
323
+ try {
324
+ for (const databaseName in databases) {
325
+ if (databaseName === 'system')
326
+ continue;
327
+ if (databaseName.endsWith('-copy'))
328
+ continue;
329
+ let rootStore;
330
+ for (const tableName in databases[databaseName]) {
331
+ const table = databases[databaseName][tableName];
332
+ table.primaryStore.put = noop;
333
+ table.primaryStore.remove = noop;
334
+ for (const attributeName in table.indices) {
335
+ const index = table.indices[attributeName];
336
+ index.put = noop;
337
+ index.remove = noop;
338
+ }
339
+ if (table.auditStore) {
340
+ table.auditStore.put = noop;
341
+ table.auditStore.remove = noop;
342
+ }
343
+ rootStore = table.primaryStore.rootStore;
344
+ }
345
+ if (!rootStore) {
346
+ console.log("Couldn't find any tables in database", databaseName);
347
+ continue;
348
+ }
349
+ if (rootStore instanceof rocksdb_js_1.RocksDatabase) {
350
+ console.log('Database', databaseName, 'is already RocksDB, skipping');
351
+ continue;
352
+ }
353
+ const targetPath = (0, path_1.join)(rootPath, hdbTerms_ts_1.DATABASES_DIR_NAME, databaseName);
354
+ const lmdbPath = rootStore.path;
355
+ const backupDest = (0, path_1.join)(rootPath, 'backup', databaseName + '.mdb');
356
+ console.log('Migrating', databaseName, 'from LMDB to RocksDB at', targetPath);
357
+ await copyDbToRocks(rootStore, databaseName, targetPath);
358
+ // Back up the original LMDB file
359
+ console.log('Backing up LMDB', databaseName, 'to', backupDest);
360
+ try {
361
+ await (0, fs_extra_1.move)(lmdbPath, backupDest, { overwrite: true });
362
+ }
363
+ catch (error) {
364
+ console.log('Error moving database', lmdbPath, 'to', backupDest, error);
365
+ }
366
+ // Remove the lock file
367
+ try {
368
+ await (0, fs_extra_1.remove)(lmdbPath + '-lock');
369
+ }
370
+ catch {
371
+ // lock file may not exist
372
+ }
373
+ }
374
+ try {
375
+ (0, databases_ts_1.resetDatabases)();
376
+ }
377
+ catch (err) {
378
+ hdbLogger.error('Error resetting databases after migration', err);
379
+ console.error('Error resetting databases after migration', err);
380
+ }
381
+ }
382
+ catch (err) {
383
+ hdbLogger.error('Error migrating database', err);
384
+ console.error('Error migrating database', err);
385
+ throw err;
386
+ }
387
+ }
388
+ async function copyDbToRocks(sourceRootStore, sourceDatabase, targetPath) {
389
+ console.log(`Migrating database ${sourceDatabase} to RocksDB at ${targetPath}`);
390
+ const sourceDbisDb = sourceRootStore.dbisDb;
391
+ const targetRootStore = openRocksDb(targetPath, { disableWAL: false });
392
+ const targetDbisDb = openRocksDb(targetPath, {
393
+ disableWAL: false,
394
+ name: terms_js_1.INTERNAL_DBIS_NAME,
395
+ });
396
+ let written;
397
+ let outstandingWrites = 0;
398
+ const transaction = sourceDbisDb.useReadTransaction();
399
+ try {
400
+ for (const { key, value: attribute } of sourceDbisDb.getRange({ transaction })) {
401
+ const isPrimary = attribute.isPrimaryKey;
402
+ targetDbisDb.put(key, attribute);
403
+ if (!(isPrimary || attribute.indexed))
404
+ continue;
405
+ // Open source LMDB dbi with default encoding so values are decoded
406
+ const dbiInit = new OpenDBIObject_js_1.OpenDBIObject(!isPrimary, isPrimary);
407
+ const sourceDbi = sourceRootStore.openDB(key, dbiInit);
408
+ let targetDbi;
409
+ if (!isPrimary) {
410
+ targetDbi = openRocksDb(targetPath, { dupSort: true, name: key });
411
+ }
412
+ else {
413
+ targetDbi = openRocksDb(targetPath, { name: key });
414
+ }
415
+ console.log('migrating', key, 'from', sourceDatabase, 'to RocksDB');
416
+ await copyDbiToRocks(sourceDbi, targetDbi, isPrimary, transaction);
417
+ }
418
+ // Note: audit store is not migrated because LMDB and RocksDB use fundamentally different
419
+ // audit store formats (LMDB uses a custom binary encoding in a regular DB, RocksDB uses TransactionLog).
420
+ // A new audit store will be created automatically when the RocksDB database is opened.
421
+ await written;
422
+ console.log('migrated database ' + sourceDatabase + ' to RocksDB');
423
+ }
424
+ finally {
425
+ transaction.done();
426
+ targetRootStore.close();
427
+ }
428
+ async function copyDbiToRocks(sourceDbi, targetDbi, isPrimary, transaction) {
429
+ let recordsCopied = 0;
430
+ let skippedRecord = 0;
431
+ let retries = 1000000;
432
+ let start = null;
433
+ while (retries-- > 0) {
434
+ try {
435
+ if (isPrimary) {
436
+ for (const { key, value, version } of sourceDbi.getRange({ start, transaction, versions: true })) {
437
+ try {
438
+ start = key;
439
+ if (value == null) {
440
+ skippedRecord++;
441
+ continue;
442
+ }
443
+ written = targetDbi.put(key, value, version);
444
+ recordsCopied++;
445
+ if (transaction.openTimer)
446
+ transaction.openTimer = 0;
447
+ if (outstandingWrites++ > 5000) {
448
+ await written;
449
+ console.log('migrated', recordsCopied, 'entries, skipped', skippedRecord, 'delete records');
450
+ outstandingWrites = 0;
451
+ }
452
+ }
453
+ catch (error) {
454
+ console.error('Error migrating record', typeof key === 'symbol' ? 'symbol' : key, 'from', sourceDatabase, error);
455
+ }
456
+ }
457
+ }
458
+ else {
459
+ for (const { key, value } of sourceDbi.getRange({ start, transaction })) {
460
+ try {
461
+ start = key;
462
+ written = targetDbi.put(key, value);
463
+ recordsCopied++;
464
+ if (transaction.openTimer)
465
+ transaction.openTimer = 0;
466
+ if (outstandingWrites++ > 5000) {
467
+ await written;
468
+ console.log('migrated', recordsCopied, 'index entries');
469
+ outstandingWrites = 0;
470
+ }
471
+ }
472
+ catch (error) {
473
+ console.error('Error migrating index record', typeof key === 'symbol' ? 'symbol' : key, 'from', sourceDatabase, error);
474
+ }
475
+ }
476
+ }
477
+ console.log('finish migrating, copied', recordsCopied, 'entries, skipped', skippedRecord, 'delete records');
478
+ return;
479
+ }
480
+ catch {
481
+ if (typeof start === 'string') {
482
+ if (start === 'z') {
483
+ return console.error('Reached end of dbi', start, 'for', sourceDatabase);
484
+ }
485
+ start = start.slice(0, -2) + 'z';
486
+ }
487
+ else if (typeof start === 'number')
488
+ start++;
489
+ else
490
+ return console.error('Unknown key type', start, 'for', sourceDatabase);
491
+ }
492
+ }
493
+ }
494
+ }
298
495
  //# sourceMappingURL=copyDb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copyDb.js","sourceRoot":"","sources":["../../bin/copyDb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copyDb.js","sourceRoot":"","sources":["../../bin/copyDb.ts"],"names":[],"mappings":"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"}