pipework 0.19.0 → 0.20.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.
@@ -1 +1 @@
1
- {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../../src/data/query/sql/sql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../../src/data/query/sql/sql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { Blueprint } from '../core/config/schema.js';
2
+ import type { ResolvedDatabase } from '../core/config/index.js';
3
+ /**
4
+ * Everything that determines a template's contents. Serialized and hashed;
5
+ * anything omitted here is something two runs may disagree about while still
6
+ * sharing a template, so omissions are the way stale reuse happens.
7
+ */
8
+ export interface TemplateInputs {
9
+ /** Which configured database this template stands in for. */
10
+ readonly databaseName: string;
11
+ /**
12
+ * The role that builds — and therefore owns — the template.
13
+ *
14
+ * `CREATE DATABASE ... WITH TEMPLATE` requires ownership of the template, so
15
+ * a template is only shareable among processes connecting as the same role.
16
+ * Keying on the owner means a second role builds its own rather than failing
17
+ * to clone, or worse, trying to drop a database it does not own.
18
+ */
19
+ readonly owner: string;
20
+ readonly extensions: readonly string[];
21
+ readonly migrationTable: string;
22
+ /** Hash of the migrations folder's contents, or `null` when unmigrated. */
23
+ readonly migrations: string | null;
24
+ /** Framework-table provisioning depends on these blueprint sections. */
25
+ readonly trace: unknown;
26
+ readonly audit: unknown;
27
+ /** Framework tables ride the default database only. */
28
+ readonly isDefaultDatabase: boolean;
29
+ /** Trace/audit day partitions are provisioned relative to the current day. */
30
+ readonly partitionDay: string;
31
+ /** Internal definitions and emitted DDL travel with the pipework version. */
32
+ readonly pipeworkVersion: string;
33
+ readonly formatVersion: number;
34
+ }
35
+ /**
36
+ * Hash a migrations folder's contents: every file's path relative to the folder
37
+ * and its bytes, in a stable order. Path names are included so a rename is a
38
+ * change; a missing or unreadable folder hashes as absent.
39
+ */
40
+ export declare function hashMigrationsFolder(folder: string): string | null;
41
+ /**
42
+ * Collect the content inputs for one configured database's template.
43
+ *
44
+ * `partitionDay` is the current UTC date. Trace and audit partitions are
45
+ * created per day with a lead window, so a template built yesterday is missing
46
+ * today's partitions — keying on the day makes that invalidation automatic
47
+ * instead of a stale-data bug that only shows up after midnight.
48
+ */
49
+ export declare function templateInputs(databaseName: string, dbConfig: ResolvedDatabase, blueprint: Blueprint, isDefaultDatabase: boolean, today: Date): TemplateInputs;
50
+ /**
51
+ * The template's content fingerprint: 16 lowercase hex chars. Deliberately
52
+ * wider than the 12-char per-run nonce so a template name can never be mistaken
53
+ * for a run-owned database name.
54
+ */
55
+ export declare function templateFingerprint(inputs: TemplateInputs): string;
56
+ //# sourceMappingURL=fingerprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/test/fingerprint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAiB/D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,uDAAuD;IACvD,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2BlE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,OAAO,EAC1B,KAAK,EAAE,IAAI,GACV,cAAc,CAchB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAElE"}
@@ -0,0 +1,84 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readdirSync, readFileSync } from 'node:fs';
3
+ import { join, relative, sep } from 'node:path';
4
+ import { VERSION } from '../core/runtime/broker.js';
5
+ // The template is keyed by its CONTENT, not by the run that happened to build
6
+ // it. Every input that changes what ends up inside a template database is
7
+ // folded into one hash, and that hash becomes the template's name — so a
8
+ // migration edit does not invalidate a template, it simply asks for a
9
+ // different one, and the stale one is reaped because nobody asks for it again.
10
+ //
11
+ // Content keying is what lets a template outlive the process that built it:
12
+ // a vitest run with `pool: 'forks'` + `isolate: true` gives every test file a
13
+ // fresh process, and a per-process key (pid, run nonce) meant every one of them
14
+ // replayed the whole migration stack. Issue #340.
15
+ /** Bump when pipework changes the SHAPE of what it puts in a template. */
16
+ const TEMPLATE_FORMAT_VERSION = 1;
17
+ /**
18
+ * Hash a migrations folder's contents: every file's path relative to the folder
19
+ * and its bytes, in a stable order. Path names are included so a rename is a
20
+ * change; a missing or unreadable folder hashes as absent.
21
+ */
22
+ export function hashMigrationsFolder(folder) {
23
+ const files = [];
24
+ const walk = (dir) => {
25
+ let entries;
26
+ try {
27
+ entries = readdirSync(dir, { withFileTypes: true });
28
+ }
29
+ catch {
30
+ return;
31
+ }
32
+ for (const entry of entries.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0))) {
33
+ const full = join(dir, entry.name);
34
+ if (entry.isDirectory())
35
+ walk(full);
36
+ else if (entry.isFile())
37
+ files.push(full);
38
+ }
39
+ };
40
+ walk(folder);
41
+ if (files.length === 0)
42
+ return null;
43
+ const hash = createHash('sha256');
44
+ for (const file of files) {
45
+ // Normalize the separator so the same tree hashes alike on any platform.
46
+ hash.update(relative(folder, file).split(sep).join('/'));
47
+ hash.update('\0');
48
+ hash.update(readFileSync(file));
49
+ hash.update('\0');
50
+ }
51
+ return hash.digest('hex');
52
+ }
53
+ /**
54
+ * Collect the content inputs for one configured database's template.
55
+ *
56
+ * `partitionDay` is the current UTC date. Trace and audit partitions are
57
+ * created per day with a lead window, so a template built yesterday is missing
58
+ * today's partitions — keying on the day makes that invalidation automatic
59
+ * instead of a stale-data bug that only shows up after midnight.
60
+ */
61
+ export function templateInputs(databaseName, dbConfig, blueprint, isDefaultDatabase, today) {
62
+ return {
63
+ databaseName,
64
+ owner: new URL(dbConfig.url).username,
65
+ extensions: [...dbConfig.extensions].sort(),
66
+ migrationTable: dbConfig.migrationTable,
67
+ migrations: dbConfig.migrations === undefined ? null : hashMigrationsFolder(dbConfig.migrations),
68
+ trace: blueprint.trace ?? null,
69
+ audit: blueprint.audit ?? null,
70
+ isDefaultDatabase,
71
+ partitionDay: today.toISOString().slice(0, 10),
72
+ pipeworkVersion: VERSION,
73
+ formatVersion: TEMPLATE_FORMAT_VERSION,
74
+ };
75
+ }
76
+ /**
77
+ * The template's content fingerprint: 16 lowercase hex chars. Deliberately
78
+ * wider than the 12-char per-run nonce so a template name can never be mistaken
79
+ * for a run-owned database name.
80
+ */
81
+ export function templateFingerprint(inputs) {
82
+ return createHash('sha256').update(JSON.stringify(inputs)).digest('hex').slice(0, 16);
83
+ }
84
+ //# sourceMappingURL=fingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../src/test/fingerprint.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,22 @@ export declare function projectNamespace(): string;
10
10
  export declare function testDbPrefix(): string;
