pipework 0.57.1 → 0.57.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/test/plugin.d.ts.map +1 -1
- package/dist/test/plugin.js +2 -0
- package/dist/test/plugin.js.map +1 -1
- package/dist/test/savepoints.d.ts +18 -0
- package/dist/test/savepoints.d.ts.map +1 -0
- package/dist/test/savepoints.js +105 -0
- package/dist/test/savepoints.js.map +1 -0
- package/dist/test/vitest.d.ts +5 -1
- package/dist/test/vitest.d.ts.map +1 -1
- package/dist/test/vitest.js +5 -1
- package/dist/test/vitest.js.map +1 -1
- package/dist/trace/partition/sync.d.ts.map +1 -1
- package/dist/trace/partition/sync.js +30 -1
- package/dist/trace/partition/sync.js.map +1 -1
- package/dist/trace/partition/tables.d.ts +6 -0
- package/dist/trace/partition/tables.d.ts.map +1 -1
- package/dist/trace/partition/tables.js +9 -0
- package/dist/trace/partition/tables.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.57.3
|
|
4
|
+
|
|
5
|
+
- **Fix: under the vitest harness a request, a job or `pipe.transaction()` committed the test's transaction.** On a test instance, `surface.http(...).test(useTestInstance())`, `pipe.transaction()`, `pipe.system().transaction()`, a `.transaction('manual')` checkpoint and the framework's own transactions ran drizzle's `BEGIN … COMMIT` on the test's connection, so the first one ended the test's transaction, wrote its rows for good, and left every later `withFlow({ tenant })` read under RLS empty. They are now savepoints of the test's transaction: the transaction id stays the same, a failure rolls back only that savepoint (a failing statement can be asserted any number of times in one test), and nothing outlives the test. Settings a savepoint changes (the tenant variable, `pipework.*`, custom session variables) and a role set with `SET LOCAL ROLE` are put back when it releases. An isolation level passed to a transaction is ignored there; a savepoint inherits the test's.
|
|
6
|
+
|
|
7
|
+
## 0.57.2
|
|
8
|
+
|
|
9
|
+
- **Fix: trace retention failed on tables made by `pipework migrate`.** Those tables have a foreign key from `trace_step` to `trace` (and `trace_step_retained` to `trace_retained`), so dropping an expired day partition failed with "cannot drop table trace_p… because constraint … depends on it", and every maintenance pass errored once a deployment was older than `hotRetentionDays`. Retention now drops a day's step partition and trace partition together in one transaction, step first, for both the hot and the retained tables, keeping the foreign key.
|
|
10
|
+
|
|
3
11
|
## 0.57.1
|
|
4
12
|
|
|
5
13
|
- **Fix: the built-in `trace`, `trace_step`, `trace_retained`, `trace_step_retained` and `audit_record` tables had no row-level security.** With `rls` configured on the default database, a query on them under the app role returned every tenant's rows. `pipework migrate` (and the test template) now enables RLS on each, forced when `rls.force` is on, with the same tenant rule as an application table: a tenant reads and updates only rows whose `tenant_id` is its own, and rows with no tenant are visible to no tenant. Inserts stay open to the framework. `trace_step` and `trace_step_retained` gain a nullable `tenant_id`, stamped from the trace; `migrate` adds it to an existing table, and steps written before it are not visible under RLS. The framework's own cross-tenant passes (closing a trace, copy-on-error, `expireStaleTraces`, audit partition retirement, `audit.verify` of the tenantless chain) run with the transaction-local setting `pipework.maintenance`; application code must not set it. Run `pipework migrate` to apply the policies to an existing database. Closing a trace and the other framework writes now go through a short transaction.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/test/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAErF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAIvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/test/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAErF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAIvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAGnE,MAAM,WAAW,uBAAuB;IACtC,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,uBAAuB,CAAA;CAC5B;AASD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAyBjF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1F;AAoBD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAMhI;AAED,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,WAAW,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,aAAa,CAAC,EAAE,qBAAqB,GACpC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAM7D;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
package/dist/test/plugin.js
CHANGED
|
@@ -7,6 +7,7 @@ import { runInContext } from '../request/context/store.js';
|
|
|
7
7
|
import { randomUUID } from 'node:crypto';
|
|
8
8
|
import { createDebugFn, isObserverOnly } from '../data/db/instrumentation.js';
|
|
9
9
|
import { markObservedConnection } from '../data/query/postgres-js/driver-error-boundary.js';
|
|
10
|
+
import { collapseTransactionsToSavepoints } from './savepoints.js';
|
|
10
11
|
const contextConnections = new Map();
|
|
11
12
|
export async function beginTestIsolation(instance) {
|
|
12
13
|
const dbConnections = {};
|
|
@@ -61,6 +62,7 @@ async function createIsolatedConnection(testDb, connections, name, observability
|
|
|
61
62
|
markObservedConnection(client);
|
|
62
63
|
const db = drizzle(client);
|
|
63
64
|
await db.execute(sql.raw('BEGIN'));
|
|
65
|
+
collapseTransactionsToSavepoints(db, client);
|
|
64
66
|
connections.set(name, { client, drizzle: db });
|
|
65
67
|
return db;
|
|
66
68
|
}
|
package/dist/test/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/test/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,OAAO,EAA2B,MAAM,oCAAoC,CAAA;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAE5C,OAAO,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,iBAAiB,IAAI,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/test/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type postgres from 'postgres';
|
|
2
|
+
import { type PostgresJsDatabase } from '../data/query/postgres-js/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Makes `db.transaction(fn)` — and `transaction` on the handle `fn` receives,
|
|
5
|
+
* to any depth — a SAVEPOINT on the transaction the harness already holds on
|
|
6
|
+
* this connection: `RELEASE` on success, `ROLLBACK TO` and rethrow on error.
|
|
7
|
+
* Without this, drizzle sends `BEGIN … COMMIT` and the `COMMIT` ends the test's
|
|
8
|
+
* transaction.
|
|
9
|
+
*
|
|
10
|
+
* A savepoint inherits the outer transaction's isolation level, so the
|
|
11
|
+
* `config` argument is ignored. Settings changed inside (`set_config(..., true)`,
|
|
12
|
+
* `SET LOCAL`) and the role are put back to their values before the savepoint
|
|
13
|
+
* when it releases; otherwise they last until the outer transaction ends.
|
|
14
|
+
* Postgres cannot list custom settings (`pipework.*` is not in `pg_settings`),
|
|
15
|
+
* so the names are taken from the statements this connection sends.
|
|
16
|
+
*/
|
|
17
|
+
export declare function collapseTransactionsToSavepoints(db: PostgresJsDatabase, client: postgres.Sql): void;
|
|
18
|
+
//# sourceMappingURL=savepoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"savepoints.d.ts","sourceRoot":"","sources":["../../src/test/savepoints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AACpC,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAMnG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,GAAG,IAAI,CAkDnG"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import { PostgresJsTransaction } from '../data/query/postgres-js/index.js';
|
|
3
|
+
import { throughErrorBoundary } from '../data/query/postgres-js/driver-error-boundary.js';
|
|
4
|
+
import { sql } from '../data/query/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Makes `db.transaction(fn)` — and `transaction` on the handle `fn` receives,
|
|
7
|
+
* to any depth — a SAVEPOINT on the transaction the harness already holds on
|
|
8
|
+
* this connection: `RELEASE` on success, `ROLLBACK TO` and rethrow on error.
|
|
9
|
+
* Without this, drizzle sends `BEGIN … COMMIT` and the `COMMIT` ends the test's
|
|
10
|
+
* transaction.
|
|
11
|
+
*
|
|
12
|
+
* A savepoint inherits the outer transaction's isolation level, so the
|
|
13
|
+
* `config` argument is ignored. Settings changed inside (`set_config(..., true)`,
|
|
14
|
+
* `SET LOCAL`) and the role are put back to their values before the savepoint
|
|
15
|
+
* when it releases; otherwise they last until the outer transaction ends.
|
|
16
|
+
* Postgres cannot list custom settings (`pipework.*` is not in `pg_settings`),
|
|
17
|
+
* so the names are taken from the statements this connection sends.
|
|
18
|
+
*/
|
|
19
|
+
export function collapseTransactionsToSavepoints(db, client) {
|
|
20
|
+
let counter = 0;
|
|
21
|
+
const known = new Set();
|
|
22
|
+
const unsafe = client.unsafe.bind(client);
|
|
23
|
+
client.unsafe = (query, params, ...rest) => {
|
|
24
|
+
for (const name of settingNames(query, params ?? []))
|
|
25
|
+
known.add(name);
|
|
26
|
+
return unsafe(query, params, ...rest);
|
|
27
|
+
};
|
|
28
|
+
// One connection runs one savepoint block at a time, as drizzle's reserved
|
|
29
|
+
// `begin` made concurrent transactions do. A call made outside any running
|
|
30
|
+
// block queues FIFO. A call made inside one, on the root db or on a handle
|
|
31
|
+
// alike, runs at once as a nested savepoint, or it would wait on the block
|
|
32
|
+
// that is waiting for it. "Inside" is the async scope of the running block.
|
|
33
|
+
let tail = Promise.resolve();
|
|
34
|
+
const inBlock = new AsyncLocalStorage();
|
|
35
|
+
const transaction = (fn) => {
|
|
36
|
+
const run = () => throughErrorBoundary(client, () => inBlock.run(true, () => runSavepoint(fn)));
|
|
37
|
+
if (inBlock.getStore() === true)
|
|
38
|
+
return run();
|
|
39
|
+
const queued = tail.then(run);
|
|
40
|
+
tail = queued.then(() => undefined, () => undefined);
|
|
41
|
+
return queued;
|
|
42
|
+
};
|
|
43
|
+
const wrap = (target) => {
|
|
44
|
+
;
|
|
45
|
+
target.transaction = transaction;
|
|
46
|
+
};
|
|
47
|
+
const runSavepoint = async (fn) => {
|
|
48
|
+
const name = `pw_${++counter}`;
|
|
49
|
+
const before = await snapshot(db, known);
|
|
50
|
+
await db.execute(sql.raw(`SAVEPOINT ${name}`));
|
|
51
|
+
let result;
|
|
52
|
+
try {
|
|
53
|
+
const handle = new PostgresJsTransaction(db.dialect, db.session, undefined);
|
|
54
|
+
wrap(handle);
|
|
55
|
+
result = await fn(handle);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
await db.execute(sql.raw(`ROLLBACK TO SAVEPOINT ${name}`));
|
|
59
|
+
await db.execute(sql.raw(`RELEASE SAVEPOINT ${name}`));
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
await db.execute(sql.raw(`RELEASE SAVEPOINT ${name}`));
|
|
63
|
+
await restore(db, before, known);
|
|
64
|
+
return result;
|
|
65
|
+
};
|
|
66
|
+
wrap(db);
|
|
67
|
+
}
|
|
68
|
+
const SETTING_NAME = /^[A-Za-z_][\w.]*$/;
|
|
69
|
+
/** Names of the settings a statement changes: `set_config(name, ...)` and `SET [LOCAL] name =`. */
|
|
70
|
+
function settingNames(query, params) {
|
|
71
|
+
const names = [];
|
|
72
|
+
for (const m of query.matchAll(/set_config\s*\(\s*(?:'([^']+)'|\$(\d+))/gi)) {
|
|
73
|
+
const name = m[1] ?? params[Number(m[2]) - 1];
|
|
74
|
+
if (typeof name === 'string' && SETTING_NAME.test(name))
|
|
75
|
+
names.push(name);
|
|
76
|
+
}
|
|
77
|
+
const set = /^\s*set\s+(?:(?:local|session)\s+)?([A-Za-z_][\w.]*)\s*(?:=|to\b)/i.exec(query);
|
|
78
|
+
if (set?.[1] !== undefined)
|
|
79
|
+
names.push(set[1]);
|
|
80
|
+
return names;
|
|
81
|
+
}
|
|
82
|
+
async function snapshot(db, names) {
|
|
83
|
+
const settings = new Map();
|
|
84
|
+
if (names.size > 0) {
|
|
85
|
+
const list = [...names].map(n => `'${n}'`).join(', ');
|
|
86
|
+
const rows = await db.execute(sql.raw(`SELECT n, current_setting(n, true) AS v FROM unnest(ARRAY[${list}]) AS n`));
|
|
87
|
+
for (const row of rows)
|
|
88
|
+
settings.set(String(row['n']), row['v'] ?? null);
|
|
89
|
+
}
|
|
90
|
+
const [who] = await db.execute(sql `SELECT current_user AS role`);
|
|
91
|
+
return { settings, role: String(who?.['role']) };
|
|
92
|
+
}
|
|
93
|
+
async function restore(db, before, names) {
|
|
94
|
+
const after = await snapshot(db, names);
|
|
95
|
+
for (const [name, value] of after.settings) {
|
|
96
|
+
// A setting first seen inside the savepoint was unset before it.
|
|
97
|
+
const was = before.settings.get(name) ?? '';
|
|
98
|
+
if ((value ?? '') !== was)
|
|
99
|
+
await db.execute(sql `SELECT set_config(${name}, ${was}, true)`);
|
|
100
|
+
}
|
|
101
|
+
if (after.role !== before.role) {
|
|
102
|
+
await db.execute(sql.raw(`SET LOCAL ROLE "${before.role.replaceAll('"', '""')}"`));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=savepoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"savepoints.js","sourceRoot":"","sources":["../../src/test/savepoints.ts"],"names":[],"mappings":"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"}
|
package/dist/test/vitest.d.ts
CHANGED
|
@@ -62,7 +62,11 @@ export declare function _isInTestIsolation(): boolean;
|
|
|
62
62
|
* open transaction, bound into the context for every database name. Nothing a
|
|
63
63
|
* handler writes under it is ever committed, so a test on this instance cannot
|
|
64
64
|
* observe commit boundaries in either direction — transaction-per-request on or
|
|
65
|
-
* off reads the same.
|
|
65
|
+
* off reads the same. A request, a job, `pipe.transaction()`, a `'manual'`
|
|
66
|
+
* checkpoint or any other framework transaction is a savepoint of the test's
|
|
67
|
+
* transaction (isolation-level options are ignored there): the transaction id
|
|
68
|
+
* stays the same, and tenant and other transaction-local settings, and the role,
|
|
69
|
+
* are back to their earlier values once it ends. For commit boundaries, build the venue from `discoverInstance()` and
|
|
66
70
|
* `createServer()` on the package entry instead.
|
|
67
71
|
*/
|
|
68
72
|
export declare function useTestInstance(): Manifold;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGnD,OAAO,EAA0H,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAEtK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAO5E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAKxF;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAwBnF;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAiC3C;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAyC5C;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,OAAO,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,IAAI,CAElH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB3D;AAED;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;gBAE1D,QAAQ,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAa1E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAMD,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED
|
|
1
|
+
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAGnD,OAAO,EAA0H,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAEtK,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAO5E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAKxF;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAwBnF;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAiC3C;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAyC5C;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,OAAO,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAAG,IAAI,CAElH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB3D;AAED;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;gBAE1D,QAAQ,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAa1E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAMD,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,IAAI,QAAQ,CAS1C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/test/vitest.js
CHANGED
|
@@ -185,7 +185,11 @@ export function _isInTestIsolation() {
|
|
|
185
185
|
* open transaction, bound into the context for every database name. Nothing a
|
|
186
186
|
* handler writes under it is ever committed, so a test on this instance cannot
|
|
187
187
|
* observe commit boundaries in either direction — transaction-per-request on or
|
|
188
|
-
* off reads the same.
|
|
188
|
+
* off reads the same. A request, a job, `pipe.transaction()`, a `'manual'`
|
|
189
|
+
* checkpoint or any other framework transaction is a savepoint of the test's
|
|
190
|
+
* transaction (isolation-level options are ignored there): the transaction id
|
|
191
|
+
* stays the same, and tenant and other transaction-local settings, and the role,
|
|
192
|
+
* are back to their earlier values once it ends. For commit boundaries, build the venue from `discoverInstance()` and
|
|
189
193
|
* `createServer()` on the package entry instead.
|
|
190
194
|
*/
|
|
191
195
|
export function useTestInstance() {
|
package/dist/test/vitest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/trace/partition/sync.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAIhD,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/trace/partition/sync.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAIhD,OAAO,EAAqC,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAMxF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,oBAAoB,EAC5B,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,oBAAoB,CAAC,CA6E/B"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { sql } from '../../data/db/sql.js';
|
|
7
7
|
import { quoteIdentifier } from '../../data/db/identifiers.js';
|
|
8
8
|
import { getBaseLogger } from '../../core/logging/index.js';
|
|
9
|
-
import { PARTITIONED_TRACE_TABLES } from './tables.js';
|
|
9
|
+
import { PARTITIONED_TRACE_TABLES, STEP_TABLE_PARENTS } from './tables.js';
|
|
10
10
|
import { planPartitions } from './plan.js';
|
|
11
11
|
import { addDays } from './day.js';
|
|
12
12
|
import { auditRecord } from '../../audit/schema/audit-record.js';
|
|
@@ -36,6 +36,12 @@ export async function syncTracePartitions(db, config, now = new Date()) {
|
|
|
36
36
|
`FOR VALUES FROM ('${partition.day}') TO ('${upper}')`));
|
|
37
37
|
}
|
|
38
38
|
const chained = plan.drop.some(p => p.parent === auditRecord.$name) && await auditChainInstalled(db);
|
|
39
|
+
const traceParents = new Set(STEP_TABLE_PARENTS.values());
|
|
40
|
+
const stepDrops = new Map();
|
|
41
|
+
for (const partition of plan.drop) {
|
|
42
|
+
if (STEP_TABLE_PARENTS.has(partition.parent))
|
|
43
|
+
stepDrops.set(`${partition.parent}:${partition.day}`, partition);
|
|
44
|
+
}
|
|
39
45
|
for (const partition of plan.drop) {
|
|
40
46
|
const child = quoteIdentifier(partition.name, 'trace partition');
|
|
41
47
|
if (chained && partition.parent === auditRecord.$name) {
|
|
@@ -44,8 +50,31 @@ export async function syncTracePartitions(db, config, now = new Date()) {
|
|
|
44
50
|
await withMaintenance(db, tx => retireAuditPartition(tx, child));
|
|
45
51
|
continue;
|
|
46
52
|
}
|
|
53
|
+
if (STEP_TABLE_PARENTS.has(partition.parent))
|
|
54
|
+
continue; // dropped with its trace partition's day
|
|
55
|
+
if (traceParents.has(partition.parent)) {
|
|
56
|
+
// The step table's foreign key points at this partition: drop the day's
|
|
57
|
+
// step partition first, then detach the trace partition (Postgres will
|
|
58
|
+
// not drop a referenced partition while attached), all or nothing.
|
|
59
|
+
const stepParent = [...STEP_TABLE_PARENTS].find(([, traceParent]) => traceParent === partition.parent)[0];
|
|
60
|
+
const step = stepDrops.get(`${stepParent}:${partition.day}`);
|
|
61
|
+
const parent = quoteIdentifier(partition.parent, 'trace table');
|
|
62
|
+
await db.transaction(async (tx) => {
|
|
63
|
+
if (step !== undefined) {
|
|
64
|
+
await tx.execute(sql.raw(`DROP TABLE IF EXISTS ${quoteIdentifier(step.name, 'trace partition')}`));
|
|
65
|
+
stepDrops.delete(`${stepParent}:${partition.day}`);
|
|
66
|
+
}
|
|
67
|
+
await tx.execute(sql.raw(`ALTER TABLE ${parent} DETACH PARTITION ${child}`));
|
|
68
|
+
await tx.execute(sql.raw(`DROP TABLE IF EXISTS ${child}`));
|
|
69
|
+
});
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
47
72
|
await db.execute(sql.raw(`DROP TABLE IF EXISTS ${child}`));
|
|
48
73
|
}
|
|
74
|
+
// A step partition left over has no trace partition planned for its day.
|
|
75
|
+
for (const step of stepDrops.values()) {
|
|
76
|
+
await db.execute(sql.raw(`DROP TABLE IF EXISTS ${quoteIdentifier(step.name, 'trace partition')}`));
|
|
77
|
+
}
|
|
49
78
|
const summary = {
|
|
50
79
|
created: toCreate.map(p => p.name),
|
|
51
80
|
dropped: plan.drop.map(p => p.name),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/trace/partition/sync.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,8EAA8E;AAC9E,iDAAiD;AAEjD,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/trace/partition/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,4 +12,10 @@ export declare const PARTITIONED_TRACE_TABLES: readonly PartitionedTraceTable[];
|
|
|
12
12
|
* provisions them — parent plus day partitions — itself. Issue #313.
|
|
13
13
|
*/
|
|
14
14
|
export declare const PARTITIONED_TRACE_TABLE_NAMES: ReadonlySet<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Each step table with the trace table its foreign key points at. A day's step
|
|
17
|
+
* partition must go before the trace partition it references, so retention
|
|
18
|
+
* drops the two together.
|
|
19
|
+
*/
|
|
20
|
+
export declare const STEP_TABLE_PARENTS: ReadonlyMap<string, string>;
|
|
15
21
|
//# sourceMappingURL=tables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../src/trace/partition/tables.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;AAErD,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CACnC;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,qBAAqB,EAMpE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAE7D,CAAA"}
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../src/trace/partition/tables.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;AAErD,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CACnC;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,qBAAqB,EAMpE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAE7D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAGzD,CAAA"}
|
|
@@ -28,4 +28,13 @@ export const PARTITIONED_TRACE_TABLES = [
|
|
|
28
28
|
* provisions them — parent plus day partitions — itself. Issue #313.
|
|
29
29
|
*/
|
|
30
30
|
export const PARTITIONED_TRACE_TABLE_NAMES = new Set(PARTITIONED_TRACE_TABLES.map(t => t.parent));
|
|
31
|
+
/**
|
|
32
|
+
* Each step table with the trace table its foreign key points at. A day's step
|
|
33
|
+
* partition must go before the trace partition it references, so retention
|
|
34
|
+
* drops the two together.
|
|
35
|
+
*/
|
|
36
|
+
export const STEP_TABLE_PARENTS = new Map([
|
|
37
|
+
[traceStep.$name, trace.$name],
|
|
38
|
+
[traceStepRetained.$name, traceRetained.$name],
|
|
39
|
+
]);
|
|
31
40
|
//# sourceMappingURL=tables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/trace/partition/tables.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,oEAAoE;AACpE,EAAE;AACF,yEAAyE;AACzE,iFAAiF;AACjF,iDAAiD;AACjD,gFAAgF;AAChF,6DAA6D;AAC7D,EAAE;AACF,+EAA+E;AAC/E,2DAA2D;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAUhE,MAAM,CAAC,MAAM,wBAAwB,GAAqC;IACxE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IACzC,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IAC7C,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;IAClD,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;IACtD,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;CAClD,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB,IAAI,GAAG,CACvE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAC5C,CAAA"}
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/trace/partition/tables.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,oEAAoE;AACpE,EAAE;AACF,yEAAyE;AACzE,iFAAiF;AACjF,iDAAiD;AACjD,gFAAgF;AAChF,6DAA6D;AAC7D,EAAE;AACF,+EAA+E;AAC/E,2DAA2D;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAUhE,MAAM,CAAC,MAAM,wBAAwB,GAAqC;IACxE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IACzC,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IAC7C,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;IAClD,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;IACtD,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;CAClD,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB,IAAI,GAAG,CACvE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAC5C,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgC,IAAI,GAAG,CAAC;IACrE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IAC9B,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;CAC/C,CAAC,CAAA"}
|