spindb 0.70.3 → 0.71.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/dist/cli/commands/backup.js +58 -3
- package/dist/cli/commands/backup.js.map +1 -1
- package/dist/cli/commands/create.js +5 -0
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/menu/backup-handlers.js +7 -0
- package/dist/cli/commands/menu/backup-handlers.js.map +1 -1
- package/dist/cli/commands/restore.js +5 -0
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/start.js +31 -21
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/config/version.js +1 -1
- package/dist/core/container-manager.js +45 -16
- package/dist/core/container-manager.js.map +1 -1
- package/dist/core/database-capabilities.js +59 -1
- package/dist/core/database-capabilities.js.map +1 -1
- package/dist/core/database-presence.js +96 -0
- package/dist/core/database-presence.js.map +1 -0
- package/dist/core/primary-database.js +75 -0
- package/dist/core/primary-database.js.map +1 -0
- package/dist/core/pull-manager.js +15 -0
- package/dist/core/pull-manager.js.map +1 -1
- package/dist/core/temp-dump-cleanup.js +106 -0
- package/dist/core/temp-dump-cleanup.js.map +1 -0
- package/dist/engines/base-engine.js +19 -1
- package/dist/engines/base-engine.js.map +1 -1
- package/dist/engines/clickhouse/index.js +2 -1
- package/dist/engines/clickhouse/index.js.map +1 -1
- package/dist/engines/cockroachdb/index.js +2 -1
- package/dist/engines/cockroachdb/index.js.map +1 -1
- package/dist/engines/mariadb/index.js +41 -3
- package/dist/engines/mariadb/index.js.map +1 -1
- package/dist/engines/mysql/index.js +31 -3
- package/dist/engines/mysql/index.js.map +1 -1
- package/dist/engines/postgresql/index.js +2 -1
- package/dist/engines/postgresql/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { canDetectMissingDatabase, getListingHiddenDatabases, } from './database-capabilities.js';
|
|
2
|
+
import { logDebug } from './error-handler.js';
|
|
3
|
+
// Upper bound on the listing behind a presence probe. The probe runs on every
|
|
4
|
+
// start and wake, so a hung client must not stall them; a listing that takes
|
|
5
|
+
// longer is reported as 'unknown', which keeps every caller's old behavior.
|
|
6
|
+
const DATABASE_PRESENCE_TIMEOUT_MS = 10_000;
|
|
7
|
+
const LISTING_TIMED_OUT = Symbol('listing-timed-out');
|
|
8
|
+
/**
|
|
9
|
+
* Decide presence from an engine's listing. Pure, so the rules are testable
|
|
10
|
+
* without a server:
|
|
11
|
+
* - engines without durable database existence are always 'unknown'
|
|
12
|
+
* - an exact match is present, even when the database holds no data
|
|
13
|
+
* - a name the listing filters out (system databases) is 'unknown'
|
|
14
|
+
* - a case-insensitive-only match is 'unknown' (servers differ on name case)
|
|
15
|
+
*/
|
|
16
|
+
function classifyDatabasePresence(options) {
|
|
17
|
+
const { engine, name, listed } = options;
|
|
18
|
+
if (!name || !canDetectMissingDatabase(engine))
|
|
19
|
+
return 'unknown';
|
|
20
|
+
if (listed.includes(name))
|
|
21
|
+
return true;
|
|
22
|
+
const lowered = name.toLowerCase();
|
|
23
|
+
const hidden = getListingHiddenDatabases(engine);
|
|
24
|
+
if (hidden.some((db) => db.toLowerCase() === lowered))
|
|
25
|
+
return 'unknown';
|
|
26
|
+
if (listed.some((db) => db.toLowerCase() === lowered))
|
|
27
|
+
return 'unknown';
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve with the listing, or LISTING_TIMED_OUT once `timeoutMs` passes. On
|
|
32
|
+
* timeout the listing's signal is aborted, so an engine that honors it kills
|
|
33
|
+
* its client process: a leftover child with piped stdio would otherwise keep
|
|
34
|
+
* the CLI alive after a successful start. The timer is deliberately NOT
|
|
35
|
+
* unref'd: with a listing that never settles, an unref'd timer lets the event
|
|
36
|
+
* loop drain mid-await. It is always cleared once the race settles, so it
|
|
37
|
+
* cannot hold the process open afterward. A listing that settles after the
|
|
38
|
+
* deadline is ignored.
|
|
39
|
+
*/
|
|
40
|
+
async function listWithTimeout(options) {
|
|
41
|
+
const { engine, container, timeoutMs } = options;
|
|
42
|
+
const controller = new AbortController();
|
|
43
|
+
let timer;
|
|
44
|
+
const deadline = new Promise((resolve) => {
|
|
45
|
+
timer = setTimeout(() => {
|
|
46
|
+
controller.abort();
|
|
47
|
+
resolve(LISTING_TIMED_OUT);
|
|
48
|
+
}, timeoutMs);
|
|
49
|
+
});
|
|
50
|
+
try {
|
|
51
|
+
const listing = Promise.resolve(engine.listDatabases(container, { signal: controller.signal }));
|
|
52
|
+
// A late rejection (including the abort itself) must not surface as
|
|
53
|
+
// unhandled
|
|
54
|
+
listing.catch(() => { });
|
|
55
|
+
return await Promise.race([listing, deadline]);
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
clearTimeout(timer);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Probe a running server for a named database. Never throws: a failed,
|
|
63
|
+
* malformed, or slow listing (see DATABASE_PRESENCE_TIMEOUT_MS) yields
|
|
64
|
+
* 'unknown', never false.
|
|
65
|
+
*/
|
|
66
|
+
async function probeDatabasePresence(options) {
|
|
67
|
+
const { engine, container, name, timeoutMs = DATABASE_PRESENCE_TIMEOUT_MS, } = options;
|
|
68
|
+
try {
|
|
69
|
+
if (!name || !canDetectMissingDatabase(container.engine)) {
|
|
70
|
+
return { presence: 'unknown', listed: null };
|
|
71
|
+
}
|
|
72
|
+
const listed = await listWithTimeout({ engine, container, timeoutMs });
|
|
73
|
+
if (listed === LISTING_TIMED_OUT) {
|
|
74
|
+
logDebug(`listDatabases did not answer within ${timeoutMs}ms; presence of "${name}" is unknown`);
|
|
75
|
+
return { presence: 'unknown', listed: null };
|
|
76
|
+
}
|
|
77
|
+
if (!Array.isArray(listed) || listed.some((db) => typeof db !== 'string')) {
|
|
78
|
+
logDebug(`listDatabases returned a malformed result for ${name}`);
|
|
79
|
+
return { presence: 'unknown', listed: null };
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
presence: classifyDatabasePresence({
|
|
83
|
+
engine: container.engine,
|
|
84
|
+
name,
|
|
85
|
+
listed,
|
|
86
|
+
}),
|
|
87
|
+
listed,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
logDebug(`Could not determine whether database "${name}" exists: ${error instanceof Error ? error.message : String(error)}`);
|
|
92
|
+
return { presence: 'unknown', listed: null };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export { DATABASE_PRESENCE_TIMEOUT_MS, classifyDatabasePresence, probeDatabasePresence, };
|
|
96
|
+
//# sourceMappingURL=database-presence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-presence.js","sourceRoot":"","sources":["../../core/database-presence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { canCreateDatabase, canDetectMissingDatabase, } from './database-capabilities.js';
|
|
2
|
+
/**
|
|
3
|
+
* Probe the primary database, then run the ensure-database step start has
|
|
4
|
+
* always run. With `recreate` (the default) a missing database is created as
|
|
5
|
+
* before and reported as 'recreated'. Without it, an engine that can detect
|
|
6
|
+
* absence leaves the database missing (or skips the create when it could not
|
|
7
|
+
* tell) instead of creating an empty one. Engines that cannot detect absence
|
|
8
|
+
* keep the old behavior regardless of `recreate` and report 'unknown'.
|
|
9
|
+
*
|
|
10
|
+
* `firstStart` is a container that has never been started (created with
|
|
11
|
+
* --no-start). Its database was never there, so it is always created and
|
|
12
|
+
* reported as 'created', whatever `recreate` says.
|
|
13
|
+
*/
|
|
14
|
+
async function ensurePrimaryDatabase(options) {
|
|
15
|
+
const { engine, config, superuser, recreate, firstStart, onEnsureStart } = options;
|
|
16
|
+
const name = config.database ?? '';
|
|
17
|
+
const detectable = Boolean(name) && canDetectMissingDatabase(config.engine);
|
|
18
|
+
const presence = detectable
|
|
19
|
+
? await engine.databaseExists(config, name)
|
|
20
|
+
: 'unknown';
|
|
21
|
+
const ensureApplicable = canCreateDatabase(config.engine) && Boolean(name) && name !== superuser;
|
|
22
|
+
const leaveMissing = detectable && !recreate && !firstStart;
|
|
23
|
+
let ensure;
|
|
24
|
+
if (!ensureApplicable) {
|
|
25
|
+
ensure = { kind: 'not-applicable' };
|
|
26
|
+
}
|
|
27
|
+
else if (leaveMissing && presence === false) {
|
|
28
|
+
ensure = { kind: 'skipped-missing' };
|
|
29
|
+
}
|
|
30
|
+
else if (leaveMissing && presence === 'unknown') {
|
|
31
|
+
ensure = { kind: 'skipped-unknown' };
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
onEnsureStart?.();
|
|
35
|
+
try {
|
|
36
|
+
await engine.createDatabase(config, name);
|
|
37
|
+
ensure = { kind: 'ready', alreadyExisted: false };
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const message = error?.message ?? '';
|
|
41
|
+
ensure = /already exists/i.test(message)
|
|
42
|
+
? { kind: 'ready', alreadyExisted: true }
|
|
43
|
+
: { kind: 'failed', message };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
primaryDatabase: {
|
|
48
|
+
name,
|
|
49
|
+
state: resolvePrimaryDatabaseState({ presence, ensure, firstStart }),
|
|
50
|
+
},
|
|
51
|
+
ensure,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function resolvePrimaryDatabaseState(options) {
|
|
55
|
+
const { presence, ensure, firstStart } = options;
|
|
56
|
+
if (presence === true)
|
|
57
|
+
return 'present';
|
|
58
|
+
if (presence === 'unknown')
|
|
59
|
+
return 'unknown';
|
|
60
|
+
// The listing proved the database absent before the ensure step ran
|
|
61
|
+
switch (ensure.kind) {
|
|
62
|
+
case 'ready':
|
|
63
|
+
// A create that reports "already exists" means it appeared in between
|
|
64
|
+
if (ensure.alreadyExisted)
|
|
65
|
+
return 'present';
|
|
66
|
+
return firstStart ? 'created' : 'recreated';
|
|
67
|
+
case 'not-applicable':
|
|
68
|
+
case 'skipped-missing':
|
|
69
|
+
case 'skipped-unknown':
|
|
70
|
+
case 'failed':
|
|
71
|
+
return 'missing';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export { ensurePrimaryDatabase, resolvePrimaryDatabaseState, };
|
|
75
|
+
//# sourceMappingURL=primary-database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primary-database.js","sourceRoot":"","sources":["../../core/primary-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ import { withTransaction } from './transaction-manager.js';
|
|
|
14
14
|
import { containerManager } from './container-manager.js';
|
|
15
15
|
import { getEngine } from '../engines/index.js';
|
|
16
16
|
import { logDebug } from './error-handler.js';
|
|
17
|
+
import { registerTempDump, releaseTempDump } from './temp-dump-cleanup.js';
|
|
17
18
|
import { Engine } from '../types/index.js';
|
|
18
19
|
import { getDefaultFormat } from '../config/backup-formats.js';
|
|
19
20
|
/**
|
|
@@ -160,6 +161,15 @@ export class PullManager {
|
|
|
160
161
|
const backupDatabase = `${targetDatabase}_${timestamp}`;
|
|
161
162
|
const tempOriginalDump = join(tmpdir(), `spindb-orig-${timestamp}.dump`);
|
|
162
163
|
const tempRemoteDump = join(tmpdir(), `spindb-remote-${timestamp}.dump`);
|
|
164
|
+
// A termination mid-dump skips the transaction rollbacks that delete this
|
|
165
|
+
// file, so it is registered for removal on SIGTERM/SIGINT/SIGHUP too.
|
|
166
|
+
//
|
|
167
|
+
// tempOriginalDump is deliberately NOT registered. It is the rollback copy
|
|
168
|
+
// of the user's own database: a termination while the remote dump is being
|
|
169
|
+
// restored over the target leaves that file as the only intact copy of
|
|
170
|
+
// their data, so a leftover file is the safe outcome and a deleted one is
|
|
171
|
+
// data loss.
|
|
172
|
+
registerTempDump(tempRemoteDump);
|
|
163
173
|
// Always create backup if there's a post-script (so it can access original data)
|
|
164
174
|
// Otherwise, only create backup if --no-backup wasn't specified
|
|
165
175
|
const needsBackup = !options.noBackup || !!options.postScript;
|
|
@@ -275,6 +285,7 @@ export class PullManager {
|
|
|
275
285
|
catch {
|
|
276
286
|
// Ignore errors
|
|
277
287
|
}
|
|
288
|
+
releaseTempDump(tempRemoteDump);
|
|
278
289
|
// Step 10: Run post-script if provided
|
|
279
290
|
if (options.postScript) {
|
|
280
291
|
const context = {
|
|
@@ -337,6 +348,9 @@ export class PullManager {
|
|
|
337
348
|
async executeCloneMode(config, engine, targetDatabase, options) {
|
|
338
349
|
const timestamp = this.generateTimestamp();
|
|
339
350
|
const tempRemoteDump = join(tmpdir(), `spindb-remote-${timestamp}.dump`);
|
|
351
|
+
// A termination mid-dump skips the transaction rollbacks that delete this
|
|
352
|
+
// file, so it is registered for removal on SIGTERM/SIGINT/SIGHUP too.
|
|
353
|
+
registerTempDump(tempRemoteDump);
|
|
340
354
|
return withTransaction(async (tx) => {
|
|
341
355
|
// Step 1: Drop target if exists (--force required)
|
|
342
356
|
if (options.force) {
|
|
@@ -396,6 +410,7 @@ export class PullManager {
|
|
|
396
410
|
catch {
|
|
397
411
|
// Ignore errors
|
|
398
412
|
}
|
|
413
|
+
releaseTempDump(tempRemoteDump);
|
|
399
414
|
// Step 6: Run post-script if provided
|
|
400
415
|
if (options.postScript) {
|
|
401
416
|
const context = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-manager.js","sourceRoot":"","sources":["../../core/pull-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pull-manager.js","sourceRoot":"","sources":["../../core/pull-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { rmSync } from 'node:fs';
|
|
2
|
+
import { logDebug } from './error-handler.js';
|
|
3
|
+
/**
|
|
4
|
+
* Removal of the temp dump a `--from-url` restore writes, on termination.
|
|
5
|
+
*
|
|
6
|
+
* A remote dump can run for a long time (a slow cross-continent source pulls
|
|
7
|
+
* hundreds of megabytes through `mariadb-dump`), and Layerbase Cloud runs the
|
|
8
|
+
* restore under a supervisor that SIGTERMs it at a deadline. Nothing used to
|
|
9
|
+
* remove the half-written `/tmp/spindb-dump-<timestamp>.dump` in that case:
|
|
10
|
+
* the `finally` blocks in the restore commands only run when the command
|
|
11
|
+
* itself returns or throws, and a signal skips them entirely. A killed import
|
|
12
|
+
* therefore left its partial dump behind inside the customer's container, once
|
|
13
|
+
* at 450 MB.
|
|
14
|
+
*
|
|
15
|
+
* The registry is process-wide and engine-agnostic: any path handed to
|
|
16
|
+
* `registerTempDump` is removed when the process is terminated, whichever
|
|
17
|
+
* engine wrote it. Removal is synchronous because a signal handler has no
|
|
18
|
+
* chance to await anything before the process goes away.
|
|
19
|
+
*/
|
|
20
|
+
// SIGHUP is included because a restore driven over SSH or from a detached
|
|
21
|
+
// shell is terminated that way rather than with SIGTERM.
|
|
22
|
+
const TERMINATION_SIGNALS = ['SIGTERM', 'SIGINT', 'SIGHUP'];
|
|
23
|
+
// Conventional shell exit codes for a process killed by a signal: 128 plus the
|
|
24
|
+
// signal number. 143 for SIGTERM, 130 for SIGINT, 129 for SIGHUP.
|
|
25
|
+
const SIGNAL_EXIT_CODES = {
|
|
26
|
+
SIGTERM: 143,
|
|
27
|
+
SIGINT: 130,
|
|
28
|
+
SIGHUP: 129,
|
|
29
|
+
};
|
|
30
|
+
const pendingDumps = new Set();
|
|
31
|
+
const pendingChildren = new Set();
|
|
32
|
+
let handlersInstalled = false;
|
|
33
|
+
let terminating = false;
|
|
34
|
+
function removePendingDumps() {
|
|
35
|
+
for (const path of pendingDumps) {
|
|
36
|
+
try {
|
|
37
|
+
rmSync(path, { recursive: true, force: true });
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
// Nothing useful can be done about a temp file that will not delete, and
|
|
41
|
+
// the process is on its way out.
|
|
42
|
+
logDebug(`Failed to remove temp dump ${path}: ${String(error)}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
pendingDumps.clear();
|
|
46
|
+
}
|
|
47
|
+
function killPendingChildren(signal) {
|
|
48
|
+
for (const child of pendingChildren) {
|
|
49
|
+
try {
|
|
50
|
+
child.kill(signal);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
logDebug(`Failed to signal dump process: ${String(error)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
pendingChildren.clear();
|
|
57
|
+
}
|
|
58
|
+
function installHandlers() {
|
|
59
|
+
if (handlersInstalled)
|
|
60
|
+
return;
|
|
61
|
+
handlersInstalled = true;
|
|
62
|
+
for (const signal of TERMINATION_SIGNALS) {
|
|
63
|
+
process.on(signal, () => {
|
|
64
|
+
// A supervisor that sends SIGTERM and then SIGKILL can land a second
|
|
65
|
+
// signal while the first is still being handled.
|
|
66
|
+
if (terminating)
|
|
67
|
+
return;
|
|
68
|
+
terminating = true;
|
|
69
|
+
killPendingChildren(signal);
|
|
70
|
+
removePendingDumps();
|
|
71
|
+
process.exit(SIGNAL_EXIT_CODES[signal]);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Track a temp dump path so it is removed if the process is terminated.
|
|
77
|
+
* Returns the release callback, which the caller runs once it has cleaned the
|
|
78
|
+
* file up itself (its own `finally` still owns the normal paths).
|
|
79
|
+
*/
|
|
80
|
+
export function registerTempDump(path) {
|
|
81
|
+
pendingDumps.add(path);
|
|
82
|
+
installHandlers();
|
|
83
|
+
return () => releaseTempDump(path);
|
|
84
|
+
}
|
|
85
|
+
/** Stop tracking a temp dump the caller has already removed. */
|
|
86
|
+
export function releaseTempDump(path) {
|
|
87
|
+
pendingDumps.delete(path);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Track the dump child so a termination kills it instead of orphaning a client
|
|
91
|
+
* that keeps writing. Node puts a non-detached child in our own process group,
|
|
92
|
+
* so a group-wide kill already reaches it; this covers a signal aimed at the
|
|
93
|
+
* spindb pid alone.
|
|
94
|
+
*/
|
|
95
|
+
export function trackDumpProcess(child) {
|
|
96
|
+
pendingChildren.add(child);
|
|
97
|
+
installHandlers();
|
|
98
|
+
return () => {
|
|
99
|
+
pendingChildren.delete(child);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/** Test-only view of what would be removed on termination. */
|
|
103
|
+
export function getPendingTempDumps() {
|
|
104
|
+
return [...pendingDumps];
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=temp-dump-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temp-dump-cleanup.js","sourceRoot":"","sources":["../../core/temp-dump-cleanup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C;;;;;;;;;;;;;;;;GAgBG;AAEH,0EAA0E;AAC1E,yDAAyD;AACzD,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAIpE,+EAA+E;AAC/E,kEAAkE;AAClE,MAAM,iBAAiB,GAAsC;IAC3D,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;CACZ,CAAA;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;AACtC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAgB,CAAA;AAE/C,IAAI,iBAAiB,GAAG,KAAK,CAAA;AAC7B,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB,SAAS,kBAAkB;IACzB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yEAAyE;YACzE,iCAAiC;YACjC,QAAQ,CAAC,8BAA8B,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IACD,YAAY,CAAC,KAAK,EAAE,CAAA;AACtB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyB;IACpD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,kCAAkC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IACD,eAAe,CAAC,KAAK,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,iBAAiB;QAAE,OAAM;IAC7B,iBAAiB,GAAG,IAAI,CAAA;IAExB,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,qEAAqE;YACrE,iDAAiD;YACjD,IAAI,WAAW;gBAAE,OAAM;YACvB,WAAW,GAAG,IAAI,CAAA;YAElB,mBAAmB,CAAC,MAAM,CAAC,CAAA;YAC3B,kBAAkB,EAAE,CAAA;YACpB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACtB,eAAe,EAAE,CAAA;IACjB,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,eAAe,EAAE,CAAA;IACjB,OAAO,GAAG,EAAE;QACV,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAA;AAC1B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { UnsupportedOperationError } from '../core/error-handler.js';
|
|
2
|
+
import { probeDatabasePresence, } from '../core/database-presence.js';
|
|
2
3
|
import { stopPgweb } from '../core/pgweb-utils.js';
|
|
3
4
|
/**
|
|
4
5
|
* Base class for database engines
|
|
@@ -211,12 +212,29 @@ export class BaseEngine {
|
|
|
211
212
|
* - CockroachDB: defaultdb, postgres, system
|
|
212
213
|
*
|
|
213
214
|
* @param container - The container configuration
|
|
215
|
+
* @param options - Optional abort signal (honored by the engines with
|
|
216
|
+
* durable database existence; see core/database-capabilities.ts)
|
|
214
217
|
* @returns Array of database names (excluding system databases)
|
|
215
218
|
* @throws Error if the engine doesn't support multiple databases or listing
|
|
216
219
|
*/
|
|
217
|
-
async listDatabases(_container) {
|
|
220
|
+
async listDatabases(_container, _options) {
|
|
218
221
|
throw new UnsupportedOperationError('listDatabases', this.displayName);
|
|
219
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* Whether a database exists on the running server, built on listDatabases.
|
|
225
|
+
* Never throws. Returns 'unknown' for engines without durable database
|
|
226
|
+
* existence (see core/database-capabilities.ts), when the listing fails,
|
|
227
|
+
* or when the listing cannot speak for the name (a filtered system
|
|
228
|
+
* database). An empty database counts as present.
|
|
229
|
+
*/
|
|
230
|
+
async databaseExists(container, name) {
|
|
231
|
+
const { presence } = await probeDatabasePresence({
|
|
232
|
+
engine: this,
|
|
233
|
+
container,
|
|
234
|
+
name,
|
|
235
|
+
});
|
|
236
|
+
return presence;
|
|
237
|
+
}
|
|
220
238
|
/**
|
|
221
239
|
* Create a database user with the given credentials.
|
|
222
240
|
* Returns credentials including connection string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-engine.js","sourceRoot":"","sources":["../../engines/base-engine.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"base-engine.js","sourceRoot":"","sources":["../../engines/base-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1119,7 +1119,7 @@ export class ClickHouseEngine extends BaseEngine {
|
|
|
1119
1119
|
/**
|
|
1120
1120
|
* List all user databases, excluding system databases (system, information_schema, INFORMATION_SCHEMA).
|
|
1121
1121
|
*/
|
|
1122
|
-
async listDatabases(container) {
|
|
1122
|
+
async listDatabases(container, options) {
|
|
1123
1123
|
const { port, version } = container;
|
|
1124
1124
|
const clickhouse = await this.getClickHouseClientPath(version);
|
|
1125
1125
|
logDebug(`Listing databases on port ${port} with version ${version}`);
|
|
@@ -1135,6 +1135,7 @@ export class ClickHouseEngine extends BaseEngine {
|
|
|
1135
1135
|
];
|
|
1136
1136
|
const proc = spawn(clickhouse, args, {
|
|
1137
1137
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
1138
|
+
signal: options?.signal,
|
|
1138
1139
|
});
|
|
1139
1140
|
let stdout = '';
|
|
1140
1141
|
let stderr = '';
|