pipework 0.9.0 → 0.10.1
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 +14 -0
- package/dist/async/jobs/abortable-delay.d.ts +3 -0
- package/dist/async/jobs/abortable-delay.d.ts.map +1 -0
- package/dist/async/jobs/abortable-delay.js +19 -0
- package/dist/async/jobs/abortable-delay.js.map +1 -0
- package/dist/async/jobs/exclusion.d.ts +25 -0
- package/dist/async/jobs/exclusion.d.ts.map +1 -0
- package/dist/async/jobs/exclusion.js +80 -0
- package/dist/async/jobs/exclusion.js.map +1 -0
- package/dist/async/jobs/index.d.ts +2 -1
- package/dist/async/jobs/index.d.ts.map +1 -1
- package/dist/async/jobs/index.js.map +1 -1
- package/dist/async/jobs/queue.d.ts +26 -2
- package/dist/async/jobs/queue.d.ts.map +1 -1
- package/dist/async/jobs/queue.js +129 -36
- package/dist/async/jobs/queue.js.map +1 -1
- package/dist/async/jobs/table.d.ts +14 -0
- package/dist/async/jobs/table.d.ts.map +1 -0
- package/dist/async/jobs/table.js +115 -0
- package/dist/async/jobs/table.js.map +1 -0
- package/dist/auth/tenant/scoped-db.d.ts.map +1 -1
- package/dist/auth/tenant/scoped-db.js +6 -3
- package/dist/auth/tenant/scoped-db.js.map +1 -1
- package/dist/core/pipework.d.ts +2 -0
- package/dist/core/pipework.d.ts.map +1 -1
- package/dist/core/pipework.js +3 -0
- package/dist/core/pipework.js.map +1 -1
- package/dist/core/surface/worker.d.ts.map +1 -1
- package/dist/core/surface/worker.js +26 -9
- package/dist/core/surface/worker.js.map +1 -1
- package/dist/data/db/db.d.ts +21 -0
- package/dist/data/db/db.d.ts.map +1 -1
- package/dist/data/db/db.js +30 -0
- package/dist/data/db/db.js.map +1 -1
- package/dist/data/db/expressions.d.ts +17 -5
- package/dist/data/db/expressions.d.ts.map +1 -1
- package/dist/data/db/expressions.js +30 -5
- package/dist/data/db/expressions.js.map +1 -1
- package/dist/data/db/filter.d.ts +9 -1
- package/dist/data/db/filter.d.ts.map +1 -1
- package/dist/data/db/filter.js +9 -1
- package/dist/data/db/filter.js.map +1 -1
- package/dist/data/db/namespace.d.ts +11 -1
- package/dist/data/db/namespace.d.ts.map +1 -1
- package/dist/data/db/namespace.js +3 -1
- package/dist/data/db/namespace.js.map +1 -1
- package/dist/data/db/serializable.d.ts +2 -0
- package/dist/data/db/serializable.d.ts.map +1 -1
- package/dist/data/db/serializable.js +2 -1
- package/dist/data/db/serializable.js.map +1 -1
- package/dist/data/domain/build-factory.js +2 -0
- package/dist/data/domain/build-factory.js.map +1 -1
- package/dist/data/domain/build-schema.js +7 -0
- package/dist/data/domain/build-schema.js.map +1 -1
- package/dist/data/domain/build-table.d.ts.map +1 -1
- package/dist/data/domain/build-table.js +9 -1
- package/dist/data/domain/build-table.js.map +1 -1
- package/dist/data/domain/field.d.ts +2 -0
- package/dist/data/domain/field.d.ts.map +1 -1
- package/dist/data/domain/field.js +4 -0
- package/dist/data/domain/field.js.map +1 -1
- package/dist/data/domain/types.d.ts +1 -1
- package/dist/data/domain/types.d.ts.map +1 -1
- package/dist/data/domain/types.js.map +1 -1
- package/dist/data/migrate/diff.js +7 -0
- package/dist/data/migrate/diff.js.map +1 -1
- package/dist/data/migrate/internal-definitions.d.ts.map +1 -1
- package/dist/data/migrate/internal-definitions.js +9 -0
- package/dist/data/migrate/internal-definitions.js.map +1 -1
- package/dist/data/migrate/snapshot.js +7 -5
- package/dist/data/migrate/snapshot.js.map +1 -1
- package/dist/data/migrate/sql-emit.js +4 -1
- package/dist/data/migrate/sql-emit.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// The queue table as a pipe.define() definition, built from queue config.
|
|
2
|
+
//
|
|
3
|
+
// The table shape used to live in a hand-written schema.sql that no TS code
|
|
4
|
+
// referenced, so `pipework generate` could not emit it and a regenerated
|
|
5
|
+
// baseline silently dropped the queue migration. Expressing it as a
|
|
6
|
+
// DefinedTable puts it on the same generate path as every other table:
|
|
7
|
+
// createQueue() registers the definition here, and the migration generator
|
|
8
|
+
// merges this registry through its internalDefinitions hook.
|
|
9
|
+
import { define } from '../../data/domain/index.js';
|
|
10
|
+
import { field } from '../../data/domain/field.js';
|
|
11
|
+
import { schema } from '../../data/schema/namespace.js';
|
|
12
|
+
import { index } from '../../data/db/idx/index.js';
|
|
13
|
+
import { quoteIdentifier } from '../../data/db/identifiers.js';
|
|
14
|
+
import { sql } from '../../data/db/sql.js';
|
|
15
|
+
export const QUEUE_STATUSES = ['pending', 'claimed', 'running', 'completed', 'failed', 'cancelled', 'dead_letter'];
|
|
16
|
+
/** Column names every queue table owns — exclusion columns must not collide with these. */
|
|
17
|
+
export const QUEUE_BASE_COLUMNS = new Set([
|
|
18
|
+
'id', 'job_type', 'priority', 'status', 'payload', 'output', 'error_payload',
|
|
19
|
+
'created_lsn', 'queued_at', 'claimed_at', 'heartbeat_at', 'completed_at',
|
|
20
|
+
'worker_id', 'attempt_count', 'max_attempts', 'next_retry_at',
|
|
21
|
+
]);
|
|
22
|
+
function queueFields(exclusion) {
|
|
23
|
+
const fields = {
|
|
24
|
+
id: field.uuid().primaryKey().defaultRandom(),
|
|
25
|
+
jobType: field.text(),
|
|
26
|
+
priority: field.integer().default(0),
|
|
27
|
+
status: field.enum(QUEUE_STATUSES).default('pending'),
|
|
28
|
+
payload: field.jsonb(schema.check.json()),
|
|
29
|
+
output: field.jsonb(schema.check.json()).nullable(),
|
|
30
|
+
errorPayload: field.jsonb(schema.check.json()).nullable(),
|
|
31
|
+
createdLsn: field.pgLsn().default('currentWal'),
|
|
32
|
+
queuedAt: field.timestamp().default('now'),
|
|
33
|
+
claimedAt: field.timestamp().nullable(),
|
|
34
|
+
heartbeatAt: field.timestamp().nullable(),
|
|
35
|
+
completedAt: field.timestamp().nullable(),
|
|
36
|
+
workerId: field.text().nullable(),
|
|
37
|
+
attemptCount: field.integer().default(0),
|
|
38
|
+
maxAttempts: field.integer().default(1),
|
|
39
|
+
nextRetryAt: field.timestamp().nullable(),
|
|
40
|
+
};
|
|
41
|
+
if (exclusion?.tenantColumn !== undefined) {
|
|
42
|
+
fields[exclusion.tenantColumn] = field.uuid().tenant();
|
|
43
|
+
}
|
|
44
|
+
if (exclusion?.arrayColumn !== undefined) {
|
|
45
|
+
const column = exclusion.arrayElementType === 'text'
|
|
46
|
+
? schema.col.text(exclusion.arrayColumn).array()
|
|
47
|
+
: schema.col.uuid(exclusion.arrayColumn).array();
|
|
48
|
+
fields[exclusion.arrayColumn] = field.custom(column, schema.check.array(schema.check.string())).nullable();
|
|
49
|
+
}
|
|
50
|
+
if (exclusion?.blocksAllColumn !== undefined) {
|
|
51
|
+
fields[exclusion.blocksAllColumn] = field.boolean().default(false);
|
|
52
|
+
}
|
|
53
|
+
return fields;
|
|
54
|
+
}
|
|
55
|
+
const queueTables = new Map();
|
|
56
|
+
/**
|
|
57
|
+
* Builds (or reuses) the DefinedTable for a queue. Cached per table name so
|
|
58
|
+
* repeated createQueue() calls share one definition; the same name with a
|
|
59
|
+
* different shape is a config error, not a silent overwrite.
|
|
60
|
+
*/
|
|
61
|
+
export function queueDefinition(tableName, exclusion) {
|
|
62
|
+
const configKey = JSON.stringify(exclusion ?? null);
|
|
63
|
+
const existing = queueTables.get(tableName);
|
|
64
|
+
if (existing !== undefined) {
|
|
65
|
+
if (existing.configKey !== configKey) {
|
|
66
|
+
throw new Error(`[pipework] Queue table "${tableName}" is already defined with a different exclusion config.\n\n` +
|
|
67
|
+
` Existing: ${existing.configKey}\n` +
|
|
68
|
+
` New: ${configKey}\n` +
|
|
69
|
+
' One table, one shape — give the second queue its own table name.\n');
|
|
70
|
+
}
|
|
71
|
+
return existing.definition;
|
|
72
|
+
}
|
|
73
|
+
const definition = define(tableName, queueFields(exclusion), {
|
|
74
|
+
indexes: (t) => ({
|
|
75
|
+
claimable: index(`idx_${tableName}_claimable`)
|
|
76
|
+
.on(t['priority'].desc(), t['queuedAt'].asc())
|
|
77
|
+
.where(sql.raw(`status = 'pending'`)),
|
|
78
|
+
stale: index(`idx_${tableName}_stale`)
|
|
79
|
+
.on(t['heartbeatAt'])
|
|
80
|
+
.where(sql.raw(`status IN ('claimed', 'running')`)),
|
|
81
|
+
retryable: index(`idx_${tableName}_retryable`)
|
|
82
|
+
.on(t['nextRetryAt'])
|
|
83
|
+
.where(sql.raw(`status = 'pending' AND next_retry_at IS NOT NULL`)),
|
|
84
|
+
// The claim query's exclusion checks run under SERIALIZABLE; without a
|
|
85
|
+
// matching index the overlap NOT EXISTS scans the whole claimed/running
|
|
86
|
+
// set and takes coarse predicate locks, so claimers with disjoint arrays
|
|
87
|
+
// SSI-conflict and starve. Partial GIN keeps the locks at the key level;
|
|
88
|
+
// fastupdate must be off — a GIN pending list forces relation-level
|
|
89
|
+
// predicate locks, voiding the granularity.
|
|
90
|
+
...(exclusion?.arrayColumn !== undefined ? {
|
|
91
|
+
exclusionArray: index(`idx_${tableName}_excl_arr`)
|
|
92
|
+
.using('gin', t[exclusion.arrayColumn])
|
|
93
|
+
.with({ fastupdate: 'off' })
|
|
94
|
+
.where(sql.raw(`status IN ('claimed', 'running')`)),
|
|
95
|
+
} : {}),
|
|
96
|
+
// Same starvation mechanism for the blocks-all NOT EXISTS: without its
|
|
97
|
+
// own index that check scans every claimed/running row. This partial
|
|
98
|
+
// index contains only active blocks-all jobs (normally none), so
|
|
99
|
+
// ordinary claims neither read beyond it nor insert into it — only a
|
|
100
|
+
// genuine blocks-all claim conflicts, which is the intended semantics.
|
|
101
|
+
...(exclusion?.blocksAllColumn !== undefined ? {
|
|
102
|
+
exclusionBlocks: index(`idx_${tableName}_excl_blocks`)
|
|
103
|
+
.on(t[exclusion.tenantColumn ?? exclusion.blocksAllColumn])
|
|
104
|
+
.where(sql.raw(`status IN ('claimed', 'running') AND ${quoteIdentifier(exclusion.blocksAllColumn, 'exclusion column')} = true`)),
|
|
105
|
+
} : {}),
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
queueTables.set(tableName, { definition, configKey });
|
|
109
|
+
return definition;
|
|
110
|
+
}
|
|
111
|
+
/** Registered queue definitions — merged into `pipework generate` via internalDefinitions. */
|
|
112
|
+
export function queueDefinitions() {
|
|
113
|
+
return new Map([...queueTables].map(([name, entry]) => [name, entry.definition]));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/async/jobs/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAiKhD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAsB9C;AAmBD,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,EAAE,CAgE3D"}
|
|
@@ -131,9 +131,12 @@ function throwTenantRequired(tableName, operation) {
|
|
|
131
131
|
throw new Error(`[pipework] Cannot ${operation} tenant-scoped table "${tableName}" without a tenant in context.\n\n` +
|
|
132
132
|
' This table has a .tenant() field, which means all operations require\n' +
|
|
133
133
|
' an active tenant in the request/job context.\n\n' +
|
|
134
|
-
' If this is a system-level operation that legitimately needs
|
|
135
|
-
'
|
|
136
|
-
'
|
|
134
|
+
' If this is a system-level operation that legitimately needs cross-tenant\n' +
|
|
135
|
+
' access — pre-tenant auth (e.g. resolving org membership during login),\n' +
|
|
136
|
+
' public webhook ingress, admin tooling — use pipe.system() instead. It is\n' +
|
|
137
|
+
' the explicit unscoped channel: owner-role connection, outside the request\n' +
|
|
138
|
+
' transaction, never tenant-filtered. Every query through it must be\n' +
|
|
139
|
+
' deliberately cross-tenant-safe.\n');
|
|
137
140
|
}
|
|
138
141
|
export function createTenantGuardDb(db) {
|
|
139
142
|
return new Proxy(db, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-db.js","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scoped-db.js","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"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"}
|
package/dist/core/pipework.d.ts
CHANGED
|
@@ -39,6 +39,8 @@ export interface PoolState {
|
|
|
39
39
|
getOrCreate(config: ResolvedDatabase, role?: ConnectionRole): ManagedConnection;
|
|
40
40
|
/** Returns pool by name, or undefined if not yet created. */
|
|
41
41
|
get(name: string): ManagedConnection | undefined;
|
|
42
|
+
/** True when a test-harness override is registered for this database — collapsed (transaction-isolation) mode, where every role shares the single rolled-back connection. */
|
|
43
|
+
isOverridden(name: string): boolean;
|
|
42
44
|
/** Closes all managed connections. */
|
|
43
45
|
closeAll(): Promise<void>;
|
|
44
46
|
/** Number of active connection pools. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipework.d.ts","sourceRoot":"","sources":["../../src/core/pipework.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipework.d.ts","sourceRoot":"","sources":["../../src/core/pipework.ts"],"names":[],"mappings":"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"}
|
package/dist/core/pipework.js
CHANGED
|
@@ -152,6 +152,9 @@ function createPoolState(resolvedConfig) {
|
|
|
152
152
|
get(name) {
|
|
153
153
|
return overrides.get(name) ?? map.get(name);
|
|
154
154
|
},
|
|
155
|
+
isOverridden(name) {
|
|
156
|
+
return overrides.has(name);
|
|
157
|
+
},
|
|
155
158
|
async closeAll() {
|
|
156
159
|
const closing = [...map.values()].map(c => c.close());
|
|
157
160
|
await Promise.all(closing);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipework.js","sourceRoot":"","sources":["../../src/core/pipework.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAI5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"pipework.js","sourceRoot":"","sources":["../../src/core/pipework.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/core/surface/worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAiB,mBAAmB,EAAkB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/core/surface/worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAiB,mBAAmB,EAAkB,MAAM,YAAY,CAAA;AAWpG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CA4K/E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { DEFAULT_DB } from '../../request/di/types.js';
|
|
3
3
|
import { createQueue } from '../../async/jobs/queue.js';
|
|
4
|
+
import { abortableDelay } from '../../async/jobs/abortable-delay.js';
|
|
4
5
|
import { executeJob } from '../../async/jobs/execute.js';
|
|
5
6
|
import { getBaseLogger } from '../logging/index.js';
|
|
6
7
|
import { sql } from '../../data/db/sql.js';
|
|
@@ -9,6 +10,10 @@ export function createWorkerSurface(config) {
|
|
|
9
10
|
const jobTypes = collectJobTypes(config.jobs);
|
|
10
11
|
validateJobHandlers(config.jobs);
|
|
11
12
|
const deps = {};
|
|
13
|
+
// Created at surface construction, not start(): createQueue() registers the
|
|
14
|
+
// queue table definition, and `pipework generate` discovers surfaces without
|
|
15
|
+
// starting them — construction time is what makes the DDL reach migrations.
|
|
16
|
+
const queue = createQueue(config.queue);
|
|
12
17
|
const surface = {
|
|
13
18
|
kind: 'worker',
|
|
14
19
|
manifest: { databases, jobTypes, dependencies: deps },
|
|
@@ -18,7 +23,6 @@ export function createWorkerSurface(config) {
|
|
|
18
23
|
},
|
|
19
24
|
async start(context) {
|
|
20
25
|
const logger = getBaseLogger();
|
|
21
|
-
const queue = createQueue(config.queue);
|
|
22
26
|
const dbName = config.database ?? context.config.defaultDatabaseName();
|
|
23
27
|
const dbConfig = context.config.database(dbName);
|
|
24
28
|
const conn = context.pool.getOrCreate(dbConfig);
|
|
@@ -41,14 +45,18 @@ export function createWorkerSurface(config) {
|
|
|
41
45
|
const shutdownDeadlineMs = config.shutdownDeadlineMs ?? 30_000;
|
|
42
46
|
const priorityTimeouts = config.timeouts ?? {};
|
|
43
47
|
const shouldRun = { value: true };
|
|
48
|
+
// claim() retries transient conflicts until clean (unbounded), so
|
|
49
|
+
// shouldRun alone cannot end a loop stuck under contention — the abort
|
|
50
|
+
// signal is what makes shutdown observable inside claim and the sleeps.
|
|
51
|
+
const shutdown = new AbortController();
|
|
44
52
|
let inFlight = 0;
|
|
45
53
|
const claimLoop = async () => {
|
|
46
54
|
const workerId = randomUUID();
|
|
47
55
|
while (shouldRun.value) {
|
|
48
56
|
try {
|
|
49
|
-
const claimed = await queue.claim(db, workerId);
|
|
57
|
+
const claimed = await queue.claim(db, workerId, shutdown.signal);
|
|
50
58
|
if (claimed === null) {
|
|
51
|
-
await
|
|
59
|
+
await abortableDelay(pollIntervalMs, shutdown.signal);
|
|
52
60
|
continue;
|
|
53
61
|
}
|
|
54
62
|
const handler = dispatch.get(claimed.type);
|
|
@@ -81,7 +89,7 @@ export function createWorkerSurface(config) {
|
|
|
81
89
|
}
|
|
82
90
|
}
|
|
83
91
|
catch {
|
|
84
|
-
await
|
|
92
|
+
await abortableDelay(pollIntervalMs, shutdown.signal);
|
|
85
93
|
}
|
|
86
94
|
}
|
|
87
95
|
};
|
|
@@ -107,6 +115,7 @@ export function createWorkerSurface(config) {
|
|
|
107
115
|
async stop() {
|
|
108
116
|
logger.info({ inFlight, deadlineMs: shutdownDeadlineMs }, 'Worker surface draining');
|
|
109
117
|
shouldRun.value = false;
|
|
118
|
+
shutdown.abort();
|
|
110
119
|
if (reaperTimer !== null) {
|
|
111
120
|
clearInterval(reaperTimer);
|
|
112
121
|
reaperTimer = null;
|
|
@@ -115,10 +124,21 @@ export function createWorkerSurface(config) {
|
|
|
115
124
|
await queue.stopListener();
|
|
116
125
|
}
|
|
117
126
|
const deadline = Date.now() + shutdownDeadlineMs;
|
|
118
|
-
|
|
127
|
+
// Defense in depth behind the abort signal: a claim loop that
|
|
128
|
+
// somehow ignores cancellation must not wedge stop(). The deadline
|
|
129
|
+
// leg is aborted when the loops win so its timer cannot hold the
|
|
130
|
+
// event loop open after a clean shutdown.
|
|
131
|
+
const deadlineAc = new AbortController();
|
|
132
|
+
const loopsExited = await Promise.race([
|
|
133
|
+
Promise.allSettled(workers).then(() => { deadlineAc.abort(); return true; }),
|
|
134
|
+
abortableDelay(shutdownDeadlineMs, deadlineAc.signal).then(() => false),
|
|
135
|
+
]);
|
|
136
|
+
if (!loopsExited) {
|
|
137
|
+
logger.warn('Claim loops did not exit within the shutdown deadline');
|
|
138
|
+
}
|
|
119
139
|
while (inFlight > 0 && Date.now() < deadline) {
|
|
120
140
|
logger.info({ inFlight, remainingMs: deadline - Date.now() }, 'Waiting for in-flight jobs');
|
|
121
|
-
await
|
|
141
|
+
await abortableDelay(Math.min(500, deadline - Date.now()));
|
|
122
142
|
}
|
|
123
143
|
if (inFlight > 0) {
|
|
124
144
|
logger.warn({ inFlight }, 'Shutdown deadline reached with in-flight jobs');
|
|
@@ -204,7 +224,4 @@ async function executeWithTimeout(fn, timeoutMs, jobType, jobId) {
|
|
|
204
224
|
]);
|
|
205
225
|
return result;
|
|
206
226
|
}
|
|
207
|
-
function sleep(ms) {
|
|
208
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
209
|
-
}
|
|
210
227
|
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/core/surface/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/core/surface/worker.ts"],"names":[],"mappings":"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"}
|
package/dist/data/db/db.d.ts
CHANGED
|
@@ -13,4 +13,25 @@ export declare namespace pipe {
|
|
|
13
13
|
* picks up the tenant filter naturally; this raw handle is only the carrier.
|
|
14
14
|
*/
|
|
15
15
|
export declare function pipeRaw(name?: string): DB;
|
|
16
|
+
/**
|
|
17
|
+
* The system channel — deliberate cross-tenant database access for surfaces
|
|
18
|
+
* that legitimately operate without a tenant in context: pre-tenant auth
|
|
19
|
+
* (membership resolution during login), public webhook ingress, admin tooling.
|
|
20
|
+
*
|
|
21
|
+
* Unlike `pipe()`, the handle is never tenant-scoped and never tenant-guarded.
|
|
22
|
+
* Unlike `pipeRaw()`, it does not return the request's bound transaction — it
|
|
23
|
+
* resolves the owner-role pooled connection, outside the request/job
|
|
24
|
+
* transaction. The bound transaction authenticates as the runtime app role
|
|
25
|
+
* and is RLS-bound fail-closed, so an unscoped query inside it would silently
|
|
26
|
+
* return zero rows once role separation is on; the owner connection is the
|
|
27
|
+
* only honest carrier for a cross-tenant read. Queries here see committed
|
|
28
|
+
* data only and do not participate in request atomicity.
|
|
29
|
+
*
|
|
30
|
+
* Under collapsed test isolation (a pool override is registered for the
|
|
31
|
+
* database) every role shares the single rolled-back connection, and that
|
|
32
|
+
* connection is reserved by the open transaction — joining the bound
|
|
33
|
+
* transaction is then the only non-deadlocking route, and the owner/app
|
|
34
|
+
* distinction is already collapsed.
|
|
35
|
+
*/
|
|
36
|
+
export declare function pipeSystem(name?: string): DB;
|
|
16
37
|
//# sourceMappingURL=db.d.ts.map
|
package/dist/data/db/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/data/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAoBvD,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAQtC;yBARe,IAAI;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/data/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAoBvD,wBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAQtC;yBARe,IAAI;sBAyD0B,CAAC,YACnC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,oBACzB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,gBAChD,iBAAiB,KAC9B,OAAO,CAAC,CAAC,CAAC;;AAnDb;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAEzC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAW5C"}
|
package/dist/data/db/db.js
CHANGED
|
@@ -33,6 +33,36 @@ export function pipe(name) {
|
|
|
33
33
|
export function pipeRaw(name) {
|
|
34
34
|
return resolveDb(name);
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* The system channel — deliberate cross-tenant database access for surfaces
|
|
38
|
+
* that legitimately operate without a tenant in context: pre-tenant auth
|
|
39
|
+
* (membership resolution during login), public webhook ingress, admin tooling.
|
|
40
|
+
*
|
|
41
|
+
* Unlike `pipe()`, the handle is never tenant-scoped and never tenant-guarded.
|
|
42
|
+
* Unlike `pipeRaw()`, it does not return the request's bound transaction — it
|
|
43
|
+
* resolves the owner-role pooled connection, outside the request/job
|
|
44
|
+
* transaction. The bound transaction authenticates as the runtime app role
|
|
45
|
+
* and is RLS-bound fail-closed, so an unscoped query inside it would silently
|
|
46
|
+
* return zero rows once role separation is on; the owner connection is the
|
|
47
|
+
* only honest carrier for a cross-tenant read. Queries here see committed
|
|
48
|
+
* data only and do not participate in request atomicity.
|
|
49
|
+
*
|
|
50
|
+
* Under collapsed test isolation (a pool override is registered for the
|
|
51
|
+
* database) every role shares the single rolled-back connection, and that
|
|
52
|
+
* connection is reserved by the open transaction — joining the bound
|
|
53
|
+
* transaction is then the only non-deadlocking route, and the owner/app
|
|
54
|
+
* distinction is already collapsed.
|
|
55
|
+
*/
|
|
56
|
+
export function pipeSystem(name) {
|
|
57
|
+
const ctx = requireContext();
|
|
58
|
+
const resolvedName = name ?? ctx.instance.config.defaultDatabaseName();
|
|
59
|
+
const bound = ctx.transactions.get(resolvedName);
|
|
60
|
+
if (bound && ctx.instance.pool.isOverridden(resolvedName)) {
|
|
61
|
+
return bound.drizzle;
|
|
62
|
+
}
|
|
63
|
+
const dbConfig = ctx.instance.config.database(resolvedName);
|
|
64
|
+
return ctx.instance.pool.getOrCreate(dbConfig).drizzle;
|
|
65
|
+
}
|
|
36
66
|
pipe.transaction = async function transaction(nameOrFn, maybeFnOrConfig, maybeConfig) {
|
|
37
67
|
const ctx = requireContext();
|
|
38
68
|
let resolvedName;
|
package/dist/data/db/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/data/db/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/data/db/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,12 +33,24 @@ export interface WindowSpec {
|
|
|
33
33
|
}
|
|
34
34
|
/** Applies a window specification to a window function or aggregate: `fn OVER (PARTITION BY ... ORDER BY ...)`. */
|
|
35
35
|
export declare function over<T>(fn: SQL<T>, spec: WindowSpec): SQL<T>;
|
|
36
|
-
/**
|
|
37
|
-
|
|
36
|
+
/**
|
|
37
|
+
* PostgreSQL quoted identifier. One part renders `"name"`; multiple parts
|
|
38
|
+
* dot-qualify: `identifier('t', 'n')` → `"t"."n"`. Each part is one
|
|
39
|
+
* identifier — a dot inside a part is quoted literally, not a qualifier.
|
|
40
|
+
*/
|
|
41
|
+
export declare function identifier(first: string, ...rest: string[]): SQL;
|
|
38
42
|
/** PostgreSQL `WITH RECURSIVE alias AS (seed UNION ALL step) finalQuery`. If `finalQuery` is omitted, defaults to `SELECT * FROM alias`. */
|
|
39
43
|
export declare function withRecursive(alias: string, seed: SQL, step: SQL, finalQuery?: SQL): SQL;
|
|
40
|
-
|
|
44
|
+
export interface CaseBranch<T = unknown> {
|
|
45
|
+
readonly when: SQL | Column;
|
|
46
|
+
readonly then: T | SQL<T> | Column;
|
|
47
|
+
}
|
|
48
|
+
/** PostgreSQL `CASE WHEN .. THEN .. [ELSE ..] END`. Branches evaluate in order; without `elseValue` an unmatched row yields NULL. */
|
|
49
|
+
export declare function caseWhen<T = unknown>(branches: ReadonlyArray<CaseBranch<T>>, elseValue?: T | SQL<T> | Column): SQL<T>;
|
|
50
|
+
/** PostgreSQL `pg_current_wal_lsn()` — returns the current WAL write position on the primary, as text. */
|
|
41
51
|
export declare function walCurrentLsn(): SQL<string>;
|
|
42
|
-
/** PostgreSQL `pg_last_wal_replay_lsn()` — returns the last replayed WAL position on a replica. Returns NULL on the primary.
|
|
43
|
-
export declare function walReplayLsn(): SQL<string>;
|
|
52
|
+
/** PostgreSQL `pg_last_wal_replay_lsn()` — returns the last replayed WAL position on a replica, as text. Returns NULL on the primary. */
|
|
53
|
+
export declare function walReplayLsn(): SQL<string | null>;
|
|
54
|
+
/** PostgreSQL `pg_last_wal_replay_lsn() >= lsn::pg_lsn` — true once a replica has replayed up to the given LSN. Yields NULL (not true) on a primary, where there is no replay position. */
|
|
55
|
+
export declare function replicaFresh(createdLsn: string | Column | SQL): SQL<boolean | null>;
|
|
44
56
|
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/data/db/expressions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAE3E;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAE3E;AAED,oGAAoG;AACpG,wBAAgB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAEhF;AAED,oGAAoG;AACpG,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAErF;AAED,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAE7E;AAED,2FAA2F;AAC3F,wBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAE/B;AAED,gGAAgG;AAChG,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAEtD;AAED,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEpI,kDAAkD;AAClD,wBAAgB,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAE/F;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,GAAG,CAEhE;AAED,8FAA8F;AAC9F,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAErN;AAED,oGAAoG;AACpG,wBAAgB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,CAEvC;AAED,8FAA8F;AAC9F,wBAAgB,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAElC;AAED,oGAAoG;AACpG,wBAAgB,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,CAEvC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;CAC5C;AAED,mHAAmH;AACnH,wBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAY5D;AAED
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/data/db/expressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,9 +66,17 @@ export function over(fn, spec) {
|
|
|
66
66
|
return sql `${fn} over ()`;
|
|
67
67
|
return sql `${fn} over (${sql.join(parts, sql ` `)})`;
|
|
68
68
|
}
|
|
69
|
-
/**
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
/**
|
|
70
|
+
* PostgreSQL quoted identifier. One part renders `"name"`; multiple parts
|
|
71
|
+
* dot-qualify: `identifier('t', 'n')` → `"t"."n"`. Each part is one
|
|
72
|
+
* identifier — a dot inside a part is quoted literally, not a qualifier.
|
|
73
|
+
*/
|
|
74
|
+
export function identifier(first, ...rest) {
|
|
75
|
+
let qualified = sql `${sql.identifier(first)}`;
|
|
76
|
+
for (const part of rest) {
|
|
77
|
+
qualified = sql `${qualified}.${sql.identifier(part)}`;
|
|
78
|
+
}
|
|
79
|
+
return qualified;
|
|
72
80
|
}
|
|
73
81
|
/** PostgreSQL `WITH RECURSIVE alias AS (seed UNION ALL step) finalQuery`. If `finalQuery` is omitted, defaults to `SELECT * FROM alias`. */
|
|
74
82
|
export function withRecursive(alias, seed, step, finalQuery) {
|
|
@@ -78,12 +86,29 @@ export function withRecursive(alias, seed, step, finalQuery) {
|
|
|
78
86
|
}
|
|
79
87
|
return sql `${cte} SELECT * FROM ${sql.identifier(alias)}`;
|
|
80
88
|
}
|
|
81
|
-
/** PostgreSQL `
|
|
89
|
+
/** PostgreSQL `CASE WHEN .. THEN .. [ELSE ..] END`. Branches evaluate in order; without `elseValue` an unmatched row yields NULL. */
|
|
90
|
+
export function caseWhen(branches, elseValue) {
|
|
91
|
+
if (branches.length === 0) {
|
|
92
|
+
throw new Error('[pipework] caseWhen() requires at least one branch.\n\n' +
|
|
93
|
+
' A CASE expression with no WHEN clauses is not valid SQL.\n' +
|
|
94
|
+
" Pass at least one branch: caseWhen([{ when: filter.eq(col, 1), then: 'one' }], 'other').\n");
|
|
95
|
+
}
|
|
96
|
+
const parts = branches.map(b => sql `when ${b.when} then ${b.then}`);
|
|
97
|
+
if (elseValue !== undefined) {
|
|
98
|
+
parts.push(sql `else ${elseValue}`);
|
|
99
|
+
}
|
|
100
|
+
return sql `case ${sql.join(parts, sql ` `)} end`;
|
|
101
|
+
}
|
|
102
|
+
/** PostgreSQL `pg_current_wal_lsn()` — returns the current WAL write position on the primary, as text. */
|
|
82
103
|
export function walCurrentLsn() {
|
|
83
104
|
return sql `pg_current_wal_lsn()::text`;
|
|
84
105
|
}
|
|
85
|
-
/** PostgreSQL `pg_last_wal_replay_lsn()` — returns the last replayed WAL position on a replica. Returns NULL on the primary.
|
|
106
|
+
/** PostgreSQL `pg_last_wal_replay_lsn()` — returns the last replayed WAL position on a replica, as text. Returns NULL on the primary. */
|
|
86
107
|
export function walReplayLsn() {
|
|
87
108
|
return sql `pg_last_wal_replay_lsn()::text`;
|
|
88
109
|
}
|
|
110
|
+
/** PostgreSQL `pg_last_wal_replay_lsn() >= lsn::pg_lsn` — true once a replica has replayed up to the given LSN. Yields NULL (not true) on a primary, where there is no replay position. */
|
|
111
|
+
export function replicaFresh(createdLsn) {
|
|
112
|
+
return sql `pg_last_wal_replay_lsn() >= ${createdLsn}::pg_lsn`;
|
|
113
|
+
}
|
|
89
114
|
//# sourceMappingURL=expressions.js.map
|