@rocicorp/zero 0.13.2025013101 → 0.13.2025020201

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.
Files changed (59) hide show
  1. package/out/chunk-5JO5DB4D.js +50 -0
  2. package/out/chunk-5JO5DB4D.js.map +7 -0
  3. package/out/{chunk-2N4KMTU6.js → chunk-YADIOYHB.js} +141 -60
  4. package/out/chunk-YADIOYHB.js.map +7 -0
  5. package/out/react.js +4 -45
  6. package/out/react.js.map +3 -3
  7. package/out/replicache/src/persist/client-gc.d.ts +2 -1
  8. package/out/replicache/src/persist/client-gc.d.ts.map +1 -1
  9. package/out/replicache/src/persist/clients.d.ts +4 -0
  10. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  11. package/out/replicache/src/persist/collect-idb-databases.d.ts +3 -11
  12. package/out/replicache/src/persist/collect-idb-databases.d.ts.map +1 -1
  13. package/out/replicache/src/replicache-impl.d.ts +5 -0
  14. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  15. package/out/shared/src/btree-set.d.ts +1 -0
  16. package/out/shared/src/btree-set.d.ts.map +1 -1
  17. package/out/shared/src/btree-set.js +7 -0
  18. package/out/shared/src/btree-set.js.map +1 -1
  19. package/out/shared/src/resolved-promises.d.ts +2 -2
  20. package/out/shared/src/resolved-promises.d.ts.map +1 -1
  21. package/out/shared/src/resolved-promises.js.map +1 -1
  22. package/out/solid.js +37 -34
  23. package/out/solid.js.map +2 -2
  24. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  25. package/out/zero-cache/src/server/change-streamer.js +11 -11
  26. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  27. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  28. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  29. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +12 -14
  30. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  31. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +1 -0
  32. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  33. package/out/zero-cache/src/services/change-streamer/schema/init.js +28 -3
  34. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  35. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +9 -0
  36. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  37. package/out/zero-cache/src/services/change-streamer/schema/tables.js +29 -14
  38. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  39. package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -2
  40. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  41. package/out/zero-cache/src/services/change-streamer/storer.js +50 -8
  42. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  43. package/out/zero-client/src/client/crud.d.ts +5 -1
  44. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  45. package/out/zero-client/src/client/custom.d.ts +19 -9
  46. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  47. package/out/zero-client/src/client/options.d.ts +3 -3
  48. package/out/zero-client/src/client/options.d.ts.map +1 -1
  49. package/out/zero-client/src/client/zero.d.ts +4 -3
  50. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  51. package/out/zero-protocol/src/ast.d.ts +5 -4
  52. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  53. package/out/zero-protocol/src/ast.js.map +1 -1
  54. package/out/zero-react/src/use-zero.d.ts +1 -1
  55. package/out/zero-react/src/use-zero.d.ts.map +1 -1
  56. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  57. package/out/zero.js +1 -1
  58. package/package.json +1 -1
  59. package/out/chunk-2N4KMTU6.js.map +0 -7
@@ -14,35 +14,35 @@ import { parentWorker, singleProcessMode, } from "../types/processes.js";
14
14
  import { createLogContext } from "./logging.js";