11
11
  /** Prefix for this project's per-run runtime (app) roles: `<project>_app_`. */
12
12
  export declare function appRolePrefix(): string;
13
+ /**
14
+ * Prefix for this project's shared, content-keyed templates: `<project>_tmpl_`.
15
+ *
16
+ * Templates sit in their own prefix rather than under `testDbPrefix()` because
17
+ * they have a different lifecycle and a different reaping rule: a per-run clone
18
+ * dies with its run, a template deliberately outlives every run that uses it
19
+ * and is dropped only once no run wants it. Separate prefixes keep the reaper's
20
+ * two passes from having to tell the names apart by shape. Issue #340.
21
+ */
22
+ export declare function templateDbPrefix(): string;
13
23
  /**
14
24
  * `LIKE` pattern matching every per-run test database of THIS project, with the
15
25
  * prefix underscores escaped so they match literally. The reaper uses it to
16
26
  * scope its sweep to its own namespace and never another project's databases.
17
27
  */
18
28
  export declare function testDbLikePattern(): string;
29
+ /** `LIKE` pattern matching every shared template of THIS project. */
30
+ export declare function templateDbLikePattern(): string;
19
31
  //# sourceMappingURL=namespace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/test/namespace.ts"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUrG;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/test/namespace.ts"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUrG;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
