spindb 0.50.8 → 0.51.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.
@@ -4,6 +4,7 @@ import { paths } from '../config/paths.js';
4
4
  import { processManager } from './process-manager.js';
5
5
  import { portManager } from './port-manager.js';
6
6
  import { isWindows } from './platform-service.js';
7
+ import { cloneDirectory } from './cow-copy.js';
7
8
  import { logDebug, UnsupportedOperationError } from './error-handler.js';
8
9
  import { getEngineDefaults, getSupportedEngines } from '../config/defaults.js';
9
10
  import { getEngine } from '../engines/index.js';
@@ -95,41 +96,38 @@ export class ContainerManager {
95
96
  }
96
97
  return null;
97
98
  }
98
- async getSqliteConfig(name) {
99
- const entry = await sqliteRegistry.get(name);
100
- if (!entry) {
101
- return null;
102
- }
103
- // Convert registry entry to ContainerConfig format
99
+ // Convert a file-based registry entry to ContainerConfig format. Shared by
100
+ // getConfig and list so branch lineage (branchParent/branchedAt/gitBranch) is
101
+ // surfaced consistently. "running" status = the backing file exists.
102
+ fileBasedEntryToConfig(entry, engine) {
104
103
  const fileExists = existsSync(entry.filePath);
105
104
  return {
106
105
  name: entry.name,
107
- engine: Engine.SQLite,
108
- version: fileBasedEngineVersion('sqlite'),
106
+ engine,
107
+ version: fileBasedEngineVersion(engine),
109
108
  port: 0,
110
- database: entry.filePath, // For SQLite, database field stores file path
109
+ database: entry.filePath, // file-based: database field stores file path
111
110
  databases: [entry.filePath],
112
111
  created: entry.created,
113
- status: fileExists ? 'running' : 'stopped', // "running" = file exists
112
+ status: fileExists ? 'running' : 'stopped',
113
+ ...(entry.branchParent ? { branchParent: entry.branchParent } : {}),
114
+ ...(entry.branchedAt ? { branchedAt: entry.branchedAt } : {}),
115
+ ...(entry.gitBranch ? { gitBranch: entry.gitBranch } : {}),
114
116
  };
115
117
  }
118
+ async getSqliteConfig(name) {
119
+ const entry = await sqliteRegistry.get(name);
120
+ if (!entry) {
121
+ return null;
122
+ }
123
+ return this.fileBasedEntryToConfig(entry, Engine.SQLite);
124
+ }
116
125
  async getDuckDBConfig(name) {
117
126
  const entry = await duckdbRegistry.get(name);
118
127
  if (!entry) {
119
128
  return null;
120
129
  }
121
- // Convert registry entry to ContainerConfig format
122
- const fileExists = existsSync(entry.filePath);
123
- return {
124
- name: entry.name,
125
- engine: Engine.DuckDB,
126
- version: fileBasedEngineVersion('duckdb'),
127
- port: 0,
128
- database: entry.filePath, // For DuckDB, database field stores file path
129
- databases: [entry.filePath],
130
- created: entry.created,
131
- status: fileExists ? 'running' : 'stopped', // "running" = file exists
132
- };
130
+ return this.fileBasedEntryToConfig(entry, Engine.DuckDB);
133
131
  }
134
132
  // Migrates old container configs to include databases array.
135
133
  async migrateConfig(config) {
@@ -196,35 +194,13 @@ export class ContainerManager {
196
194
  const containers = [];
197
195
  // List SQLite containers from registry
198
196
  const sqliteEntries = await sqliteRegistry.list();
199
- const sqliteVersion = fileBasedEngineVersion('sqlite');
200
197
  for (const entry of sqliteEntries) {
201
- const fileExists = existsSync(entry.filePath);
202
- containers.push({
203
- name: entry.name,
204
- engine: Engine.SQLite,
205
- version: sqliteVersion,
206
- port: 0,
207
- database: entry.filePath,
208
- databases: [entry.filePath],
209
- created: entry.created,
210
- status: fileExists ? 'running' : 'stopped', // "running" = file exists
211
- });
198
+ containers.push(this.fileBasedEntryToConfig(entry, Engine.SQLite));
212
199
  }
213
200
  // List DuckDB containers from registry
214
201
  const duckdbEntries = await duckdbRegistry.list();
215
- const duckdbVersion = fileBasedEngineVersion('duckdb');
216
202
  for (const entry of duckdbEntries) {
217
- const fileExists = existsSync(entry.filePath);
218
- containers.push({
219
- name: entry.name,
220
- engine: Engine.DuckDB,
221
- version: duckdbVersion,
222
- port: 0,
223
- database: entry.filePath,
224
- databases: [entry.filePath],
225
- created: entry.created,
226
- status: fileExists ? 'running' : 'stopped', // "running" = file exists
227
- });
203
+ containers.push(this.fileBasedEntryToConfig(entry, Engine.DuckDB));
228
204
  }
229
205
  // List server-based containers (PostgreSQL, MySQL, etc.)
230
206
  const containersDir = paths.containers;
@@ -341,7 +317,19 @@ export class ContainerManager {
341
317
  }
342
318
  }
343
319
  }
344
- async clone(sourceName, targetName) {
320
+ /**
321
+ * Duplicate a server-based container's data directory under a new name and
322
+ * write a new container.json for it. Shared by `clone()` (full byte copy) and
323
+ * the branch manager (copy-on-write reflink). The caller is responsible for
324
+ * ensuring the source is in a copyable state (stopped, or a consistent
325
+ * snapshot); this method does the mechanical copy + config rewrite only.
326
+ *
327
+ * File-based engines (SQLite/DuckDB) are NOT handled here — their data lives
328
+ * in an external file tracked by a registry, so the branch manager copies the
329
+ * file and registers a new entry directly.
330
+ */
331
+ async copyContainerData(options) {
332
+ const { sourceName, targetName, strategy, lineage } = options;
345
333
  // Validate target name
346
334
  if (!this.isValidName(targetName)) {
347
335
  throw new Error('Container name must be alphanumeric with hyphens/underscores only');
@@ -356,40 +344,61 @@ export class ContainerManager {
356
344
  if (await this.exists(targetName, { engine })) {
357
345
  throw new Error(`Target container "${targetName}" already exists`);
358
346
  }
359
- // Check source is not running
360
- const running = await processManager.isRunning(sourceName, { engine });
361
- if (running) {
362
- throw new Error(`Source container "${sourceName}" is running. Stop it first`);
363
- }
364
- // Copy container directory
347
+ // Duplicate the container directory: reflink for branches (instant where
348
+ // the filesystem supports it), full byte copy for clones.
365
349
  const sourcePath = paths.getContainerPath(sourceName, { engine });
366
350
  const targetPath = paths.getContainerPath(targetName, { engine });
367
- await cp(sourcePath, targetPath, { recursive: true });
368
- // If anything fails after copy, clean up the target directory
351
+ // Copy the data directory, then write the new config. If anything fails —
352
+ // the copy itself, reading the config back, or the engine fixup hook —
353
+ // clean up the (possibly partial) target directory.
369
354
  try {
355
+ let method = 'copy';
356
+ if (strategy === 'cow') {
357
+ method = (await cloneDirectory(sourcePath, targetPath)).method;
358
+ }
359
+ else {
360
+ await cp(sourcePath, targetPath, { recursive: true });
361
+ }
370
362
  // Update target config
371
363
  const config = await this.getConfig(targetName, { engine });
372
364
  if (!config) {
373
- throw new Error('Failed to read cloned container config');
365
+ throw new Error('Failed to read copied container config');
374
366
  }
375
367
  config.name = targetName;
376
368
  config.created = new Date().toISOString();
377
- config.clonedFrom = sourceName;
378
- // Assign new port (excluding ports already used by other containers)
379
- const engineDefaults = getEngineDefaults(engine);
380
- const { port } = await portManager.findAvailablePortExcludingContainers({
381
- portRange: engineDefaults.portRange,
382
- });
383
- config.port = port;
384
- await this.saveConfig(targetName, { engine }, config);
385
- // ClickHouse stores absolute paths in config.xml - regenerate with new paths
386
- if (engine === Engine.ClickHouse) {
387
- const clickhouseEngine = getEngine(Engine.ClickHouse);
388
- if ('regenerateConfig' in clickhouseEngine) {
389
- await clickhouseEngine.regenerateConfig(targetName, config.port);
390
- }
369
+ // A freshly copied container is not running yet, regardless of what the
370
+ // source's persisted status said.
371
+ config.status = 'stopped';
372
+ // Reset lineage, then apply the requested lineage so branch and clone
373
+ // metadata never leak into each other across repeated operations.
374
+ delete config.clonedFrom;
375
+ delete config.branchParent;
376
+ delete config.branchedAt;
377
+ delete config.gitBranch;
378
+ if (lineage.clonedFrom) {
379
+ config.clonedFrom = lineage.clonedFrom;
380
+ }
381
+ if (lineage.branchParent) {
382
+ config.branchParent = lineage.branchParent;
383
+ config.branchedAt = config.created;
391
384
  }
392
- return config;
385
+ // Assign a port: an explicit one (stable-port git branches) or the next
386
+ // free port in the engine's range (excluding ports used by containers).
387
+ if (options.port !== undefined) {
388
+ config.port = options.port;
389
+ }
390
+ else {
391
+ const engineDefaults = getEngineDefaults(engine);
392
+ const { port } = await portManager.findAvailablePortExcludingContainers({
393
+ portRange: engineDefaults.portRange,
394
+ });
395
+ config.port = port;
396
+ }
397
+ await this.saveConfig(targetName, { engine }, config);
398
+ // Let the engine fix up any identity/paths baked into the copied data
399
+ // dir for the new name and port (e.g. ClickHouse regenerates config.xml).
400
+ await getEngine(engine).prepareBranchedDataDir(config, { sourceName });
401
+ return { config, method };
393
402
  }
394
403
  catch (error) {
395
404
  // Clean up the copied directory on failure
@@ -399,6 +408,35 @@ export class ContainerManager {
399
408
  throw error;
400
409
  }
401
410
  }
411
+ async clone(sourceName, targetName) {
412
+ // Get source config to determine the engine and verify it exists
413
+ const sourceConfig = await this.getConfig(sourceName);
414
+ if (!sourceConfig) {
415
+ throw new Error(`Source container "${sourceName}" not found`);
416
+ }
417
+ // copyContainerData duplicates a server container's data directory.
418
+ // File-based engines (SQLite/DuckDB) keep their data in an external file
419
+ // tracked by a registry, which it doesn't handle — point users to branch,
420
+ // which forks the backing file and registers a new entry.
421
+ if (isFileBasedEngine(sourceConfig.engine)) {
422
+ throw new Error(`Cloning file-based containers (${sourceConfig.engine}) is not supported. ` +
423
+ `Use "spindb branch ${sourceName} ${targetName}" to fork it instead.`);
424
+ }
425
+ // Clone requires a stopped source (use `spindb branch` for live sources).
426
+ const running = await processManager.isRunning(sourceName, {
427
+ engine: sourceConfig.engine,
428
+ });
429
+ if (running) {
430
+ throw new Error(`Source container "${sourceName}" is running. Stop it first`);
431
+ }
432
+ const { config } = await this.copyContainerData({
433
+ sourceName,
434
+ targetName,
435
+ strategy: 'copy',
436
+ lineage: { clonedFrom: sourceName },
437
+ });
438
+ return config;
439
+ }
402
440
  async rename(oldName, newName) {
403
441
  // Validate new name
404
442
  if (!this.isValidName(newName)) {
@@ -427,13 +465,13 @@ export class ContainerManager {
427
465
  if (existsSync(oldContainerPath)) {
428
466
  await this.atomicMoveDirectory(oldContainerPath, newContainerPath);
429
467
  }
430
- // Now update registry - remove old entry and add new one with updated name
468
+ // Now update registry - remove old entry and add new one with updated name.
469
+ // Spread the existing entry so lineage fields (branchParent/branchedAt/
470
+ // gitBranch) survive the rename instead of being dropped.
431
471
  await sqliteRegistry.remove(oldName);
432
472
  await sqliteRegistry.add({
473
+ ...entry,
433
474
  name: newName,
434
- filePath: entry.filePath,
435
- created: entry.created,
436
- lastVerified: entry.lastVerified,
437
475
  });
438
476
  // Return updated config
439
477
  return {
@@ -454,13 +492,13 @@ export class ContainerManager {
454
492
  if (existsSync(oldContainerPath)) {
455
493
  await this.atomicMoveDirectory(oldContainerPath, newContainerPath);
456
494
  }
457
- // Now update registry - remove old entry and add new one with updated name
495
+ // Now update registry - remove old entry and add new one with updated name.
496
+ // Spread the existing entry so lineage fields (branchParent/branchedAt/
497
+ // gitBranch) survive the rename instead of being dropped.
458
498
  await duckdbRegistry.remove(oldName);
459
499
  await duckdbRegistry.add({
500
+ ...entry,
460
501
  name: newName,
461
- filePath: entry.filePath,
462
- created: entry.created,
463
- lastVerified: entry.lastVerified,
464
502
  });
465
503
  // Return updated config
466
504
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"container-manager.js","sourceRoot":"","sources":["../../core/container-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-manager.js","sourceRoot":"","sources":["../../core/container-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Copy-on-write directory cloning.
3
+ *
4
+ * Branching a container means duplicating its on-disk data directory. A plain
5
+ * byte copy costs O(data size) in both time and space; a filesystem
6
+ * reflink/clonefile is effectively O(1) and shares blocks with the source until
7
+ * one side is written. We use the OS's CoW primitive when the underlying
8
+ * filesystem supports it (APFS on macOS; Btrfs / XFS-with-reflink / ZFS on
9
+ * Linux) and fall back to a full recursive copy everywhere else (ext4, NTFS).
10
+ *
11
+ * Callers get back which path was taken (`method`) so they can surface it — for
12
+ * example, `spindb branch --json` reports `"method": "reflink"` vs `"copy"` so
13
+ * consumers know whether the branch was instant or a full copy.
14
+ */
15
+ import { cp, rm, writeFile } from 'fs/promises';
16
+ import { join } from 'path';
17
+ import { spawnAsync } from './spawn-utils.js';
18
+ import { logDebug } from './error-handler.js';
19
+ /**
20
+ * Clone a directory (or file) from `src` to `dst`, preferring a copy-on-write
21
+ * reflink and falling back to a deep byte copy when the filesystem can't do it.
22
+ *
23
+ * `dst` must not already exist (matching `containerManager.clone()` semantics,
24
+ * where the target path is a fresh container directory).
25
+ *
26
+ * @param options.platform - override the detected platform (unit tests only)
27
+ */
28
+ export async function cloneDirectory(src, dst, options) {
29
+ const platform = options?.platform ?? process.platform;
30
+ const started = Date.now();
31
+ const method = await cloneWithStrategy(src, dst, platform);
32
+ return { method, durationMs: Date.now() - started };
33
+ }
34
+ async function cloneWithStrategy(src, dst, platform) {
35
+ if (platform === 'darwin') {
36
+ // `cp -c` requests clonefile() (APFS copy-on-write); `-R` recurses into
37
+ // directories. Fails if the volume isn't APFS or clonefile is unavailable.
38
+ try {
39
+ await spawnAsync('cp', ['-cR', src, dst]);
40
+ return 'reflink';
41
+ }
42
+ catch (error) {
43
+ return fallbackToDeepCopy(src, dst, error);
44
+ }
45
+ }
46
+ if (platform === 'linux') {
47
+ // `--reflink=always` errors out on filesystems without reflink support
48
+ // (e.g. ext4), so a failure here cleanly means "no CoW on this volume".
49
+ // We deliberately avoid `--reflink=auto` because it silently falls back to
50
+ // a full copy, which would make us report 'reflink' when nothing was shared.
51
+ try {
52
+ await spawnAsync('cp', ['-R', '--reflink=always', src, dst]);
53
+ return 'reflink';
54
+ }
55
+ catch (error) {
56
+ return fallbackToDeepCopy(src, dst, error);
57
+ }
58
+ }
59
+ // Windows (NTFS has no reflink) and any unknown platform: full copy.
60
+ await deepCopy(src, dst);
61
+ return 'copy';
62
+ }
63
+ /**
64
+ * A failed reflink may have left a partial destination behind. Remove it, then
65
+ * perform a guaranteed full copy.
66
+ */
67
+ async function fallbackToDeepCopy(src, dst, error) {
68
+ logDebug(`Copy-on-write clone of "${dst}" unavailable, falling back to full copy: ${error.message}`);
69
+ // A failed reflink may have left a partial destination behind. Remove it
70
+ // before the full copy; if cleanup itself fails, surface that error rather
71
+ // than copy into a dirty target. (force:true already ignores a missing dst.)
72
+ await rm(dst, { recursive: true, force: true });
73
+ await deepCopy(src, dst);
74
+ return 'copy';
75
+ }
76
+ async function deepCopy(src, dst) {
77
+ await cp(src, dst, { recursive: true });
78
+ }
79
+ /**
80
+ * Probe whether the filesystem backing `probeDir` supports copy-on-write
81
+ * cloning, by reflinking a tiny throwaway file. Used for upfront UX hints
82
+ * (e.g. warning before a large branch will be a full copy). The authoritative
83
+ * answer for any given clone is the `method` returned by `cloneDirectory()`.
84
+ */
85
+ export async function detectCowSupport(probeDir) {
86
+ const platform = process.platform;
87
+ if (platform !== 'darwin' && platform !== 'linux') {
88
+ return false;
89
+ }
90
+ const probeSource = join(probeDir, `.spindb-cow-probe-${process.pid}-a`);
91
+ const probeTarget = join(probeDir, `.spindb-cow-probe-${process.pid}-b`);
92
+ try {
93
+ await writeFile(probeSource, 'spindb');
94
+ const args = platform === 'darwin'
95
+ ? ['-c', probeSource, probeTarget]
96
+ : ['--reflink=always', probeSource, probeTarget];
97
+ await spawnAsync('cp', args);
98
+ return true;
99
+ }
100
+ catch {
101
+ return false;
102
+ }
103
+ finally {
104
+ await rm(probeSource, { force: true }).catch(() => { });
105
+ await rm(probeTarget, { force: true }).catch(() => { });
106
+ }
107
+ }
108
+ //# sourceMappingURL=cow-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cow-copy.js","sourceRoot":"","sources":["../../core/cow-copy.ts"],"names":[],"mappings":"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"}