15
15
  export default async function runWorker(parent, env) {
16
16
  const config = getZeroConfig(env);
17
- const port = config.changeStreamerPort ?? config.port + 1;
17
+ const { taskID, changeStreamerPort: port = config.port + 1, upstream, change, shard, replicaFile, initialSync, } = config;
18
18
  const lc = createLogContext(config, { worker: 'change-streamer' });
19
19
  // Kick off DB connection warmup in the background.
20
- const changeDB = pgClient(lc, config.change.db, {
21
- max: config.change.maxConns,
20
+ const changeDB = pgClient(lc, change.db, {
21
+ max: change.maxConns,
22
22
  connection: { ['application_name']: 'zero-change-streamer' },
23
23
  });
24
- void Promise.allSettled(Array.from({ length: config.change.maxConns }, () => changeDB `SELECT 1`.simple().execute()));
24
+ void Promise.allSettled(Array.from({ length: change.maxConns }, () => changeDB `SELECT 1`.simple().execute()));
25
25
  const { autoReset } = config;
26
26
  let changeStreamer;
27
27
  for (const first of [true, false]) {
28
28
  try {
29
29
  // Note: This performs initial sync of the replica if necessary.
30
- const { changeSource, replicationConfig } = config.upstream.type === 'pg'
31
- ? await initializePostgresChangeSource(lc, config.upstream.db, config.shard, config.replicaFile, config.initialSync)
32
- : await initializeCustomChangeSource(lc, config.upstream.db, config.shard, config.replicaFile);
33
- changeStreamer = await initializeStreamer(lc, changeDB, changeSource, replicationConfig, autoReset ?? false);
30
+ const { changeSource, replicationConfig } = upstream.type === 'pg'
31
+ ? await initializePostgresChangeSource(lc, upstream.db, shard, replicaFile, initialSync)
32
+ : await initializeCustomChangeSource(lc, upstream.db, shard, replicaFile);
33
+ changeStreamer = await initializeStreamer(lc, must(taskID, `main must set --task-id`), changeDB, changeSource, replicationConfig, autoReset ?? false);
34
34
  break;
35
35
  }
36
36
  catch (e) {
37
37
  if (first && e instanceof AutoResetSignal) {
38
- lc.warn?.(`resetting replica ${config.replicaFile}`, e);
38
+ lc.warn?.(`resetting replica ${replicaFile}`, e);
39
39
  // TODO: Make deleteLiteDB work with litestream. It will probably have to be
40
40
  // a semantic wipe instead of a file delete.
41
- deleteLiteDB(config.replicaFile);
41
+ deleteLiteDB(replicaFile);
42
42
  continue; // execute again with a fresh initial-sync
43
43
  }
44
44
  if (e instanceof DatabaseInitError) {
45
- throw new Error(`Cannot open ZERO_REPLICA_FILE at "${config.replicaFile}". Please check that the path is valid.`, { cause: e });
45
+ throw new Error(`Cannot open ZERO_REPLICA_FILE at "${replicaFile}". Please check that the path is valid.`, { cause: e });
46
46
  }
47
47
  throw e;
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"change-streamer.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-streamer.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { type ReplicationConfig } from './schema/tables.ts';
8
8
  /**
9
9
  * Performs initialization and schema migrations to initialize a ChangeStreamerImpl.
10
10
  */
11
- export declare function initializeStreamer(lc: LogContext, changeDB: PostgresDB, changeSource: ChangeSource, replicationConfig: ReplicationConfig, autoReset: boolean, setTimeoutFn?: typeof setTimeout): Promise<ChangeStreamerService>;
11
+ export declare function initializeStreamer(lc: LogContext, taskID: string, changeDB: PostgresDB, changeSource: ChangeSource, replicationConfig: ReplicationConfig, autoReset: boolean, setTimeoutFn?: typeof setTimeout): Promise<ChangeStreamerService>;
12
12
  /**
13
13
  * Internally all Downstream messages (not just commits) are given a watermark.
14
14
  * These are used for internal ordering for:
@@ -1 +1 @@
1
- {"version":3,"file":"change-streamer-service.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,+CAA+C,CAAC;AAMxF,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAI5B;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,OAAO,EAClB,YAAY,oBAAa,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAchC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAErC;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;CAClC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5D"}
1
+ {"version":3,"file":"change-streamer-service.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,+CAA+C,CAAC;AAMxF,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAI5B;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,OAAO,EAClB,YAAY,oBAAa,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAehC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAErC;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;CAClC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5D"}
@@ -16,12 +16,12 @@ import { Subscriber } from "./subscriber.js";
16
16
  /**
17
17
  * Performs initialization and schema migrations to initialize a ChangeStreamerImpl.
18
18
  */
19
- export async function initializeStreamer(lc, changeDB, changeSource, replicationConfig, autoReset, setTimeoutFn = setTimeout) {
19
+ export async function initializeStreamer(lc, taskID, changeDB, changeSource, replicationConfig, autoReset, setTimeoutFn = setTimeout) {
20
20
  // Make sure the ChangeLog DB is set up.
21
21
  await initChangeStreamerSchema(lc, changeDB);
22
22
  await ensureReplicationConfig(lc, changeDB, replicationConfig, autoReset);
23
23
  const { replicaVersion } = replicationConfig;
24
- return new ChangeStreamerImpl(lc, changeDB, replicaVersion, changeSource, autoReset, setTimeoutFn);
24
+ return new ChangeStreamerImpl(lc, taskID, changeDB, replicaVersion, changeSource, autoReset, setTimeoutFn);
25
25
  }
26
26
  /**
27
27
  * The maximum time to wait for a serving request before taking
@@ -187,13 +187,13 @@ class ChangeStreamerImpl {
187
187
  // load-balancing / routing logic has begun routing requests to this task.
188
188
  #serving = resolver();
189
189
  #stream;
190
- constructor(lc, changeDB, replicaVersion, source, autoReset, setTimeoutFn = setTimeout) {
190
+ constructor(lc, taskID, changeDB, replicaVersion, source, autoReset, setTimeoutFn = setTimeout) {
191
191
  this.id = `change-streamer`;
192
192
  this.#lc = lc.withContext('component', 'change-streamer');
193
193
  this.#changeDB = changeDB;
194
194
  this.#replicaVersion = replicaVersion;
195
195
  this.#source = source;
196
- this.#storer = new Storer(lc, changeDB, replicaVersion, consumed => this.#stream?.acks.push(['status', consumed[1], consumed[2]]));
196
+ this.#storer = new Storer(lc, taskID, changeDB, replicaVersion, consumed => this.#stream?.acks.push(['status', consumed[1], consumed[2]]));
197
197
  this.#forwarder = new Forwarder();
198
198
  this.#autoReset = autoReset;
199
199
  this.#state = new RunningState(this.id, undefined, setTimeoutFn);
@@ -205,22 +205,20 @@ class ChangeStreamerImpl {
205
205
  this.#lc.info?.('timed out waiting for first request');
206
206
  }
207
207
  this.#lc.info?.('starting change stream');
208
- let storerRunning = false;
208
+ // Once this change-streamer acquires "ownership" of the change DB,
209
+ // it is safe to start the storer.
210
+ await this.#storer.assumeOwnership();
211
+ // The storer will, in turn, detect changes to ownership and stop
212
+ // the change-streamer appropriately.
213
+ this.#storer.run().catch(e => this.stop(e));
209
214
  while (this.#state.shouldRun()) {
210
215
  let err;
211
216
  try {
212
- const startAfter = await this.#storer.getLastStoredWatermark();
213
- const stream = await this.#source.startStream(startAfter ?? this.#replicaVersion);
217
+ const startAfter = await this.#storer.getLastWatermark();
218
+ const stream = await this.#source.startStream(startAfter);
214
219
  this.#stream = stream;
215
220
  this.#state.resetBackoff();
216
221
  let watermark = null;
217
- // Once this change-streamer "owns" the replication stream,
218
- // it is safe to start the storer, given the guarantee that this
219
- // process is the single writer to the change DB.
220
- if (!storerRunning) {
221
- this.#storer.run().catch(e => this.stop(e));
222
- storerRunning = true;
223
- }
224
222
  for await (const change of stream.changes) {
225
223
  const [type, msg] = change;
226
224
  switch (type) {
@@ -1 +1 @@
1
- {"version":3,"file":"change-streamer-service.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-streamer-service.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { LogContext } from '@rocicorp/logger';
2
2
  import type { PostgresDB } from '../../../types/pg.ts';
3
3
  export declare function initChangeStreamerSchema(log: LogContext, db: PostgresDB): Promise<void>;
4
+ export declare function getLastWatermarkV2(db: PostgresDB): Promise<string>;
4
5
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAMjD,OAAO,KAAK,EAAC,UAAU,EAAsB,MAAM,sBAAsB,CAAC;AAY1E,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,GACb,OAAO,CAAC,IAAI,CAAC,CASf"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAMjD,OAAO,KAAK,EAAC,UAAU,EAAsB,MAAM,sBAAsB,CAAC;AAmC1E,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,GACb,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAYxE"}
@@ -1,16 +1,41 @@
1
1
  import { runSchemaMigrations, } from "../../../db/migration.js";
2
- import { PG_SCHEMA, setupCDCTables } from "./tables.js";
2
+ import { CREATE_REPLICATION_STATE_TABLE, PG_SCHEMA, setupCDCTables, } from "./tables.js";
3
3
  const setupMigration = {
4
4
  migrateSchema: setupCDCTables,
5
5
  minSafeVersion: 1,
6
6
  };
7
+ async function migrateV1toV2(_, db) {
8
+ await db `ALTER TABLE cdc."replicationConfig" ADD "resetRequired" BOOL`;
9
+ }
10
+ const migrateV2ToV3 = {
11
+ migrateSchema: async (_, db) => {
12
+ await db.unsafe(CREATE_REPLICATION_STATE_TABLE);
13
+ },
14
+ migrateData: async (_, db) => {
15
+ const lastWatermark = await getLastWatermarkV2(db);
16
+ const replicationState = { lastWatermark };
17
+ await db `TRUNCATE TABLE cdc."replicationState"`;
18
+ await db `INSERT INTO cdc."replicationState" ${db(replicationState)}`;
19
+ },
20
+ };
7
21
  const schemaVersionMigrationMap = {
8
22
  2: { migrateSchema: migrateV1toV2 },
23
+ 3: migrateV2ToV3,
9
24
  };
10
25
  export async function initChangeStreamerSchema(log, db) {
11
26
  await runSchemaMigrations(log, 'change-streamer', PG_SCHEMA, db, setupMigration, schemaVersionMigrationMap);
12
27
  }
13
- async function migrateV1toV2(_, db) {
14
- await db `ALTER TABLE cdc."replicationConfig" ADD "resetRequired" BOOL`;
28
+ export async function getLastWatermarkV2(db) {
29
+ const [{ max }] = await db `
30
+ SELECT MAX(watermark) as max FROM cdc."changeLog"`;
31
+ if (max !== null) {
32
+ return max;
33
+ }
34
+ // The changeLog is only empty if nothing has been synced since initial-sync.
35
+ // In this case, the last watermark is the replicaVersion.
36
+ const [{ replicaVersion }] = await db `
37
+ SELECT "replicaVersion" FROM cdc."replicationConfig"
38
+ `;
39
+ return replicaVersion;
15
40
  }
16
41
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/init.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAEtD,MAAM,cAAc,GAAc;IAChC,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,yBAAyB,GAA4B;IACzD,CAAC,EAAE,EAAC,aAAa,EAAE,aAAa,EAAC;CAClC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAe,EACf,EAAc;IAEd,MAAM,mBAAmB,CACvB,GAAG,EACH,iBAAiB,EACjB,SAAS,EACT,EAAE,EACF,cAAc,EACd,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,CAAa,EAAE,EAAuB;IACjE,MAAM,EAAE,CAAA,8DAA8D,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/init.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,8BAA8B,EAC9B,SAAS,EACT,cAAc,GAEf,MAAM,aAAa,CAAC;AAErB,MAAM,cAAc,GAAc;IAChC,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF,KAAK,UAAU,aAAa,CAAC,CAAa,EAAE,EAAuB;IACjE,MAAM,EAAE,CAAA,8DAA8D,CAAC;AACzE,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,aAAa,EAAE,KAAK,EAAE,CAAa,EAAE,EAAuB,EAAE,EAAE;QAC9D,MAAM,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,EAAE,KAAK,EAAE,CAAa,EAAE,EAAuB,EAAE,EAAE;QAC5D,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAA8B,EAAC,aAAa,EAAC,CAAC;QACpE,MAAM,EAAE,CAAA,uCAAuC,CAAC;QAChD,MAAM,EAAE,CAAA,sCAAsC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACvE,CAAC;CACF,CAAC;AAEF,MAAM,yBAAyB,GAA4B;IACzD,CAAC,EAAE,EAAC,aAAa,EAAE,aAAa,EAAC;IACjC,CAAC,EAAE,aAAa;CACjB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAe,EACf,EAAc;IAEd,MAAM,mBAAmB,CACvB,GAAG,EACH,iBAAiB,EACjB,SAAS,EACT,EAAE,EACF,cAAc,EACd,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAc;IACrD,MAAM,CAAC,EAAC,GAAG,EAAC,CAAC,GAAG,MAAM,EAAE,CAAwB;sDACI,CAAC;IACrD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,6EAA6E;IAC7E,0DAA0D;IAC1D,MAAM,CAAC,EAAC,cAAc,EAAC,CAAC,GAAG,MAAM,EAAE,CAA4B;;KAE5D,CAAC;IACJ,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -8,6 +8,15 @@ export type ChangeLogEntry = {
8
8
  watermark: string;
9
9
  change: Change;
10
10
  };
11
+ /**
12
+ * Tracks the watermark from which to resume the change stream and the
13
+ * current owner (task ID) acting as the single writer to the changeLog.
14
+ */
15
+ export type ReplicationState = {
16
+ lastWatermark: string;
17
+ owner: string | null;
18
+ };
19
+ export declare const CREATE_REPLICATION_STATE_TABLE = "\n CREATE TABLE cdc.\"replicationState\" (\n \"lastWatermark\" TEXT NOT NULL,\n \"owner\" TEXT,\n \"lock\" INTEGER PRIMARY KEY DEFAULT 1 CHECK (lock=1)\n );\n";
11
20
  /**
12
21
  * This mirrors the analogously named table in the SQLite replica
13
22
  * (`services/replicator/schema/replication-state.ts`), and is used
@@ -1 +1 @@
1
- {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,0CAA0C,CAAC;AAEpE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,8CAA8C,CAAC;AAEzE,eAAO,MAAM,SAAS,QAAQ,CAAC;AAI/B,MAAM,MAAM,cAAc,GAAG;IAG3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,CAAC;AAcF,wBAAsB,cAAc,CAClC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,QAAQ,CAAC,cAAc,iBAI5B;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,UAAU,iBAErD;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,OAAO,iBA4CnB;AAED,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,IAAI,qBAAqB;CACnC"}
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,QAAuC,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAC,UAAU,EAAC,MAAM,0CAA0C,CAAC;AAEpE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,8CAA8C,CAAC;AAEzE,eAAO,MAAM,SAAS,QAAQ,CAAC;AAI/B,MAAM,MAAM,cAAc,GAAG;IAG3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAYF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,8BAA8B,8KAM1C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,CAAC;AAiBF,wBAAsB,cAAc,CAClC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,QAAQ,CAAC,cAAc,iBAI5B;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,UAAU,iBAErD;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,OAAO,iBAuDnB;AAED,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,IAAI,qBAAqB;CACnC"}
@@ -1,5 +1,5 @@
1
1
  import { LogContext } from '@rocicorp/logger';
2
- import postgres from 'postgres';
2
+ import postgres, {} from 'postgres';
3
3
  import { AbortError } from "../../../../../shared/src/abort-error.js";
4
4
  import { equals } from "../../../../../shared/src/set-utils.js";
5
5
  export const PG_SCHEMA = 'cdc';
@@ -13,6 +13,13 @@ const CREATE_CHANGE_LOG_TABLE = `
13
13
  PRIMARY KEY (watermark, pos)
14
14
  );
15
15
  `;
16
+ export const CREATE_REPLICATION_STATE_TABLE = `
17
+ CREATE TABLE cdc."replicationState" (
18
+ "lastWatermark" TEXT NOT NULL,
19
+ "owner" TEXT,
20
+ "lock" INTEGER PRIMARY KEY DEFAULT 1 CHECK (lock=1)
21
+ );
22
+ `;
16
23
  const CREATE_REPLICATION_CONFIG_TABLE = `
17
24
  CREATE TABLE cdc."replicationConfig" (
18
25
  "replicaVersion" TEXT NOT NULL,
@@ -21,7 +28,10 @@ const CREATE_REPLICATION_CONFIG_TABLE = `
21
28
  "lock" INTEGER PRIMARY KEY DEFAULT 1 CHECK (lock=1)
22
29
  );
23
30
  `;
24
- const CREATE_CDC_TABLES = CREATE_CDC_SCHEMA + CREATE_CHANGE_LOG_TABLE + CREATE_REPLICATION_CONFIG_TABLE;
31
+ const CREATE_CDC_TABLES = CREATE_CDC_SCHEMA +
32
+ CREATE_CHANGE_LOG_TABLE +
33
+ CREATE_REPLICATION_STATE_TABLE +
34
+ CREATE_REPLICATION_CONFIG_TABLE;
25
35
  export async function setupCDCTables(lc, db) {
26
36
  lc.info?.(`Setting up CDC tables`);
27
37
  await db.unsafe(CREATE_CDC_TABLES);
@@ -33,22 +43,27 @@ export async function ensureReplicationConfig(lc, db, config, autoReset) {
33
43
  // Restrict the fields of the supplied `config`.
34
44
  const { publications, replicaVersion } = config;
35
45
  const replicaConfig = { publications, replicaVersion };
46
+ const replicationState = {
47
+ lastWatermark: replicaVersion,
48
+ };
36
49
  await db.begin(async (tx) => {
50
+ const stmts = [];
37
51
  const results = await tx `SELECT "replicaVersion", "publications", "resetRequired" FROM cdc."replicationConfig"`;
38
- if (results.length === 0) {
39
- return tx `INSERT INTO cdc."replicationConfig" ${tx(replicaConfig)}`;
52
+ if (results.length) {
53
+ const { replicaVersion, publications } = results[0];
54
+ if (replicaVersion !== replicaConfig.replicaVersion ||
55
+ !equals(new Set(publications), new Set(replicaConfig.publications))) {
56
+ lc.info?.(`Data in cdc tables @${replicaVersion} is incompatible ` +
57
+ `with replica @${replicaConfig.replicaVersion}. Clearing tables.`);
58
+ stmts.push(tx `TRUNCATE TABLE cdc."changeLog"`, tx `TRUNCATE TABLE cdc."replicationConfig"`, tx `TRUNCATE TABLE cdc."replicationState"`);
59
+ }
40
60
  }
41
- const { replicaVersion, publications, resetRequired } = results[0];
42
- if (replicaVersion !== replicaConfig.replicaVersion ||
43
- !equals(new Set(publications), new Set(replicaConfig.publications))) {
44
- lc.info?.(`Data in cdc tables @${replicaVersion} is incompatible ` +
45
- `with replica @${replicaConfig.replicaVersion}. Clearing tables.`);
46
- return [
47
- tx `TRUNCATE TABLE cdc."changeLog"`,
48
- tx `TRUNCATE TABLE cdc."replicationConfig"`,
49
- tx `INSERT INTO cdc."replicationConfig" ${tx(replicaConfig)}`,
50
- ].map(stmt => stmt.execute());
61
+ // Initialize (or re-initialize TRUNCATED) tables
62
+ if (results.length === 0 || stmts.length > 0) {
63
+ stmts.push(tx `INSERT INTO cdc."replicationConfig" ${tx(replicaConfig)}`, tx `INSERT INTO cdc."replicationState" ${tx(replicationState)}`);
64
+ return Promise.all(stmts);
51
65
  }
66
+ const { resetRequired } = results[0];
52
67
  if (resetRequired) {
53
68
  if (autoReset) {
54
69
  throw new AutoResetSignal('reset required by replication stream');
@@ -1 +1 @@
1
- {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,0CAA0C,CAAC;AACpE,OAAO,EAAC,MAAM,EAAC,MAAM,wCAAwC,CAAC;AAI9D,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAE/B,MAAM,iBAAiB,GAAG,kCAAkC,CAAC;AAS7D,MAAM,uBAAuB,GAAG;;;;;;;;CAQ/B,CAAC;AAaF,MAAM,+BAA+B,GAAG;;;;;;;CAOvC,CAAC;AAEF,MAAM,iBAAiB,GACrB,iBAAiB,GAAG,uBAAuB,GAAG,+BAA+B,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAc,EACd,EAA2B;IAE3B,EAAE,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAc;IACpD,MAAM,EAAE,CAAA,2DAA2D,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,EAAc,EACd,EAAc,EACd,MAAyB,EACzB,SAAkB;IAElB,gDAAgD;IAChD,MAAM,EAAC,YAAY,EAAE,cAAc,EAAC,GAAG,MAAM,CAAC;IAC9C,MAAM,aAAa,GAAG,EAAC,YAAY,EAAE,cAAc,EAAC,CAAC;IAErD,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;QACxB,MAAM,OAAO,GAAG,MAAM,EAAE,CAMvB,uFAAuF,CAAC;QAEzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAA,uCAAuC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,EAAC,cAAc,EAAE,YAAY,EAAE,aAAa,EAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACjE,IACE,cAAc,KAAK,aAAa,CAAC,cAAc;YAC/C,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EACnE,CAAC;YACD,EAAE,CAAC,IAAI,EAAE,CACP,uBAAuB,cAAc,mBAAmB;gBACtD,iBAAiB,aAAa,CAAC,cAAc,oBAAoB,CACpE,CAAC;YACF,OAAO;gBACL,EAAE,CAAA,gCAAgC;gBAClC,EAAE,CAAA,wCAAwC;gBAC1C,EAAE,CAAA,uCAAuC,EAAE,CAAC,aAAa,CAAC,EAAE;aAC7D,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC;YACpE,CAAC;YACD,EAAE,CAAC,IAAI,EAAE,CAAC,2CAA2C,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IACpC,IAAI,GAAG,iBAAiB,CAAC;CACnC"}
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/tables.ts"],"names":[],"mappings":"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"}
@@ -39,8 +39,9 @@ export declare class Storer implements Service {
39
39
  #private;
40
40
  readonly id = "storer";
41
41
  readonly stopped: import("@rocicorp/resolver").Resolver<false, unknown>;
42
- constructor(lc: LogContext, db: PostgresDB, replicaVersion: string, onConsumed: (c: Commit | StatusMessage) => void);
43
- getLastStoredWatermark(): Promise<string | null>;
42
+ constructor(lc: LogContext, taskID: string, db: PostgresDB, replicaVersion: string, onConsumed: (c: Commit | StatusMessage) => void);
43
+ assumeOwnership(): Promise<void>;
44
+ getLastWatermark(): Promise<string>;
44
45
  purgeRecordsBefore(watermark: string): Promise<number>;
45
46
  store(entry: WatermarkedChange): void;
46
47
  status(s: StatusMessage): void;
@@ -1 +1 @@
1
- {"version":3,"file":"storer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,iDAAiD,CAAC;AAC5E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAa3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,YAAW,OAAO;;IACpC,QAAQ,CAAC,EAAE,YAAY;IAMvB,QAAQ,CAAC,OAAO,wDAAqB;gBAGnC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,IAAI;IAQ3C,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOhD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5D,KAAK,CAAC,KAAK,EAAE,iBAAiB;IAI9B,MAAM,CAAC,CAAC,EAAE,aAAa;IAIvB,OAAO,CAAC,GAAG,EAAE,UAAU;IAIjB,GAAG;IA0JT,IAAI;CAIL"}
1
+ {"version":3,"file":"storer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAU5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,iDAAiD,CAAC;AAC5E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAIpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAc3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,YAAW,OAAO;;IACpC,QAAQ,CAAC,EAAE,YAAY;IAOvB,QAAQ,CAAC,OAAO,wDAAqB;gBAGnC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,UAAU,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,IAAI;IAS3C,eAAe;IAMf,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMnC,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5D,KAAK,CAAC,KAAK,EAAE,iBAAiB;IAI9B,MAAM,CAAC,CAAC,EAAE,aAAa;IAIvB,OAAO,CAAC,GAAG,EAAE,UAAU;IAIjB,GAAG;IAgMT,IAAI;CAIL"}
@@ -1,5 +1,8 @@
1
+ import { PG_SERIALIZATION_FAILURE } from '@drdgvhbh/postgres-error-codes';
1
2
  import { LogContext } from '@rocicorp/logger';
2
3
  import { resolver } from '@rocicorp/resolver';
4
+ import postgres from 'postgres';
5
+ import { AbortError } from "../../../../shared/src/abort-error.js";
3
6
  import { assert } from "../../../../shared/src/asserts.js";
4
7
  import { Queue } from "../../../../shared/src/queue.js";
5
8
  import { promiseVoid } from "../../../../shared/src/resolved-promises.js";
@@ -42,20 +45,28 @@ import { Subscriber } from "./subscriber.js";
42
45
  export class Storer {
43
46
  id = 'storer';
44
47
  #lc;
48
+ #taskID;
45
49
  #db;
46
50
  #replicaVersion;
47
51
  #onConsumed;
48
52
  #queue = new Queue();
49
53
  stopped = resolver();
50
- constructor(lc, db, replicaVersion, onConsumed) {
54
+ constructor(lc, taskID, db, replicaVersion, onConsumed) {
51
55
  this.#lc = lc;
56
+ this.#taskID = taskID;
52
57
  this.#db = db;
53
58
  this.#replicaVersion = replicaVersion;
54
59
  this.#onConsumed = onConsumed;
55
60
  }
56
- async getLastStoredWatermark() {
57
- const result = await this.#db `SELECT MAX(watermark) as max FROM cdc."changeLog"`;
58
- return result[0].max;
61
+ async assumeOwnership() {
62
+ const db = this.#db;
63
+ const owner = this.#taskID;
64
+ await db `UPDATE cdc."replicationState" SET ${db({ owner })}`;
65
+ }
66
+ async getLastWatermark() {
67
+ const [{ lastWatermark }] = await this.#db `
68
+ SELECT "lastWatermark" FROM cdc."replicationState"`;
69
+ return lastWatermark;
59
70
  }
60
71
  async purgeRecordsBefore(watermark) {
61
72
  const result = await this.#db `
@@ -99,12 +110,20 @@ export class Storer {
99
110
  const [tag, change] = downstream;
100
111
  if (tag === 'begin') {
101
112
  assert(!tx, 'received BEGIN in the middle of a transaction');
113
+ const { promise, resolve, reject } = resolver();
102
114
  tx = {
103
115
  pool: new TransactionPool(this.#lc.withContext('watermark', watermark), Mode.SERIALIZABLE),
104
116
  preCommitWatermark: watermark,
105
117
  pos: 0,
118
+ startingReplicationState: promise,
106
119
  };
107
120
  tx.pool.run(this.#db);
121
+ // Pipeline a read of the current ReplicationState,
122
+ // which will be checked before committing.
123
+ tx.pool.process(tx => {
124
+ tx `SELECT * FROM cdc."replicationState"`.then(([result]) => resolve(result), reject);
125
+ return [];
126
+ });
108
127
  }
109
128
  else {
110
129
  assert(tx, `received ${tag} outside of transaction`);
@@ -118,8 +137,30 @@ export class Storer {
118
137
  };
119
138
  tx.pool.process(tx => [tx `INSERT INTO cdc."changeLog" ${tx(entry)}`]);
120
139
  if (tag === 'commit') {
121
- tx.pool.setDone();
122
- await tx.pool.done();
140
+ const { owner } = await tx.startingReplicationState;
141
+ if (owner !== this.#taskID) {
142
+ // Ownership change reflected in the replicationState read in 'begin'.
143
+ tx.pool.fail(new AbortError(`changeLog ownership has been assumed by ${owner}`));
144
+ }
145
+ else {
146
+ // Update the replication state.
147
+ const lastWatermark = watermark;
148
+ tx.pool.process(tx => [
149
+ tx `UPDATE cdc."replicationState" SET ${tx({ lastWatermark })}`,
150
+ ]);
151
+ tx.pool.setDone();
152
+ }
153
+ try {
154
+ await tx.pool.done();
155
+ }
156
+ catch (e) {
157
+ if (e instanceof postgres.PostgresError &&
158
+ e.code === PG_SERIALIZATION_FAILURE) {
159
+ // Ownership change happened after the replicationState was read in 'begin'.
160
+ throw new AbortError(`changeLog ownership has changed`, { cause: e });
161
+ }
162
+ throw e;
163
+ }
123
164
  tx = null;
124
165
  // ACK the LSN to the upstream Postgres.
125
166
  this.#onConsumed(downstream);
@@ -186,8 +227,9 @@ export class Storer {
186
227
  this.#lc.info?.(`caught up ${sub.id} with ${count} changes (${Date.now() - start} ms)`);
187
228
  }
188
229
  else {
189
- const lastStoredWatermark = await this.getLastStoredWatermark();
190
- this.#lc.warn?.(`subscriber at watermark ${sub.watermark} is ahead of latest watermark: ${lastStoredWatermark}`);
230
+ const [{ lastWatermark }] = await this.#db `
231
+ SELECT "lastWatermark" FROM cdc."replicationState"`;
232
+ this.#lc.warn?.(`subscriber at watermark ${sub.watermark} is ahead of latest watermark: ${lastWatermark}`);
191
233
  }
192
234
  // Flushes the backlog of messages buffered during catchup and
193
235
  // allows the subscription to forward subsequent messages immediately.
@@ -1 +1 @@
1
- {"version":3,"file":"storer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Expand } from '../../../shared/src/expand.ts';
2
2
  import type { MaybePromise } from '../../../shared/src/types.ts';
3
- import { CRUD_MUTATION_NAME, type CRUDMutationArg, type CRUDOp } from '../../../zero-protocol/src/push.ts';
3
+ import { CRUD_MUTATION_NAME, type CRUDMutationArg, type CRUDOp, type DeleteOp, type InsertOp, type UpdateOp, type UpsertOp } from '../../../zero-protocol/src/push.ts';
4
4
  import type { Schema } from '../../../zero-schema/src/builder/schema-builder.ts';
5
5
  import type { SchemaValueToTSType, TableSchema } from '../../../zero-schema/src/table-schema.ts';
6
6
  import type { MutatorDefs, WriteTransaction } from './replicache-types.ts';
@@ -78,5 +78,9 @@ export type WithCRUD<MD extends MutatorDefs> = MD & {
78
78
  export type CRUDMutate = (crudArg: CRUDMutationArg) => Promise<void>;
79
79
  export type CRUDMutator = (tx: WriteTransaction, crudArg: CRUDMutationArg) => Promise<void>;
80
80
  export declare function makeCRUDMutator(schema: Schema): CRUDMutator;
81
+ export declare function insertImpl(tx: WriteTransaction, arg: InsertOp, schema: Schema): Promise<void>;
82
+ export declare function upsertImpl(tx: WriteTransaction, arg: InsertOp | UpsertOp, schema: Schema): Promise<void>;
83
+ export declare function updateImpl(tx: WriteTransaction, arg: UpdateOp, schema: Schema): Promise<void>;
84
+ export declare function deleteImpl(tx: WriteTransaction, arg: DeleteOp, schema: Schema): Promise<void>;
81
85
  export {};
82
86
  //# sourceMappingURL=crud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/crud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/crud.ts"],"names":[],"mappings":"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"}