@harperfast/harper 5.2.0-beta.4 → 5.2.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/bin/backup.ts +169 -0
- package/bin/cliOperations.ts +92 -73
- package/bin/harper.ts +25 -6
- package/components/Scope.ts +52 -6
- package/components/componentLoader.ts +107 -9
- package/components/mcp/toolRegistry.ts +10 -0
- package/components/mcp/tools/application.ts +12 -5
- package/components/mcp/tools/operations.ts +3 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +3 -0
- package/components/mcp/tools/schemas/operations.ts +9 -0
- package/components/operations.js +1 -0
- package/components/operationsValidation.js +32 -2
- package/components/scopeMount.ts +150 -0
- package/config-root.schema.json +4 -0
- package/dataLayer/backupManifest.ts +102 -0
- package/dataLayer/blobBackup.ts +286 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +43 -0
- package/dataLayer/restoreMarker.ts +276 -0
- package/dataLayer/rocksdbBackup.ts +1100 -0
- package/dist/bin/backup.d.ts +9 -0
- package/dist/bin/backup.js +192 -0
- package/dist/bin/backup.js.map +1 -0
- package/dist/bin/cliOperations.d.ts +13 -0
- package/dist/bin/cliOperations.js +89 -70
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/harper.d.ts +7 -0
- package/dist/bin/harper.js +27 -6
- package/dist/bin/harper.js.map +1 -1
- package/dist/components/Scope.d.ts +37 -1
- package/dist/components/Scope.js +48 -6
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/componentLoader.d.ts +2 -6
- package/dist/components/componentLoader.js +91 -8
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/mcp/toolRegistry.d.ts +7 -0
- package/dist/components/mcp/toolRegistry.js +10 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -1
- package/dist/components/mcp/tools/application.js +11 -5
- package/dist/components/mcp/tools/application.js.map +1 -1
- package/dist/components/mcp/tools/operations.js +3 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operations.js +9 -0
- package/dist/components/mcp/tools/schemas/operations.js.map +1 -1
- package/dist/components/operations.js +2 -0
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.js +34 -2
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/scopeMount.d.ts +86 -0
- package/dist/components/scopeMount.js +131 -0
- package/dist/components/scopeMount.js.map +1 -0
- package/dist/dataLayer/backupManifest.d.ts +26 -0
- package/dist/dataLayer/backupManifest.js +97 -0
- package/dist/dataLayer/backupManifest.js.map +1 -0
- package/dist/dataLayer/blobBackup.d.ts +87 -0
- package/dist/dataLayer/blobBackup.js +282 -0
- package/dist/dataLayer/blobBackup.js.map +1 -0
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +3 -0
- package/dist/dataLayer/harperBridge/ResourceBridge.js +33 -0
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/restoreMarker.d.ts +122 -0
- package/dist/dataLayer/restoreMarker.js +261 -0
- package/dist/dataLayer/restoreMarker.js.map +1 -0
- package/dist/dataLayer/rocksdbBackup.d.ts +127 -0
- package/dist/dataLayer/rocksdbBackup.js +1039 -0
- package/dist/dataLayer/rocksdbBackup.js.map +1 -0
- package/dist/resources/DatabaseTransaction.js +0 -6
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +0 -3
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Table.js +22 -22
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/blob.d.ts +8 -0
- package/dist/resources/blob.js +16 -7
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/databases.d.ts +42 -1
- package/dist/resources/databases.js +276 -40
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/transaction.js +0 -3
- package/dist/resources/transaction.js.map +1 -1
- package/dist/server/REST.js +25 -9
- package/dist/server/REST.js.map +1 -1
- package/dist/server/fastifyRoutes.js +15 -1
- package/dist/server/fastifyRoutes.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +7 -1
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +20 -1
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobRunner.js +10 -0
- package/dist/server/jobs/jobRunner.js.map +1 -1
- package/dist/server/jobs/jobs.js +11 -0
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/middlewareChain.d.ts +10 -1
- package/dist/server/middlewareChain.js +81 -21
- package/dist/server/middlewareChain.js.map +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +8 -4
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.js +11 -0
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +11 -3
- package/dist/server/static.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.js +25 -6
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +11 -1
- package/dist/utility/hdbTerms.js +11 -1
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +40 -0
- package/dist/utility/logging/harper_logger.js +746 -14
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/operation_authorization.js +13 -3
- package/dist/utility/operation_authorization.js.map +1 -1
- package/npm-shrinkwrap.json +3 -2
- package/package.json +4 -1
- package/resources/DESIGN.md +2 -0
- package/resources/DatabaseTransaction.ts +0 -3
- package/resources/ResourceInterface.ts +0 -3
- package/resources/Table.ts +20 -20
- package/resources/blob.ts +16 -6
- package/resources/databases.ts +272 -42
- package/resources/transaction.ts +0 -3
- package/server/DESIGN.md +16 -0
- package/server/REST.ts +25 -9
- package/server/fastifyRoutes.ts +20 -1
- package/server/itc/serverHandlers.js +7 -1
- package/server/jobs/jobProcess.ts +18 -1
- package/server/jobs/jobRunner.ts +10 -0
- package/server/jobs/jobs.ts +11 -0
- package/server/middlewareChain.ts +79 -20
- package/server/serverHelpers/serverHandlers.js +8 -4
- package/server/serverHelpers/serverUtilities.ts +19 -0
- package/server/static.ts +12 -3
- package/static/defaultConfig.yaml +1 -0
- package/studio/web/assets/{Chat-DK3GlWEb.js → Chat-DoVWScmq.js} +2 -2
- package/studio/web/assets/{Chat-DK3GlWEb.js.map → Chat-DoVWScmq.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-fBcC1Ew_.js → FloatingChat-UZ2NsUOZ.js} +4 -4
- package/studio/web/assets/{FloatingChat-fBcC1Ew_.js.map → FloatingChat-UZ2NsUOZ.js.map} +1 -1
- package/studio/web/assets/{apiToken-DJo1nakA.js → apiToken-BUI_04o7.js} +2 -2
- package/studio/web/assets/{apiToken-DJo1nakA.js.map → apiToken-BUI_04o7.js.map} +1 -1
- package/studio/web/assets/{applications-BDfH8urd.js → applications-D03NA7wW.js} +2 -2
- package/studio/web/assets/{applications-BDfH8urd.js.map → applications-D03NA7wW.js.map} +1 -1
- package/studio/web/assets/{index-BHo3c2Gk.js → index-Bh_CNAHr.js} +6 -6
- package/studio/web/assets/index-Bh_CNAHr.js.map +1 -0
- package/studio/web/assets/{index.lazy-BTo0y6UM.js → index.lazy-Dx3MpyDC.js} +4 -4
- package/studio/web/assets/{index.lazy-BTo0y6UM.js.map → index.lazy-Dx3MpyDC.js.map} +1 -1
- package/studio/web/assets/{notifications-CMxvWNnz.js → notifications-0edoFTsb.js} +2 -2
- package/studio/web/assets/{notifications-CMxvWNnz.js.map → notifications-0edoFTsb.js.map} +1 -1
- package/studio/web/assets/{notifications-D3GoB26g.js → notifications-CwKhipK7.js} +2 -2
- package/studio/web/assets/{notifications-D3GoB26g.js.map → notifications-CwKhipK7.js.map} +1 -1
- package/studio/web/assets/{profile-Doj5FVDE.js → profile-DUfEPQtx.js} +2 -2
- package/studio/web/assets/{profile-Doj5FVDE.js.map → profile-DUfEPQtx.js.map} +1 -1
- package/studio/web/assets/{setComponentFile-yinsqJy0.js → setComponentFile-DMPo4UjC.js} +2 -2
- package/studio/web/assets/{setComponentFile-yinsqJy0.js.map → setComponentFile-DMPo4UjC.js.map} +1 -1
- package/studio/web/assets/{setup-DJwR0BHd.js → setup-B56Oz1_u.js} +2 -2
- package/studio/web/assets/{setup-DJwR0BHd.js.map → setup-B56Oz1_u.js.map} +1 -1
- package/studio/web/assets/{status-Br_AbsJs.js → status-BAod7p3o.js} +2 -2
- package/studio/web/assets/{status-Br_AbsJs.js.map → status-BAod7p3o.js.map} +1 -1
- package/studio/web/assets/{swagger-ui-react-02XH5sVf.js → swagger-ui-react-lQrBxfwM.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-02XH5sVf.js.map → swagger-ui-react-lQrBxfwM.js.map} +1 -1
- package/studio/web/assets/{tsMode-D1DMKY7h.js → tsMode-CrHCRjTK.js} +2 -2
- package/studio/web/assets/{tsMode-D1DMKY7h.js.map → tsMode-CrHCRjTK.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-DtRblRgw.js → useEntityRestURL-DoaBMEvU.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-DtRblRgw.js.map → useEntityRestURL-DoaBMEvU.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/utility/OperationFunctionCaller.ts +24 -3
- package/utility/hdbTerms.ts +11 -1
- package/utility/logging/harper_logger.ts +729 -15
- package/utility/operation_authorization.ts +31 -3
- package/studio/web/assets/index-BHo3c2Gk.js.map +0 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.blobsRootDir = blobsRootDir;
|
|
7
|
+
exports.blobSnapshotDir = blobSnapshotDir;
|
|
8
|
+
exports.snapshotBlobs = snapshotBlobs;
|
|
9
|
+
exports.blobsReadmeContent = blobsReadmeContent;
|
|
10
|
+
exports.writeBlobsReadme = writeBlobsReadme;
|
|
11
|
+
exports.assertBlobSnapshotRestorable = assertBlobSnapshotRestorable;
|
|
12
|
+
exports.restoreBlobSnapshot = restoreBlobSnapshot;
|
|
13
|
+
exports.deleteBlobSnapshot = deleteBlobSnapshot;
|
|
14
|
+
exports.purgeBlobSnapshots = purgeBlobSnapshots;
|
|
15
|
+
const node_fs_1 = require("node:fs");
|
|
16
|
+
const promises_1 = require("node:fs/promises");
|
|
17
|
+
const node_path_1 = require("node:path");
|
|
18
|
+
const hdbError_ts_1 = require("../utility/errors/hdbError.js");
|
|
19
|
+
const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_logger.js"));
|
|
20
|
+
/**
|
|
21
|
+
* Managed-backup snapshotting of a database's file-backed blobs.
|
|
22
|
+
*
|
|
23
|
+
* A database's blobs live in one or more root directories *outside* the RocksDB directory (see
|
|
24
|
+
* `resources/blob.ts` `getBlobPathsForDatabaseName`), so the engine's own backup does not capture
|
|
25
|
+
* them. These helpers snapshot the blob roots alongside a RocksDB managed backup and restore them
|
|
26
|
+
* with it, so a restored database's records still resolve their file-backed blobs.
|
|
27
|
+
*
|
|
28
|
+
* Layout mirrors the binding's transaction-log snapshots (`<backupDir>/transaction_logs/<id>/`): a
|
|
29
|
+
* full, non-incremental copy per backup at `<backupDir>/blobs/<backupId>/<rootIndex>/<relpath>`,
|
|
30
|
+
* where `rootIndex` is the position of the source root in the database's blob-root list (preserved
|
|
31
|
+
* so a multi-root database restores each root back to its original slot). Files are hard-linked when
|
|
32
|
+
* possible (cheap, no extra space on the same filesystem) and copied otherwise (never symlinked, so
|
|
33
|
+
* a snapshot is a standalone set of files that survives independent of the live blob).
|
|
34
|
+
*
|
|
35
|
+
* Consistency is best-effort and point-in-time-ish, matching how the engine treats the transaction
|
|
36
|
+
* log: the walk captures whatever files exist at snapshot time. A blob deleted mid-walk is skipped;
|
|
37
|
+
* a blob being written mid-walk is captured as-is (a hard link shares the inode, so it reflects the
|
|
38
|
+
* writer's final bytes; a cross-filesystem copy captures the bytes present at copy time). Harper
|
|
39
|
+
* does not freeze blob writes for the duration of a backup.
|
|
40
|
+
*
|
|
41
|
+
* Hard-linking is safe against later mutation because Harper blobs are content-addressed and
|
|
42
|
+
* write-once: each write allocates a fresh monotonic file id (a new path), and an update or delete
|
|
43
|
+
* unlinks the old path rather than rewriting it in place — so a snapshot's hard link keeps the exact
|
|
44
|
+
* bytes alive even after the live blob is deleted, and no in-place overwrite can retroactively alter
|
|
45
|
+
* a snapshot.
|
|
46
|
+
*/
|
|
47
|
+
/** Directory holding all blob snapshots for a backup repository. */
|
|
48
|
+
function blobsRootDir(backupDir) {
|
|
49
|
+
return (0, node_path_1.join)(backupDir, 'blobs');
|
|
50
|
+
}
|
|
51
|
+
/** Directory holding a single backup id's blob snapshot. */
|
|
52
|
+
function blobSnapshotDir(backupDir, backupId) {
|
|
53
|
+
return (0, node_path_1.join)(blobsRootDir(backupDir), String(backupId));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Hard-link `src` to `dest`, falling back to a copy when the two are on different filesystems (or
|
|
57
|
+
* the filesystem does not support additional hard links). Never creates a symlink. A source that
|
|
58
|
+
* vanished mid-walk (a concurrent blob delete) is skipped rather than failing the whole snapshot.
|
|
59
|
+
*/
|
|
60
|
+
async function linkOrCopy(src, dest) {
|
|
61
|
+
await (0, promises_1.mkdir)((0, node_path_1.dirname)(dest), { recursive: true });
|
|
62
|
+
try {
|
|
63
|
+
await (0, promises_1.link)(src, dest);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error.code === 'ENOENT') {
|
|
67
|
+
// src disappeared (concurrent delete) — nothing to snapshot
|
|
68
|
+
if (!(0, node_fs_1.existsSync)(src))
|
|
69
|
+
return;
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
if (error.code === 'EXDEV' || // cross-device link
|
|
73
|
+
error.code === 'EMLINK' || // link count exhausted
|
|
74
|
+
error.code === 'EPERM' || // filesystem forbids hard links
|
|
75
|
+
error.code === 'ENOTSUP' ||
|
|
76
|
+
error.code === 'EOPNOTSUPP') {
|
|
77
|
+
await (0, promises_1.copyFile)(src, dest);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (error.code === 'EEXIST') {
|
|
81
|
+
await (0, promises_1.unlink)(dest);
|
|
82
|
+
await linkOrCopy(src, dest);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Recursively copy every file under `srcRoot` into `destRoot` (hard-link-else-copy), preserving the
|
|
90
|
+
* relative directory structure. Missing `srcRoot` is a no-op (a database with no blobs yet).
|
|
91
|
+
*/
|
|
92
|
+
async function copyTree(srcRoot, destRoot) {
|
|
93
|
+
if (!(0, node_fs_1.existsSync)(srcRoot))
|
|
94
|
+
return;
|
|
95
|
+
const stack = [srcRoot];
|
|
96
|
+
while (stack.length > 0) {
|
|
97
|
+
const dir = stack.pop();
|
|
98
|
+
let entries;
|
|
99
|
+
try {
|
|
100
|
+
entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (error.code === 'ENOENT')
|
|
104
|
+
continue; // directory removed mid-walk
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
for (const entry of entries) {
|
|
108
|
+
const srcPath = (0, node_path_1.join)(dir, entry.name);
|
|
109
|
+
if (entry.isDirectory()) {
|
|
110
|
+
stack.push(srcPath);
|
|
111
|
+
}
|
|
112
|
+
else if (entry.isFile()) {
|
|
113
|
+
await linkOrCopy(srcPath, (0, node_path_1.join)(destRoot, (0, node_path_1.relative)(srcRoot, srcPath)));
|
|
114
|
+
}
|
|
115
|
+
// symlinks/other node types in a blob root are not expected and are intentionally skipped
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Snapshot a database's blob roots into a backup's blob directory. Writes to a temporary sibling
|
|
121
|
+
* and atomically renames into place so a create_backup that fails mid-copy never leaves a partial
|
|
122
|
+
* `blobs/<backupId>/` that a later restore would trust. Overwrites any pre-existing snapshot for the
|
|
123
|
+
* same id (create_backup always produces a fresh id, so this only matters on a retried offline run).
|
|
124
|
+
*/
|
|
125
|
+
async function snapshotBlobs(backupDir, backupId, blobRoots) {
|
|
126
|
+
const finalDir = blobSnapshotDir(backupDir, backupId);
|
|
127
|
+
const tempDir = (0, node_path_1.join)(blobsRootDir(backupDir), `.tmp-${backupId}`);
|
|
128
|
+
await (0, promises_1.rm)(tempDir, { recursive: true, force: true });
|
|
129
|
+
await (0, promises_1.mkdir)(tempDir, { recursive: true });
|
|
130
|
+
try {
|
|
131
|
+
for (let index = 0; index < blobRoots.length; index++) {
|
|
132
|
+
await copyTree(blobRoots[index], (0, node_path_1.join)(tempDir, String(index)));
|
|
133
|
+
}
|
|
134
|
+
await (0, promises_1.rm)(finalDir, { recursive: true, force: true });
|
|
135
|
+
await (0, promises_1.rename)(tempDir, finalDir);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
await (0, promises_1.rm)(tempDir, { recursive: true, force: true }).catch(() => { });
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
await writeBlobsReadme(backupDir, blobRoots);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Build the `blobs/README.md` documenting the blob snapshot layout, so an operator inspecting or
|
|
145
|
+
* hand-recovering a backup can decode the numeric directories. Two variants:
|
|
146
|
+
* - managed (default): a create_backup repository, where snapshots are keyed by backup id
|
|
147
|
+
* (`<backupId>/<rootIndex>/…`) and restore is automatic via `restore_backup`.
|
|
148
|
+
* - archive (`archive: true`): a downloaded `get_backup` tar, which holds a single snapshot with no
|
|
149
|
+
* backup-id level (`<rootIndex>/…`) and is restored by extracting the files back into the roots.
|
|
150
|
+
*/
|
|
151
|
+
function blobsReadmeContent(blobRoots, { archive = false } = {}) {
|
|
152
|
+
const rootMapping = blobRoots.length > 0 ? blobRoots.map((root, index) => ` ${index} -> ${root}`).join('\n') : ' (none)';
|
|
153
|
+
const layout = archive
|
|
154
|
+
? '<rootIndex>/<shard1>/<shard2>/<fileId>'
|
|
155
|
+
: '<backupId>/<rootIndex>/<shard1>/<shard2>/<fileId>';
|
|
156
|
+
const intro = archive
|
|
157
|
+
? `This directory holds this database's file-backed blobs within a downloaded \`get_backup\` archive.
|
|
158
|
+
To restore them, extract each \`<rootIndex>/\` tree back into the matching blob root (see the mapping
|
|
159
|
+
below and ../README.md).`
|
|
160
|
+
: `This directory holds point-in-time snapshots of this database's file-backed blobs, captured
|
|
161
|
+
alongside each RocksDB managed backup. You do not restore these by hand — \`restore_backup\` puts
|
|
162
|
+
them back automatically (see ../README.md); this file just documents the layout.`;
|
|
163
|
+
const backupIdBullet = archive
|
|
164
|
+
? ''
|
|
165
|
+
: `- **<backupId>** matches the RocksDB backup id (\`harper list_backups\`). Each id is a full,
|
|
166
|
+
independent snapshot (not incremental).
|
|
167
|
+
`;
|
|
168
|
+
return `# Harper blob snapshots
|
|
169
|
+
|
|
170
|
+
${intro}
|
|
171
|
+
|
|
172
|
+
## Directory layout
|
|
173
|
+
|
|
174
|
+
${layout}
|
|
175
|
+
|
|
176
|
+
${backupIdBullet}- **<rootIndex>** is which of the database's blob roots the file came from — the index into
|
|
177
|
+
\`storage.blobPaths[n]\`. When \`storage.blobPaths\` is not configured there is a single default root
|
|
178
|
+
(\`<rootPath>/blobs/<db>\`) at index 0. Current mapping for this backup:
|
|
179
|
+
|
|
180
|
+
${rootMapping}
|
|
181
|
+
|
|
182
|
+
- **<shard1>/<shard2>/<fileId>** is Harper's on-disk blob layout, copied verbatim from the live
|
|
183
|
+
root: the hex blob file id split into two directory levels plus the file itself (keeping roughly
|
|
184
|
+
4096 entries per directory). E.g. a blob with id \`0x12345678\` lives at \`12/345/678\`; a short id
|
|
185
|
+
like \`0xc1a\` lives at \`0/0/c1a\`.
|
|
186
|
+
|
|
187
|
+
Files are hard links to the live blobs when the backup is on the same filesystem, and copies
|
|
188
|
+
otherwise.
|
|
189
|
+
`;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Write the `blobs/README.md` into a managed backup's `blobs/` directory. Best-effort: a failure to
|
|
193
|
+
* write the doc must not fail an otherwise-successful backup.
|
|
194
|
+
*/
|
|
195
|
+
async function writeBlobsReadme(backupDir, blobRoots) {
|
|
196
|
+
try {
|
|
197
|
+
await (0, promises_1.writeFile)((0, node_path_1.join)(blobsRootDir(backupDir), 'README.md'), blobsReadmeContent(blobRoots));
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
harper_logger_ts_1.default.warn(`Failed to write blob snapshot README in ${backupDir}: ${error.message}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/** The blob-root indices present in a snapshot (sorted); [] when the backup has no blob snapshot. */
|
|
204
|
+
async function snapshotRootIndices(snapshotDir) {
|
|
205
|
+
if (!(0, node_fs_1.existsSync)(snapshotDir))
|
|
206
|
+
return [];
|
|
207
|
+
return (await (0, promises_1.readdir)(snapshotDir, { withFileTypes: true }))
|
|
208
|
+
.filter((entry) => entry.isDirectory() && /^\d+$/.test(entry.name))
|
|
209
|
+
.map((entry) => Number(entry.name))
|
|
210
|
+
.sort((a, b) => a - b);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Reject (before any destructive step) a restore whose snapshot has more blob roots than the
|
|
214
|
+
* database is currently configured with. File-backed blob references persist their `storageIndex`,
|
|
215
|
+
* so a record written under root index 1 keeps resolving through `blobRoots[1]`; collapsing the
|
|
216
|
+
* out-of-range index onto another root would preserve the bytes at the wrong address and the restore
|
|
217
|
+
* would "succeed" while reads of those blobs fail. The operator must reconcile `storage.blobPaths`
|
|
218
|
+
* to at least as many roots as the backup before restoring. Callers invoke this ahead of the engine
|
|
219
|
+
* restore so a mismatch never purges the database.
|
|
220
|
+
*/
|
|
221
|
+
async function assertBlobSnapshotRestorable(backupDir, backupId, blobRoots) {
|
|
222
|
+
const indices = await snapshotRootIndices(blobSnapshotDir(backupDir, backupId));
|
|
223
|
+
const maxIndex = indices.length > 0 ? indices[indices.length - 1] : -1;
|
|
224
|
+
if (maxIndex >= blobRoots.length) {
|
|
225
|
+
throw new hdbError_ts_1.ClientError(`Cannot restore backup ${backupId}: it captured ${maxIndex + 1} blob root(s) but the database is now configured with ${blobRoots.length}. ` +
|
|
226
|
+
`Blob references persist their root index, so restoring would mis-address blobs — set 'storage.blobPaths' to at least ${maxIndex + 1} root(s) before restoring.`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Restore a backup's blob snapshot back into the database's blob roots. Each root is purged and
|
|
231
|
+
* rewritten from `blobs/<backupId>/<rootIndex>/` so the restored blob set matches the backup exactly
|
|
232
|
+
* (a newer blob written after the backup is removed, mirroring the engine's `purgeAllFiles` restore).
|
|
233
|
+
*
|
|
234
|
+
* A backup created with blobs excluded (or an older backup that predates blob snapshots) has no
|
|
235
|
+
* snapshot directory: in that case the live blob roots are left untouched and a warning is logged,
|
|
236
|
+
* since purging them would strip blobs the restored records may still reference. Roots are restored
|
|
237
|
+
* by index into the *same* configured root; an incompatible root count is rejected up front (see
|
|
238
|
+
* `assertBlobSnapshotRestorable`) rather than collapsed, so blobs are never mis-addressed.
|
|
239
|
+
*/
|
|
240
|
+
async function restoreBlobSnapshot(backupDir, backupId, databaseName, blobRoots) {
|
|
241
|
+
const snapshotDir = blobSnapshotDir(backupDir, backupId);
|
|
242
|
+
if (!(0, node_fs_1.existsSync)(snapshotDir)) {
|
|
243
|
+
harper_logger_ts_1.default.warn(`Backup ${backupId} of database '${databaseName}' has no blob snapshot; leaving existing blob files in place (this backup did not include blobs)`);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
// defense in depth: the restore flow pre-checks before the engine restore, but re-validate here
|
|
247
|
+
// so this function never mis-addresses blobs regardless of caller
|
|
248
|
+
await assertBlobSnapshotRestorable(backupDir, backupId, blobRoots);
|
|
249
|
+
const indexDirs = await snapshotRootIndices(snapshotDir);
|
|
250
|
+
// purge every current blob root first so nothing newer than the backup survives the restore
|
|
251
|
+
for (const root of blobRoots) {
|
|
252
|
+
await (0, promises_1.rm)(root, { recursive: true, force: true });
|
|
253
|
+
}
|
|
254
|
+
for (const index of indexDirs) {
|
|
255
|
+
await copyTree((0, node_path_1.join)(snapshotDir, String(index)), blobRoots[index]);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Remove the blob snapshot for a single backup id (paired with `backups.delete`). Best-effort:
|
|
260
|
+
* a missing snapshot directory is fine.
|
|
261
|
+
*/
|
|
262
|
+
async function deleteBlobSnapshot(backupDir, backupId) {
|
|
263
|
+
await (0, promises_1.rm)(blobSnapshotDir(backupDir, backupId), { recursive: true, force: true });
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Remove blob snapshots for every backup id not in `keepIds` (paired with `backups.purge`, which
|
|
267
|
+
* reference-counts and removes the engine files; blob snapshots are full per-id copies, so they are
|
|
268
|
+
* simply deleted). Given the ids that survive the purge, this deletes the rest.
|
|
269
|
+
*/
|
|
270
|
+
async function purgeBlobSnapshots(backupDir, keepIds) {
|
|
271
|
+
const root = blobsRootDir(backupDir);
|
|
272
|
+
if (!(0, node_fs_1.existsSync)(root))
|
|
273
|
+
return;
|
|
274
|
+
for (const entry of await (0, promises_1.readdir)(root, { withFileTypes: true })) {
|
|
275
|
+
if (!entry.isDirectory() || !/^\d+$/.test(entry.name))
|
|
276
|
+
continue;
|
|
277
|
+
if (keepIds.has(Number(entry.name)))
|
|
278
|
+
continue;
|
|
279
|
+
await (0, promises_1.rm)((0, node_path_1.join)(root, entry.name), { recursive: true, force: true });
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=blobBackup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blobBackup.js","sourceRoot":"","sources":["../../dataLayer/blobBackup.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,7 @@ const harper_logger_ts_1 = require("../../utility/logging/harper_logger.js");
|
|
|
51
51
|
const rocksdb_js_1 = require("@harperfast/rocksdb-js");
|
|
52
52
|
const BridgeMethods_ts_1 = require("./BridgeMethods.js");
|
|
53
53
|
const lmdbGetBackup_js_1 = __importDefault(require("./lmdbBridge/lmdbMethods/lmdbGetBackup.js"));
|
|
54
|
+
const rocksdbBackup_ts_1 = require("../rocksdbBackup.js");
|
|
54
55
|
const DeleteTransactionLogsBeforeResults_ts_1 = require("./DeleteTransactionLogsBeforeResults.js");
|
|
55
56
|
const { HDB_ERROR_MSGS } = hdbError_ts_1.hdbErrors;
|
|
56
57
|
const DEFAULT_DATABASE = 'data';
|
|
@@ -535,6 +536,38 @@ class ResourceBridge extends BridgeMethods_ts_1.BridgeMethods {
|
|
|
535
536
|
}
|
|
536
537
|
}
|
|
537
538
|
async getBackup(getBackupObj) {
|
|
539
|
+
const databaseName = getBackupObj.database || getBackupObj.schema || 'data';
|
|
540
|
+
const database = (0, databases_ts_1.getDatabases)()[databaseName];
|
|
541
|
+
if (!database) {
|
|
542
|
+
throw new hdbError_ts_1.ClientError(`Database '${databaseName}' does not exist`, 404);
|
|
543
|
+
}
|
|
544
|
+
const firstTable = database[Object.keys(database)[0]];
|
|
545
|
+
if (!firstTable) {
|
|
546
|
+
throw new hdbError_ts_1.ClientError(`Database '${databaseName}' has no tables to back up`);
|
|
547
|
+
}
|
|
548
|
+
if (firstTable.primaryStore.rootStore instanceof rocksdb_js_1.RocksDatabase) {
|
|
549
|
+
// RocksDB: stream a fresh full-snapshot tar of the database's current state — no
|
|
550
|
+
// scratch disk, nothing to clean up. Per-engine params are validated descriptively.
|
|
551
|
+
if (getBackupObj.tables || getBackupObj.table) {
|
|
552
|
+
throw new hdbError_ts_1.ClientError(`'tables'/'table' are LMDB-only options; RocksDB backups are always whole-database`);
|
|
553
|
+
}
|
|
554
|
+
if (getBackupObj.include_audit !== undefined) {
|
|
555
|
+
throw new hdbError_ts_1.ClientError(`'include_audit' is an LMDB-only option; RocksDB backups always include the transaction log`);
|
|
556
|
+
}
|
|
557
|
+
if (getBackupObj.gzip !== undefined && typeof getBackupObj.gzip !== 'boolean') {
|
|
558
|
+
throw new hdbError_ts_1.ClientError(`'gzip' must be a boolean`);
|
|
559
|
+
}
|
|
560
|
+
if (getBackupObj.exclude_blobs !== undefined && typeof getBackupObj.exclude_blobs !== 'boolean') {
|
|
561
|
+
throw new hdbError_ts_1.ClientError(`'exclude_blobs' must be a boolean`);
|
|
562
|
+
}
|
|
563
|
+
const rootStore = (0, rocksdbBackup_ts_1.resolveSingleRootStore)(databaseName);
|
|
564
|
+
// gzip defaults on (it compresses the snapshot substantially); gzip=false opts out.
|
|
565
|
+
// blobs are included by default; exclude_blobs=true streams an engine-only tar.
|
|
566
|
+
return (0, rocksdbBackup_ts_1.createBackupStream)(rootStore, databaseName, getBackupObj.gzip !== false, getBackupObj.exclude_blobs === true);
|
|
567
|
+
}
|
|
568
|
+
if (getBackupObj.gzip !== undefined) {
|
|
569
|
+
throw new hdbError_ts_1.ClientError(`'gzip' is a RocksDB-only option; LMDB backups are gzipped per the accept-encoding header`);
|
|
570
|
+
}
|
|
538
571
|
return (0, lmdbGetBackup_js_1.default)(getBackupObj);
|
|
539
572
|
}
|
|
540
573
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceBridge.js","sourceRoot":"","sources":["../../../dataLayer/harperBridge/ResourceBridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResourceBridge.js","sourceRoot":"","sources":["../../../dataLayer/harperBridge/ResourceBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Restore lock + marker protocol for RocksDB database restores (online operation and offline CLI),
|
|
3
|
+
* and the shared per-database exclusion used by `dropDatabase` so a drop and a restore can never
|
|
4
|
+
* mutate the same directory concurrently.
|
|
5
|
+
*
|
|
6
|
+
* Restore metadata lives in an isolated `` `restore` `` directory *beside* the database directory
|
|
7
|
+
* (never inside it, since a restore purges the destination). Each database's two files are keyed by
|
|
8
|
+
* a hash of the database directory name rather than being suffixed onto the name itself. That keeps
|
|
9
|
+
* them out of the database-name namespace — a legal database literally named `orders.restoring`
|
|
10
|
+
* would otherwise be mistaken for the restore marker of `orders`, and a 250-character name plus a
|
|
11
|
+
* `.restore.lock` suffix would exceed the 255-byte `NAME_MAX` on most filesystems. The directory
|
|
12
|
+
* name deliberately contains a backtick: `schemaRegex` (the database-name validator) forbids only
|
|
13
|
+
* `/` and `` ` `` among filesystem-legal characters, so no legal database can ever occupy this path
|
|
14
|
+
* — including a database literally named `.restore` (which *is* a legal name, so a plain `.restore`
|
|
15
|
+
* directory would collide with it and land the markers inside the live database). The directory is
|
|
16
|
+
* not itself a RocksDB/LMDB database (no `CURRENT`/`MANIFEST-`/`.mdb`), so the startup scan ignores
|
|
17
|
+
* it, and no user can create a database that resolves to it.
|
|
18
|
+
*
|
|
19
|
+
* - `<meta-dir>/<key>.lock` — an OS-level exclusive file lock (via rocksdb-js `tryFileLock`),
|
|
20
|
+
* effective across processes, containers, and worker threads, auto-released on process exit.
|
|
21
|
+
* Only *held-ness* is meaningful; the file itself persists after release (harmless). Held for the
|
|
22
|
+
* duration of a restore, and briefly by `dropDatabase` so the two serialize on the same primitive.
|
|
23
|
+
* Known limitation: the lock is owned by the process, so if the restore job's worker *thread*
|
|
24
|
+
* dies without the process exiting, the lock stays held (restores 409) until Harper restarts.
|
|
25
|
+
* - `<meta-dir>/<key>.restoring` — the completion marker. Written (and fsynced) after the lock is
|
|
26
|
+
* acquired and before the destructive restore begins; deleted only after the restore completes
|
|
27
|
+
* successfully, while still holding the lock. Its *existence* means "a restore started and has
|
|
28
|
+
* not finished successfully". Its first line records the database directory name so the startup
|
|
29
|
+
* scan can map a marker back to the database it blocks without decoding the hashed key.
|
|
30
|
+
*/
|
|
31
|
+
export declare const RESTORE_META_DIR = "`restore`";
|
|
32
|
+
export declare const RESTORE_LOCK_SUFFIX = ".lock";
|
|
33
|
+
export declare const RESTORING_MARKER_SUFFIX = ".restoring";
|
|
34
|
+
/**
|
|
35
|
+
* Directory holding the restore metadata for a database — the reserved `` `restore` `` sibling of
|
|
36
|
+
* the database directory (see the module header for why the name contains a backtick). Shared by
|
|
37
|
+
* every database under the same parent, so a single readdir surfaces all pending restores during
|
|
38
|
+
* the startup scan.
|
|
39
|
+
*/
|
|
40
|
+
export declare function restoreMetaDir(dbPath: string): string;
|
|
41
|
+
export declare function restoreLockPath(dbPath: string): string;
|
|
42
|
+
export declare function restoringMarkerPath(dbPath: string): string;
|
|
43
|
+
export type RestoreState = 'in-progress' | 'incomplete' | 'clear';
|
|
44
|
+
/**
|
|
45
|
+
* Whether a `.restoring` marker exists for a database. Cheaper than `checkRestoreState` and, unlike
|
|
46
|
+
* it, safe to call while *this* thread holds the restore lock: `checkRestoreState` would re-probe
|
|
47
|
+
* the lock (which reads as held from the same thread) and report 'in-progress' rather than telling
|
|
48
|
+
* a caller that a *leftover* marker is present. `dropDatabase` uses this after acquiring the lock to
|
|
49
|
+
* distinguish debris from a crashed restore.
|
|
50
|
+
*/
|
|
51
|
+
export declare function restoreMarkerPresent(dbPath: string): boolean;
|
|
52
|
+
/** The lock and (optional) marker held by a begin/acquire call, threaded back to complete/abandon. */
|
|
53
|
+
export type RestoreLock = {
|
|
54
|
+
/** rocksdb-js file-lock token; non-zero. */
|
|
55
|
+
token: number;
|
|
56
|
+
/** The database directory this lock guards. */
|
|
57
|
+
dbPath: string;
|
|
58
|
+
/**
|
|
59
|
+
* True when a `.restoring` marker already existed at `beginRestore` time — i.e. this restore is a
|
|
60
|
+
* recovery attempt over a possibly half-purged directory. A pre-existing marker must never be
|
|
61
|
+
* cleared by a *failed* recovery attempt, or the directory could be reloaded as healthy while
|
|
62
|
+
* still partial. Only set on `beginRestore`; always false for a bare `acquireRestoreLock`.
|
|
63
|
+
*/
|
|
64
|
+
preexisting: boolean;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Determine the restore state of a database directory. Used by startup database detection and
|
|
68
|
+
* the open-database guards:
|
|
69
|
+
* - 'in-progress': marker present and the restore lock is held (a restore is running in some
|
|
70
|
+
* process) — do not load.
|
|
71
|
+
* - 'incomplete': marker present but the lock is free (crashed mid-restore; the directory may
|
|
72
|
+
* be partial garbage) — do not load; rerun the restore.
|
|
73
|
+
* - 'clear': no marker — load normally (a stale, unheld lock file alone is fine).
|
|
74
|
+
*
|
|
75
|
+
* The marker is checked FIRST and the lock is only probed when the marker exists. Probing takes
|
|
76
|
+
* and releases the flock, and probes are mutually exclusive across threads — if every rescan on
|
|
77
|
+
* every thread probed the (persistent) lock file of a long-ago-restored database, concurrent
|
|
78
|
+
* rescans would collide and misclassify healthy databases as 'in-progress'. Marker-first is
|
|
79
|
+
* safe: `beginRestore` writes (and fsyncs) the marker immediately after taking the lock and
|
|
80
|
+
* before any destructive step, so a database without a marker has nothing to protect yet.
|
|
81
|
+
*/
|
|
82
|
+
export declare function checkRestoreState(dbPath: string): RestoreState;
|
|
83
|
+
/**
|
|
84
|
+
* Take the per-database restore lock without writing a marker. Used by `dropDatabase` so a drop and
|
|
85
|
+
* a restore serialize on the same primitive: whichever takes the lock first runs to completion; the
|
|
86
|
+
* other gets a 409. Throws (statusCode 409) if the lock is already held.
|
|
87
|
+
*/
|
|
88
|
+
export declare function acquireRestoreLock(dbPath: string): RestoreLock;
|
|
89
|
+
/**
|
|
90
|
+
* Release a lock taken by `acquireRestoreLock` (no marker to remove).
|
|
91
|
+
*/
|
|
92
|
+
export declare function releaseRestoreLock(lock: RestoreLock): void;
|
|
93
|
+
/**
|
|
94
|
+
* Acquire the per-database restore lock and write the restoring marker. Call before any
|
|
95
|
+
* destructive step. Returns the lock (with `preexisting` set when a marker was already present, so
|
|
96
|
+
* a failed recovery attempt knows not to clear it). Throws (statusCode 409) if another restore
|
|
97
|
+
* already holds the lock.
|
|
98
|
+
*/
|
|
99
|
+
export declare function beginRestore(dbPath: string): RestoreLock;
|
|
100
|
+
/**
|
|
101
|
+
* Mark the restore successful: delete the marker (while still holding the lock), then release
|
|
102
|
+
* the lock.
|
|
103
|
+
*/
|
|
104
|
+
export declare function completeRestore(lock: RestoreLock): void;
|
|
105
|
+
/**
|
|
106
|
+
* Release the lock after a failed restore, leaving the marker in place so the database is
|
|
107
|
+
* detected as an incomplete restore (and not loaded) until a rerun succeeds.
|
|
108
|
+
*/
|
|
109
|
+
export declare function abandonRestore(lock: RestoreLock): void;
|
|
110
|
+
/**
|
|
111
|
+
* Remove a database's restore marker if one is present, then release the lock. Used by
|
|
112
|
+
* `dropDatabase`: a dropped database that carried an incomplete-restore marker should not leave the
|
|
113
|
+
* marker behind to block a future database of the same name. No-op on the marker if none exists.
|
|
114
|
+
*/
|
|
115
|
+
export declare function clearRestoreMarker(lock: RestoreLock): void;
|
|
116
|
+
/**
|
|
117
|
+
* Scan a databases root's reserved `` `restore` `` metadata directory and report every database currently blocked from
|
|
118
|
+
* loading, mapping each surviving marker back to its database name via the marker's first line.
|
|
119
|
+
* Returns `[dbName, state]` pairs for markers whose state is `in-progress` or `incomplete`
|
|
120
|
+
* (a `clear` result means the marker was removed concurrently and the database is loadable).
|
|
121
|
+
*/
|
|
122
|
+
export declare function scanBlockedRestores(databasesRoot: string): Array<[string, RestoreState]>;
|