@@ -54,6 +54,18 @@ export function testDbPrefix() {
54
54
  export function appRolePrefix() {
55
55
  return `${projectNamespace()}_app_`;
56
56
  }
57
+ /**
58
+ * Prefix for this project's shared, content-keyed templates: `<project>_tmpl_`.
59
+ *
60
+ * Templates sit in their own prefix rather than under `testDbPrefix()` because
61
+ * they have a different lifecycle and a different reaping rule: a per-run clone
62
+ * dies with its run, a template deliberately outlives every run that uses it
63
+ * and is dropped only once no run wants it. Separate prefixes keep the reaper's
64
+ * two passes from having to tell the names apart by shape. Issue #340.
65
+ */
66
+ export function templateDbPrefix() {
67
+ return `${projectNamespace()}_tmpl_`;
68
+ }
57
69
  /**
58
70
  * `LIKE` pattern matching every per-run test database of THIS project, with the
59
71
  * prefix underscores escaped so they match literally. The reaper uses it to
@@ -62,4 +74,8 @@ export function appRolePrefix() {
62
74
  export function testDbLikePattern() {
63
75
  return `${testDbPrefix().replace(/_/g, '\\_')}%`;
64
76
  }
77
+ /** `LIKE` pattern matching every shared template of THIS project. */
78
+ export function templateDbLikePattern() {
79
+ return `${templateDbPrefix().replace(/_/g, '\\_')}%`;
80
+ }
65
81
  //# sourceMappingURL=namespace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/test/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,gEAAgE;AAChE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,oBAAoB;AACpB,4EAA4E;AAC5E,oEAAoE;AACpE,gFAAgF;AAChF,wDAAwD;AAExD,IAAI,MAAM,GAAkB,IAAI,CAAA;AAEhC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAA+B,EAAE,OAA2B;IAC3F,MAAM,GAAG,GAAG,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW;QAC9E,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO;YAC1D,CAAC,CAAC,UAAU,CAAA;IACd,0EAA0E;IAC1E,qEAAqE;IACrE,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IACnF,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAA;AACpD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,gBAAgB;IAC9B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IAClC,IAAI,OAA2B,CAAA;IAC/B,IAAI,CAAC;QACH,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAuB,CAAC,IAAI,CAAA;IAC9G,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;IACD,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC,CAAA;IAC1E,OAAO,MAAM,CAAA;AACf,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,YAAY;IAC1B,OAAO,GAAG,gBAAgB,EAAE,QAAQ,CAAA;AACtC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa;IAC3B,OAAO,GAAG,gBAAgB,EAAE,OAAO,CAAA;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,GAAG,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAA;AAClD,CAAC"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/test/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,gEAAgE;AAChE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,oBAAoB;AACpB,4EAA4E;AAC5E,oEAAoE;AACpE,gFAAgF;AAChF,wDAAwD;AAExD,IAAI,MAAM,GAAkB,IAAI,CAAA;AAEhC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAA+B,EAAE,OAA2B;IAC3F,MAAM,GAAG,GAAG,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW;QAC9E,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO;YAC1D,CAAC,CAAC,UAAU,CAAA;IACd,0EAA0E;IAC1E,qEAAqE;IACrE,wEAAwE;IACxE,yEAAyE;IACzE,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IACnF,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAA;AACpD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,gBAAgB;IAC9B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IAClC,IAAI,OAA2B,CAAA;IAC/B,IAAI,CAAC;QACH,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAuB,CAAC,IAAI,CAAA;IAC9G,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;IACD,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC,CAAA;IAC1E,OAAO,MAAM,CAAA;AACf,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,YAAY;IAC1B,OAAO,GAAG,gBAAgB,EAAE,QAAQ,CAAA;AACtC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa;IAC3B,OAAO,GAAG,gBAAgB,EAAE,OAAO,CAAA;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,gBAAgB,EAAE,QAAQ,CAAA;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,GAAG,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAA;AAClD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,qBAAqB;IACnC,OAAO,GAAG,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAA;AACtD,CAAC"}
@@ -10,6 +10,8 @@ export interface ReapResult {
10
10
  * SIGKILL, reboot). The reaper reads "lock is free" as "owning run is dead".
11
11
  */
12
12
  export declare function runLockKey(nonce: string): bigint;
13
+ export declare function templateUseKey(fingerprint: string): bigint;
14
+ export declare function templateBuildKey(fingerprint: string): bigint;
13
15
  /** Admin (`/postgres`) connection URL for a database URL. */
14
16
  export declare function getAdminUrl(databaseUrl: string): string;
15
17
  /**
@@ -24,7 +26,7 @@ export declare function getAdminUrl(databaseUrl: string): string;
24
26
  * Both conditions only ever make the reaper more conservative, so it can
25
27
  * never drop a database belonging to a live or still-provisioning run.
26
28
  */
27
- export declare function reapOrphanTestDatabases(admin: postgres.Sql): Promise<ReapResult>;
29
+ export declare function reapOrphanTestDatabases(admin: postgres.Sql, liveTemplates?: ReadonlySet<string>): Promise<ReapResult>;
28
30
  /**
29
31
  * Reap orphan test databases across every Postgres server referenced by the
30
32
  * manifold's database config. Used by `pipework test --reap`.
@@ -1 +1 @@
1
- {"version":3,"file":"reap.d.ts","sourceRoot":"","sources":["../../src/test/reap.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAUnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIvD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CA0BtF;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBzF"}
1
+ {"version":3,"file":"reap.d.ts","sourceRoot":"","sources":["../../src/test/reap.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAgBnD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AA0BD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIvD;AAcD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,QAAQ,CAAC,GAAG,EACnB,aAAa,GAAE,WAAW,CAAC,MAAM,CAAa,GAC7C,OAAO,CAAC,UAAU,CAAC,CA2BrB;AA4DD;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBzF"}
package/dist/test/reap.js CHANGED
@@ -1,6 +1,7 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import postgres from 'postgres';
2
3
  import { quoteIdentifier } from '../data/db/identifiers.js';
3
- import { testDbPrefix, appRolePrefix, testDbLikePattern } from './namespace.js';
4
+ import { testDbPrefix, appRolePrefix, testDbLikePattern, templateDbPrefix, templateDbLikePattern, } from './namespace.js';
4
5
  // Per-run test database and role names end with `_<pid>_<nonce>`, where the
5
6
  // nonce is 12 random hex chars. The reaper recovers the nonce from a database
6
7
  // name to rebuild that run's advisory-lock key.
@@ -14,6 +15,35 @@ const NONCE_SUFFIX = /_([0-9a-f]{12})$/;
14
15
  export function runLockKey(nonce) {
15
16
  return BigInt('0x' + nonce);
16
17
  }
18
+ /**
19
+ * Advisory-lock keys for a shared template, derived from its content
20
+ * fingerprint. Both are salted hashes truncated to 60 bits, which keeps them
21
+ * inside a signed `bigint` and makes an accidental collision with a 48-bit run
22
+ * lock key or with each other a non-event.
23
+ *
24
+ * Two keys, because the two things being coordinated are different:
25
+ *
26
+ * - the USE key is taken in SHARE mode by every process that intends to clone
27
+ * the template, for that process's whole life, and in EXCLUSIVE mode by the
28
+ * reaper. That is what stops a reaper from dropping a template between
29
+ * another process's readiness check and its `CREATE DATABASE ... WITH
30
+ * TEMPLATE`: the reaper simply cannot get the lock while anyone holds it.
31
+ * - the BUILD key is taken in EXCLUSIVE mode only while building, so that N
32
+ * processes starting at once produce one template and one migration replay
33
+ * rather than N. It is separate because advisory locks do not upgrade from
34
+ * share to exclusive, and a builder must keep its own pin while it builds.
35
+ *
36
+ * Issue #340.
37
+ */
38
+ function templateLockKey(salt, fingerprint) {
39
+ return BigInt('0x' + createHash('sha256').update(`${salt}:${fingerprint}`).digest('hex').slice(0, 15));
40
+ }
41
+ export function templateUseKey(fingerprint) {
42
+ return templateLockKey('pipework-template-use', fingerprint);
43
+ }
44
+ export function templateBuildKey(fingerprint) {
45
+ return templateLockKey('pipework-template-build', fingerprint);
46
+ }
17
47
  /** Admin (`/postgres`) connection URL for a database URL. */
18
48
  export function getAdminUrl(databaseUrl) {
19
49
  const url = new URL(databaseUrl);
@@ -23,6 +53,12 @@ export function getAdminUrl(databaseUrl) {
23
53
  function pairedRoleName(datname) {
24
54
  return appRolePrefix() + datname.slice(testDbPrefix().length);
25
55
  }
56
+ /** A shared template's app role is content-keyed the same way the template is. */
57
+ function pairedTemplateRoleName(datname) {
58
+ return appRolePrefix() + datname.slice(templateDbPrefix().length);
59
+ }
60
+ /** Content fingerprint trailing a shared template's name: 16 lowercase hex. */
61
+ const TEMPLATE_FINGERPRINT_SUFFIX = /_([0-9a-f]{16})$/;
26
62
  /**
27
63
  * Drop test databases left behind by runs that never reached teardown
28
64
  * (Ctrl-C, timeout, crash). A database is reaped only when BOTH hold:
@@ -35,7 +71,7 @@ function pairedRoleName(datname) {
35
71
  * Both conditions only ever make the reaper more conservative, so it can
36
72
  * never drop a database belonging to a live or still-provisioning run.
37
73
  */
38
- export async function reapOrphanTestDatabases(admin) {
74
+ export async function reapOrphanTestDatabases(admin, liveTemplates = new Set()) {
39
75
  const rows = await admin `
40
76
  SELECT datname, numbackends
41
77
  FROM pg_stat_database
@@ -61,6 +97,63 @@ export async function reapOrphanTestDatabases(admin) {
61
97
  }
62
98
  }
63
99
  }
100
+ droppedDatabases.push(...(await reapStaleTemplates(admin, liveTemplates)).droppedDatabases);
101
+ return { droppedDatabases };
102
+ }
103
+ /**
104
+ * Drop shared templates nobody wants any more.
105
+ *
106
+ * A template is deliberately long-lived — it survives the run that built it, so
107
+ * the next run clones instead of replaying migrations (#340) — which means
108
+ * "left behind by a dead run" is no longer a reason to drop one. The two
109
+ * reasons that remain:
110
+ *
111
+ * - it is not in `liveTemplates`, the set of content keys the calling run
112
+ * actually intends to use. Editing a migration changes the key, so the
113
+ * template built from the old migrations is named something nobody will ask
114
+ * for again. That is what makes invalidation automatic rather than manual.
115
+ * - nobody holds its use lock, in any mode. Every process that intends to
116
+ * clone a template holds that lock in SHARE mode for its whole life, so
117
+ * failing to take it EXCLUSIVE means no live process is cloning from it —
118
+ * including no process sitting between a readiness check and its `CREATE
119
+ * DATABASE ... WITH TEMPLATE`.
120
+ *
121
+ * `numbackends = 0` is required as well, for the same conservatism as clones.
122
+ *
123
+ * An empty `liveTemplates` — what `pipework test --reap` passes — therefore
124
+ * means "drop every template not currently in use", which is the right reading
125
+ * of an explicit cleanup command.
126
+ */
127
+ async function reapStaleTemplates(admin, liveTemplates) {
128
+ const rows = await admin `
129
+ SELECT datname, numbackends
130
+ FROM pg_stat_database
131
+ WHERE datname LIKE ${templateDbLikePattern()}
132
+ `;
133
+ const droppedDatabases = [];
134
+ for (const { datname, numbackends } of rows) {
135
+ if (numbackends > 0)
136
+ continue;
137
+ if (liveTemplates.has(datname))
138
+ continue;
139
+ const fingerprint = TEMPLATE_FINGERPRINT_SUFFIX.exec(datname)?.[1];
140
+ // A name in the template namespace without a fingerprint was not written by
141
+ // this scheme. Leave it alone rather than guess at its owner.
142
+ if (fingerprint === undefined)
143
+ continue;
144
+ const key = templateUseKey(fingerprint);
145
+ if (!(await tryAcquire(admin, key)))
146
+ continue;
147
+ try {
148
+ if (await dropDatabase(admin, datname)) {
149
+ droppedDatabases.push(datname);
150
+ await dropRole(admin, pairedTemplateRoleName(datname));
151
+ }
152
+ }
153
+ finally {
154
+ await admin `SELECT pg_advisory_unlock(${key.toString()}::bigint)`;
155
+ }
156
+ }
64
157
  return { droppedDatabases };
65
158
  }
66
159
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"reap.js","sourceRoot":"","sources":["../../src/test/reap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reap.js","sourceRoot":"","sources":["../../src/test/reap.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,12 @@ export declare function withTemplateRetry<T>(attempt: () => Promise<T>, sleep?:
17
17
  export declare function teardownTestDatabases(): Promise<void>;
18
18
  export declare function getTestDatabase(name: string): TestDatabase | undefined;
19
19
  export declare function getTestDatabases(): ReadonlyMap<string, TestDatabase>;
20
+ /**
21
+ * Forget the in-process template cache, so the next `setupTestDatabases` takes
22
+ * the same path a freshly-forked worker takes: shared lock, readiness check,
23
+ * clone. This is how a single process can prove the cross-process claim — that
24
+ * a second fork reuses the template rather than rebuilding it — without
25
+ * actually forking. Test-only. Issue #340.
26
+ */
27
+ export declare function forgetTemplateCacheForTests(): void;
20
28
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAUnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAyCD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAiC/F;AAuLD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,KAAK,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAyD,EAC5F,QAAQ,GAAE,SAAS,MAAM,EAA6B,GACrD,OAAO,CAAC,CAAC,CAAC,CASZ;AA4ED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE;AAED,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAEpE"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAWnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAA;CACjB;AAoED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAqD/F;AAiSD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,KAAK,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAyD,EAC5F,QAAQ,GAAE,SAAS,MAAM,EAA6B,GACrD,OAAO,CAAC,CAAC,CAAC,CASZ;AA4ED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE;AAED,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}