orez 0.4.39 → 0.4.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/native-postgres.d.ts.map +1 -1
- package/dist/native-postgres.js +47 -10
- package/dist/native-postgres.js.map +1 -1
- package/dist/zero-litestream-patch.d.ts +27 -17
- package/dist/zero-litestream-patch.d.ts.map +1 -1
- package/dist/zero-litestream-patch.js +56 -24
- package/dist/zero-litestream-patch.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-postgres.d.ts","sourceRoot":"","sources":["../src/native-postgres.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAC5D,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;IACjE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,CAAA;IACpB,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,UAAU,CAAA;IACf,gBAAgB,EAAE,KAAK,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,iBAAiB,CAAA;IAC5B,mEAAmE;IACnE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB;;;;OAIG;IACH,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC;;;OAGG;IACH,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACzC;
|
|
1
|
+
{"version":3,"file":"native-postgres.d.ts","sourceRoot":"","sources":["../src/native-postgres.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAC5D,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;IACjE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,CAAA;IACpB,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,UAAU,CAAA;IACf,gBAAgB,EAAE,KAAK,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,iBAAiB,CAAA;IAC5B,mEAAmE;IACnE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB;;;;OAIG;IACH,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC;;;OAGG;IACH,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACzC;AA0JD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CA8MzB"}
|
package/dist/native-postgres.js
CHANGED
|
@@ -16,6 +16,18 @@ const ZERO_DATABASES = ['zero_cvr', 'zero_cdb'];
|
|
|
16
16
|
// synchronous_commit=off matches the durability posture of the pglite
|
|
17
17
|
// backend (relaxedDurability): fast writes, no corruption risk, at most the
|
|
18
18
|
// last moments of commits lost on a hard crash.
|
|
19
|
+
//
|
|
20
|
+
// the timeout + keepalive flags make the cluster self-healing against the
|
|
21
|
+
// backends a SIGKILL'd zero-cache generation leaves behind. those clients die
|
|
22
|
+
// without closing their sockets, so their backends sit TCP-half-open — an
|
|
23
|
+
// idle-in-transaction change-streamer holding the migrate-schema advisory
|
|
24
|
+
// lock, or a session mid slot-snapshot holding an open xid — and every later
|
|
25
|
+
// zero-cache boot deadlocks on them (ensureSchemaMigrated lock_timeout,
|
|
26
|
+
// CREATE_REPLICATION_SLOT 55P03) until something reaps them. orez's
|
|
27
|
+
// terminateZeroBackends sweep is the fast path; these flags are the backstop
|
|
28
|
+
// postgres applies even when the sweep can't run (e.g. under OOM/swap
|
|
29
|
+
// thrash). sessions that legitimately idle in a transaction opt out with
|
|
30
|
+
// SET LOCAL, which zero-cache's shadow-sync snapshot holder already does.
|
|
19
31
|
const SERVER_FLAGS = [
|
|
20
32
|
'-c',
|
|
21
33
|
'wal_level=logical',
|
|
@@ -25,6 +37,14 @@ const SERVER_FLAGS = [
|
|
|
25
37
|
'synchronous_commit=off',
|
|
26
38
|
'-c',
|
|
27
39
|
'unix_socket_directories=',
|
|
40
|
+
'-c',
|
|
41
|
+
'idle_in_transaction_session_timeout=120000',
|
|
42
|
+
'-c',
|
|
43
|
+
'tcp_keepalives_idle=15',
|
|
44
|
+
'-c',
|
|
45
|
+
'tcp_keepalives_interval=5',
|
|
46
|
+
'-c',
|
|
47
|
+
'tcp_keepalives_count=3',
|
|
28
48
|
];
|
|
29
49
|
/**
|
|
30
50
|
* resolve a transitive dependency of embedded-postgres (the platform binary
|
|
@@ -235,25 +255,42 @@ export async function startNativePostgres(config) {
|
|
|
235
255
|
// zero_cvr + zero_cdb.
|
|
236
256
|
const ORPHAN_FILTER = `pid <> pg_backend_pid() AND application_name LIKE 'zero-%'`;
|
|
237
257
|
const terminateZeroBackends = async () => {
|
|
238
|
-
const listOrphans = async () => (await upstream.query(`SELECT pid
|
|
258
|
+
const listOrphans = async () => (await upstream.query(`SELECT pid, state, left(query, 120) AS query
|
|
259
|
+
FROM pg_stat_activity WHERE ${ORPHAN_FILTER}`)).rows;
|
|
239
260
|
try {
|
|
240
261
|
const orphans = await listOrphans();
|
|
241
262
|
if (orphans.length === 0)
|
|
242
263
|
return 0;
|
|
243
|
-
await upstream.exec(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE ${ORPHAN_FILTER}`);
|
|
244
264
|
// pg_terminate_backend only signals; the backend exits and releases its
|
|
245
|
-
// slot/locks a moment later.
|
|
246
|
-
//
|
|
247
|
-
|
|
265
|
+
// slot/locks a moment later. re-signal on every check: a single signal
|
|
266
|
+
// can be swallowed by a backend stuck in an uninterruptible wait (disk
|
|
267
|
+
// I/O under swap thrash — the exact conditions these orphans appear in),
|
|
268
|
+
// and launching zero-cache while a survivor still holds the
|
|
269
|
+
// migrate-schema advisory lock or an open xid guarantees a doomed
|
|
270
|
+
// 30s+crash cycle.
|
|
271
|
+
let remaining = orphans;
|
|
272
|
+
for (let i = 0; i < 50 && remaining.length > 0; i++) {
|
|
273
|
+
await upstream.exec(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE ${ORPHAN_FILTER}`);
|
|
248
274
|
await new Promise((r) => setTimeout(r, 100));
|
|
249
|
-
|
|
250
|
-
|
|
275
|
+
remaining = await listOrphans();
|
|
276
|
+
}
|
|
277
|
+
if (remaining.length > 0) {
|
|
278
|
+
// loud on purpose: a surviving orphan means the next zero-cache boot
|
|
279
|
+
// will very likely wedge on it. this must be visible in the log next
|
|
280
|
+
// to the crash it causes, not buried at debug level.
|
|
281
|
+
log.orez(`WARNING: ${remaining.length} zero-cache backend(s) survived termination: ` +
|
|
282
|
+
remaining
|
|
283
|
+
.map((o) => `pid ${o.pid} (${o.state ?? '?'}) ${o.query ?? ''}`.trim())
|
|
284
|
+
.join('; '));
|
|
251
285
|
}
|
|
252
|
-
log.orez(`terminated ${orphans.length} orphaned zero-cache backend(s)`);
|
|
253
|
-
return orphans.length;
|
|
286
|
+
log.orez(`terminated ${orphans.length - remaining.length} orphaned zero-cache backend(s)`);
|
|
287
|
+
return orphans.length - remaining.length;
|
|
254
288
|
}
|
|
255
289
|
catch (err) {
|
|
256
|
-
|
|
290
|
+
// not debug: if the sweep itself fails (connection refused, pool
|
|
291
|
+
// saturated), the launch that follows starts against a dirty cluster
|
|
292
|
+
// and the resulting lock_timeout crash needs this line to explain it.
|
|
293
|
+
log.orez(`WARNING: zero backend sweep failed: ${err}`);
|
|
257
294
|
return 0;
|
|
258
295
|
}
|
|
259
296
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-postgres.js","sourceRoot":"","sources":["../src/native-postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAoC9B,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAE/C,+DAA+D;AAC/D,sEAAsE;AACtE,4EAA4E;AAC5E,gDAAgD;AAChD,MAAM,YAAY,GAAG;IACnB,IAAI;IACJ,mBAAmB;IACnB,IAAI;IACJ,4BAA4B;IAC5B,IAAI;IACJ,wBAAwB;IACxB,IAAI;IACJ,0BAA0B;
|
|
1
|
+
{"version":3,"file":"native-postgres.js","sourceRoot":"","sources":["../src/native-postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* neutralize zero-cache's litestream replica restore for orez.
|
|
3
3
|
*
|
|
4
|
-
* zero
|
|
5
|
-
* `restoreReplica()` on startup whenever the change-log already has rows
|
|
6
|
-
*
|
|
7
|
-
* backup
|
|
8
|
-
*
|
|
9
|
-
* "Missing
|
|
10
|
-
*
|
|
11
|
-
* re-syncing the entire replica from scratch.
|
|
4
|
+
* zero's dedicated change-streamer worker unconditionally calls
|
|
5
|
+
* `restoreReplica()` on startup whenever the change-log already has rows.
|
|
6
|
+
* it assumes a litestream backup exists to restore the SQLite replica from.
|
|
7
|
+
* orez has no litestream backup — it owns the replica on disk directly — so
|
|
8
|
+
* without a guard the restore throws "Missing --litestream-executable" (or
|
|
9
|
+
* "Missing required value" for the backup URL) after a retry, which zero
|
|
10
|
+
* logs at error level on every warm restart.
|
|
12
11
|
*
|
|
13
12
|
* the correct config gate doesn't exist for the dedicated change-streamer:
|
|
14
|
-
* - leaving litestream unconfigured -> the error above
|
|
13
|
+
* - leaving litestream unconfigured -> the noisy double-attempt error above.
|
|
15
14
|
* - setting ZERO_LITESTREAM_BACKUP_URL to satisfy the restore -> switches the
|
|
16
15
|
* replicator into "serving-copy" mode (VACUUM INTO a copy on every start)
|
|
17
16
|
* and spawns a backup worker + litestream `replicate` subprocess. wrong for
|
|
18
17
|
* an ephemeral dev backend.
|
|
19
18
|
*
|
|
20
|
-
* so we patch the compiled `restoreReplica`
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
19
|
+
* so we patch the compiled `restoreReplica` for the no-backup case. the guard
|
|
20
|
+
* must preserve upstream's LOCK-RELEASE semantics, not just silence the error:
|
|
21
|
+
* the change-streamer acquires a changeLog purge lock before restoring — an
|
|
22
|
+
* open `SELECT ... FOR SHARE` transaction, which holds a real xid — and its
|
|
23
|
+
* caller only releases that lock when restoreReplica THROWS. a plain
|
|
24
|
+
* `return` here (the original v1 guard) kept the lock held into
|
|
25
|
+
* `initializePostgresChangeSource`; whenever the local replica was missing
|
|
26
|
+
* (unclean shutdown, cache-only reset), initial sync then ran with the lock
|
|
27
|
+
* still open and `CREATE_REPLICATION_SLOT` waited on our own transaction's
|
|
28
|
+
* xid — a deterministic self-deadlock, crash-looping the change-streamer on
|
|
29
|
+
* `ensureSchemaMigrated`/55P03 lock timeouts until the change db was dropped.
|
|
30
|
+
*
|
|
31
|
+
* throwing `BackupNotFoundException` mirrors what unpatched zero does when
|
|
32
|
+
* litestream config is absent (its `must(backupURL)` throws and the caller
|
|
33
|
+
* releases the lock, logs at warn, and proceeds): a valid local replica is
|
|
34
|
+
* resumed exactly as before, an invalid/missing one initial-syncs lock-free.
|
|
35
|
+
* the purge lock only exists to fence multi-node purge races during a real
|
|
36
|
+
* backup restore; single-node orez has neither.
|
|
27
37
|
*
|
|
28
38
|
* this mirrors orez's existing in-place patching of @rocicorp/zero-sqlite3
|
|
29
39
|
* (see sqlite-mode/apply-mode.ts). it is idempotent and only touches orez's
|
|
@@ -33,7 +43,7 @@
|
|
|
33
43
|
/**
|
|
34
44
|
* apply the restore-guard to a specific compiled litestream commands.js —
|
|
35
45
|
* shared by the in-place node path and the CF overlay (cf-patches.ts).
|
|
36
|
-
* idempotent.
|
|
46
|
+
* idempotent; upgrades a v1 guard in place.
|
|
37
47
|
*/
|
|
38
48
|
export declare function applyLitestreamRestoreGuard(commandsPath: string): void;
|
|
39
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero-litestream-patch.d.ts","sourceRoot":"","sources":["../src/zero-litestream-patch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"zero-litestream-patch.d.ts","sourceRoot":"","sources":["../src/zero-litestream-patch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAmDH;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA8BtE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAInD"}
|
|
@@ -1,29 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* neutralize zero-cache's litestream replica restore for orez.
|
|
3
3
|
*
|
|
4
|
-
* zero
|
|
5
|
-
* `restoreReplica()` on startup whenever the change-log already has rows
|
|
6
|
-
*
|
|
7
|
-
* backup
|
|
8
|
-
*
|
|
9
|
-
* "Missing
|
|
10
|
-
*
|
|
11
|
-
* re-syncing the entire replica from scratch.
|
|
4
|
+
* zero's dedicated change-streamer worker unconditionally calls
|
|
5
|
+
* `restoreReplica()` on startup whenever the change-log already has rows.
|
|
6
|
+
* it assumes a litestream backup exists to restore the SQLite replica from.
|
|
7
|
+
* orez has no litestream backup — it owns the replica on disk directly — so
|
|
8
|
+
* without a guard the restore throws "Missing --litestream-executable" (or
|
|
9
|
+
* "Missing required value" for the backup URL) after a retry, which zero
|
|
10
|
+
* logs at error level on every warm restart.
|
|
12
11
|
*
|
|
13
12
|
* the correct config gate doesn't exist for the dedicated change-streamer:
|
|
14
|
-
* - leaving litestream unconfigured -> the error above
|
|
13
|
+
* - leaving litestream unconfigured -> the noisy double-attempt error above.
|
|
15
14
|
* - setting ZERO_LITESTREAM_BACKUP_URL to satisfy the restore -> switches the
|
|
16
15
|
* replicator into "serving-copy" mode (VACUUM INTO a copy on every start)
|
|
17
16
|
* and spawns a backup worker + litestream `replicate` subprocess. wrong for
|
|
18
17
|
* an ephemeral dev backend.
|
|
19
18
|
*
|
|
20
|
-
* so we patch the compiled `restoreReplica`
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
19
|
+
* so we patch the compiled `restoreReplica` for the no-backup case. the guard
|
|
20
|
+
* must preserve upstream's LOCK-RELEASE semantics, not just silence the error:
|
|
21
|
+
* the change-streamer acquires a changeLog purge lock before restoring — an
|
|
22
|
+
* open `SELECT ... FOR SHARE` transaction, which holds a real xid — and its
|
|
23
|
+
* caller only releases that lock when restoreReplica THROWS. a plain
|
|
24
|
+
* `return` here (the original v1 guard) kept the lock held into
|
|
25
|
+
* `initializePostgresChangeSource`; whenever the local replica was missing
|
|
26
|
+
* (unclean shutdown, cache-only reset), initial sync then ran with the lock
|
|
27
|
+
* still open and `CREATE_REPLICATION_SLOT` waited on our own transaction's
|
|
28
|
+
* xid — a deterministic self-deadlock, crash-looping the change-streamer on
|
|
29
|
+
* `ensureSchemaMigrated`/55P03 lock timeouts until the change db was dropped.
|
|
30
|
+
*
|
|
31
|
+
* throwing `BackupNotFoundException` mirrors what unpatched zero does when
|
|
32
|
+
* litestream config is absent (its `must(backupURL)` throws and the caller
|
|
33
|
+
* releases the lock, logs at warn, and proceeds): a valid local replica is
|
|
34
|
+
* resumed exactly as before, an invalid/missing one initial-syncs lock-free.
|
|
35
|
+
* the purge lock only exists to fence multi-node purge races during a real
|
|
36
|
+
* backup restore; single-node orez has neither.
|
|
27
37
|
*
|
|
28
38
|
* this mirrors orez's existing in-place patching of @rocicorp/zero-sqlite3
|
|
29
39
|
* (see sqlite-mode/apply-mode.ts). it is idempotent and only touches orez's
|
|
@@ -33,11 +43,21 @@
|
|
|
33
43
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
34
44
|
import { dirname, resolve } from 'node:path';
|
|
35
45
|
import { resolvePackage } from './sqlite-mode/package-resolve.js';
|
|
36
|
-
const OREZ_MARKER = '/* orez: litestream restore disabled (no backup configured) */';
|
|
37
|
-
// the
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
const
|
|
46
|
+
const OREZ_MARKER = '/* orez: litestream restore disabled (no backup configured) — v2 */';
|
|
47
|
+
// the previous guard generation: silenced the error but swallowed the throw
|
|
48
|
+
// the caller relies on to release the changeLog purge lock (see header).
|
|
49
|
+
// stripped on sight so upgrades replace it instead of stacking guards.
|
|
50
|
+
const OREZ_MARKER_V1 = '/* orez: litestream restore disabled (no backup configured) */';
|
|
51
|
+
const GUARD_V1 = `${OREZ_MARKER_V1}\n\tif (!config.litestream?.backupURL) return;`;
|
|
52
|
+
// the guard injected at the top of restoreReplica's body. when no backup URL
|
|
53
|
+
// is configured there is nothing to restore; surfacing not-found makes the
|
|
54
|
+
// caller release the purge lock before any initial sync (the deadlock fix),
|
|
55
|
+
// while callers without a lock (replicaConstraints == null) just proceed.
|
|
56
|
+
const GUARD = `${OREZ_MARKER}
|
|
57
|
+
if (!config.litestream?.backupURL) {
|
|
58
|
+
if (replicaConstraints) throw new BackupNotFoundException("(litestream disabled)");
|
|
59
|
+
return;
|
|
60
|
+
}`;
|
|
41
61
|
/** locate the compiled litestream commands.js inside the resolved @rocicorp/zero */
|
|
42
62
|
function findLitestreamCommands() {
|
|
43
63
|
const zeroEntry = resolvePackage('@rocicorp/zero');
|
|
@@ -58,12 +78,24 @@ function findLitestreamCommands() {
|
|
|
58
78
|
/**
|
|
59
79
|
* apply the restore-guard to a specific compiled litestream commands.js —
|
|
60
80
|
* shared by the in-place node path and the CF overlay (cf-patches.ts).
|
|
61
|
-
* idempotent.
|
|
81
|
+
* idempotent; upgrades a v1 guard in place.
|
|
62
82
|
*/
|
|
63
83
|
export function applyLitestreamRestoreGuard(commandsPath) {
|
|
64
|
-
|
|
65
|
-
|
|
84
|
+
let content = readFileSync(commandsPath, 'utf-8');
|
|
85
|
+
// strip the v1 guard BEFORE the already-patched check: a v1-era orez run
|
|
86
|
+
// against an already-v2-patched file re-injects v1 above the v2 guard
|
|
87
|
+
// (its marker check doesn't recognize v2), and v1's early `return` then
|
|
88
|
+
// shadows the fix. checking the v2 marker first would return early here
|
|
89
|
+
// and leave that stacked v1 in place. observed live on 2026-07-07.
|
|
90
|
+
const hadV1 = content.includes(GUARD_V1);
|
|
91
|
+
if (hadV1) {
|
|
92
|
+
content = content.replace(`\n\t${GUARD_V1}`, '');
|
|
93
|
+
}
|
|
94
|
+
if (content.includes(OREZ_MARKER)) {
|
|
95
|
+
if (hadV1)
|
|
96
|
+
writeFileSync(commandsPath, content);
|
|
66
97
|
return; // already patched
|
|
98
|
+
}
|
|
67
99
|
const anchor = 'async function restoreReplica(lc, config, replicaConstraints) {';
|
|
68
100
|
if (!content.includes(anchor)) {
|
|
69
101
|
// upstream shape changed — fail loudly rather than silently leaving the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero-litestream-patch.js","sourceRoot":"","sources":["../src/zero-litestream-patch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"zero-litestream-patch.js","sourceRoot":"","sources":["../src/zero-litestream-patch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,MAAM,WAAW,GAAG,qEAAqE,CAAA;AAEzF,4EAA4E;AAC5E,yEAAyE;AACzE,uEAAuE;AACvE,MAAM,cAAc,GAAG,gEAAgE,CAAA;AACvF,MAAM,QAAQ,GAAG,GAAG,cAAc,gDAAgD,CAAA;AAElF,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,0EAA0E;AAC1E,MAAM,KAAK,GAAG,GAAG,WAAW;;;;GAIzB,CAAA;AAEH,oFAAoF;AACpF,SAAS,sBAAsB;IAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAE3B,8EAA8E;IAC9E,sEAAsE;IACtE,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5B,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAK;QACzB,GAAG,GAAG,MAAM,CAAA;IACd,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EACH,KAAK,EACL,YAAY,EACZ,KAAK,EACL,UAAU,EACV,YAAY,EACZ,aAAa,CACd,CAAA;IACD,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAA;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,YAAoB;IAC9D,IAAI,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAEjD,yEAAyE;IACzE,sEAAsE;IACtE,wEAAwE;IACxE,wEAAwE;IACxE,mEAAmE;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,IAAI,KAAK;YAAE,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC/C,OAAM,CAAC,kBAAkB;IAC3B,CAAC;IAED,MAAM,MAAM,GAAG,iEAAiE,CAAA;IAChF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,IAAI,KAAK,CACb,+FAA+F,YAAY,IAAI;YAC7G,mEAAmE,CACtE,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,OAAO,KAAK,EAAE,CAAC,CAAA;IAChE,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAA;IAC7C,IAAI,CAAC,YAAY;QAAE,OAAM;IACzB,2BAA2B,CAAC,YAAY,CAAC,CAAA;AAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orez",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.41",
|
|
4
4
|
"description": "PGlite-powered zero-sync development backend. No Docker required.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"@electric-sql/pglite": "0.4.1",
|
|
88
88
|
"@electric-sql/pglite-tools": "^0.3.1",
|
|
89
89
|
"@pgsql/traverse": "17.2.6",
|
|
90
|
-
"bedrock-sqlite": "0.4.
|
|
90
|
+
"bedrock-sqlite": "0.4.41",
|
|
91
91
|
"citty": "^0.2.0",
|
|
92
92
|
"pg-gateway": "0.3.0-beta.4",
|
|
93
93
|
"pgsql-parser": "^17.9.11",
|