@quereus/sync 4.5.0 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +14 -6
  2. package/dist/src/index.d.ts +1 -1
  3. package/dist/src/index.d.ts.map +1 -1
  4. package/dist/src/index.js +1 -1
  5. package/dist/src/index.js.map +1 -1
  6. package/dist/src/metadata/column-version.d.ts.map +1 -1
  7. package/dist/src/metadata/column-version.js +8 -9
  8. package/dist/src/metadata/column-version.js.map +1 -1
  9. package/dist/src/metadata/keys.d.ts +99 -39
  10. package/dist/src/metadata/keys.d.ts.map +1 -1
  11. package/dist/src/metadata/keys.js +213 -158
  12. package/dist/src/metadata/keys.js.map +1 -1
  13. package/dist/src/metadata/pk-identity.d.ts +19 -14
  14. package/dist/src/metadata/pk-identity.d.ts.map +1 -1
  15. package/dist/src/metadata/pk-identity.js +21 -28
  16. package/dist/src/metadata/pk-identity.js.map +1 -1
  17. package/dist/src/metadata/schema-migration.d.ts +33 -10
  18. package/dist/src/metadata/schema-migration.d.ts.map +1 -1
  19. package/dist/src/metadata/schema-migration.js +77 -18
  20. package/dist/src/metadata/schema-migration.js.map +1 -1
  21. package/dist/src/sync/change-applicator.d.ts +19 -3
  22. package/dist/src/sync/change-applicator.d.ts.map +1 -1
  23. package/dist/src/sync/change-applicator.js +253 -63
  24. package/dist/src/sync/change-applicator.js.map +1 -1
  25. package/dist/src/sync/maintenance.d.ts +8 -5
  26. package/dist/src/sync/maintenance.d.ts.map +1 -1
  27. package/dist/src/sync/maintenance.js +7 -4
  28. package/dist/src/sync/maintenance.js.map +1 -1
  29. package/dist/src/sync/manager.d.ts +46 -1
  30. package/dist/src/sync/manager.d.ts.map +1 -1
  31. package/dist/src/sync/protocol.d.ts +42 -3
  32. package/dist/src/sync/protocol.d.ts.map +1 -1
  33. package/dist/src/sync/protocol.js +40 -0
  34. package/dist/src/sync/protocol.js.map +1 -1
  35. package/dist/src/sync/snapshot-identity.d.ts.map +1 -1
  36. package/dist/src/sync/snapshot-identity.js +1 -9
  37. package/dist/src/sync/snapshot-identity.js.map +1 -1
  38. package/dist/src/sync/snapshot-stream.d.ts +11 -0
  39. package/dist/src/sync/snapshot-stream.d.ts.map +1 -1
  40. package/dist/src/sync/snapshot-stream.js +134 -67
  41. package/dist/src/sync/snapshot-stream.js.map +1 -1
  42. package/dist/src/sync/snapshot.d.ts.map +1 -1
  43. package/dist/src/sync/snapshot.js +15 -30
  44. package/dist/src/sync/snapshot.js.map +1 -1
  45. package/dist/src/sync/store-adapter.d.ts +5 -4
  46. package/dist/src/sync/store-adapter.d.ts.map +1 -1
  47. package/dist/src/sync/store-adapter.js +328 -108
  48. package/dist/src/sync/store-adapter.js.map +1 -1
  49. package/dist/src/sync/sync-manager-impl.d.ts +37 -4
  50. package/dist/src/sync/sync-manager-impl.d.ts.map +1 -1
  51. package/dist/src/sync/sync-manager-impl.js +110 -56
  52. package/dist/src/sync/sync-manager-impl.js.map +1 -1
  53. package/dist/src/sync/wire.d.ts +6 -0
  54. package/dist/src/sync/wire.d.ts.map +1 -1
  55. package/dist/src/sync/wire.js +3 -0
  56. package/dist/src/sync/wire.js.map +1 -1
  57. package/package.json +7 -7
@@ -8,7 +8,8 @@
8
8
  */
9
9
  import { compareHLC, maxHLC, assertWithinDrift } from '../clock/hlc.js';
10
10
  import { siteIdEquals } from '../clock/site.js';
11
- import { encodePkIdentity, RAW_PK_KEYING } from '../metadata/keys.js';
11
+ import { encodePkIdentity, joinKeyParts, RAW_PK_KEYING } from '../metadata/keys.js';
12
+ import { migrationObjectKind, sortMigrationsByHLC, toSchemaChange } from './protocol.js';
12
13
  import { toError, deleteRowVersionsAndLogEntries } from './sync-context.js';
13
14
  import { admitGroup } from './admission.js';
14
15
  /** Stable `schema.table` map key for batch deltas and diversion groups. */
@@ -16,27 +17,100 @@ function tableKey(schema, table) {
16
17
  return `${schema}.${table}`;
17
18
  }
18
19
  /**
19
- * In-batch table delta from the batch's schema migrations: `create_table` adds a
20
- * table, `drop_table` removes one. Detection runs at Phase 1 (before any DDL
21
- * executes in Phase 2), so a referenced table is "known" if it is in the current
22
- * basis OR created by this batch, AND not dropped by this batch. Computed over the
23
- * WHOLE batch because admission applies all schema changes before all data.
20
+ * Per-table verdict on what this batch's schema migrations leave behind, keyed
21
+ * `schema.table`. Names no kept migration mentions are absent from the map; the read
22
+ * sites fall back to the current basis for those.
23
+ *
24
+ * The verdict is needed at Phase 1, before any DDL executes at Phase 2, so it is
25
+ * SIMULATED: seed each mentioned name with whether the receiver has it NOW
26
+ * (`isPresentLocally`), then replay the three existence-changing migration kinds in
27
+ * HLC order — `migrations` arrives already ordered by {@link orderMigrationsByHLC},
28
+ * the same order Phase 2 replays them in — applying the same decision each kind's
29
+ * {@link decideSchemaChange} arm will reach against the catalog.
30
+ *
31
+ * Both halves of that are load-bearing:
32
+ *
33
+ * - Seeding from local presence is what keeps this verdict and the catalog-based one
34
+ * in `decideRenameTable` from disagreeing. A `rename_table` moves the name only when
35
+ * the receiver still HAS the old one; a rename it declines (the old name was dropped
36
+ * here, or `fromTable` is missing) leaves the new name as absent as it really will
37
+ * be, so the batch's rows for that name take the normal unknown-table route instead
38
+ * of reaching a table that does not exist and throwing the whole batch away.
39
+ * - Replaying only the KEPT migrations (Phase 1a drops the HLC-dominated ones) is what
40
+ * makes the seed meaningful: a dominated migration means the receiver already
41
+ * processed that fact, so its effect — and anything it did LATER, like dropping the
42
+ * table again — is already in the seeded presence. Replaying it a second time would
43
+ * resurrect a state the receiver has since moved past.
44
+ *
45
+ * The simulation tracks WHICH table ends up at each name, not merely whether one does:
46
+ * {@link BatchTableFate.historyName} follows the table, the sync bookkeeping does not.
47
+ * That is what separates the two ways a name is vacated and refilled — a `drop_table`
48
+ * destroys its occupant, so anything arriving afterwards is a stranger to the
49
+ * bookkeeping left behind, while a rename-away followed by a rename BACK returns the
50
+ * very table the bookkeeping describes.
24
51
  */
25
- function computeBatchTableDelta(changes) {
26
- const created = new Set();
27
- const dropped = new Set();
28
- for (const changeSet of changes) {
29
- for (const migration of changeSet.schemaMigrations) {
30
- const key = tableKey(migration.schema, migration.table);
31
- if (migration.type === 'create_table') {
32
- created.add(key);
52
+ function computeBatchTableFates(migrations, isPresentLocally) {
53
+ const fates = new Map();
54
+ const fateOf = (schema, table) => {
55
+ const key = tableKey(schema, table);
56
+ let fate = fates.get(key);
57
+ if (!fate) {
58
+ // A table the receiver already holds has its bookkeeping under its own name.
59
+ //
60
+ // NOTE: the seed reads the `getTableSchema` basis oracle while Phase 2 decides
61
+ // the DDL against `db.schemaManager` directly. The shipped wiring makes them the
62
+ // same answer; a host whose oracle deliberately hides a table the catalog has
63
+ // would make this simulation predict a decline the store adapter then executes,
64
+ // and the batch's rows for that name would be held rather than applied (the
65
+ // drain recovers them on the next sweep). If a narrowing oracle ever ships,
66
+ // give the simulation a catalog-presence input of its own.
67
+ const present = isPresentLocally(schema, table);
68
+ fate = { present, historyName: present ? key : undefined };
69
+ fates.set(key, fate);
70
+ }
71
+ return fate;
72
+ };
73
+ for (const migration of migrations) {
74
+ switch (migration.type) {
75
+ case 'create_table': {
76
+ const fate = fateOf(migration.schema, migration.table);
77
+ // Already present ⇒ `decideSchemaChange` converges without executing, so the
78
+ // local table, its rows and its bookkeeping all survive untouched; only an
79
+ // absent → present transition leaves a genuinely empty table with no history.
80
+ if (!fate.present) {
81
+ fate.present = true;
82
+ fate.historyName = undefined;
83
+ }
84
+ break;
85
+ }
86
+ case 'drop_table': {
87
+ const fate = fateOf(migration.schema, migration.table);
88
+ fate.present = false;
89
+ fate.historyName = undefined;
90
+ break;
33
91
  }
34
- else if (migration.type === 'drop_table') {
35
- dropped.add(key);
92
+ case 'rename_table': {
93
+ // Mirrors `decideRenameTable`: no `fromTable` (an omitting peer) is
94
+ // undecidable and converges without applying, so neither name moves.
95
+ if (migration.fromTable === undefined)
96
+ break;
97
+ const from = fateOf(migration.schema, migration.fromTable);
98
+ const to = fateOf(migration.schema, migration.table);
99
+ // Old absent ⇒ the receiver declines (a local drop won, or the rename
100
+ // already happened here). Both present ⇒ `decideRenameTable` throws a
101
+ // collision and the whole admission unit aborts; predict no movement.
102
+ if (!from.present || to.present)
103
+ break;
104
+ to.present = true;
105
+ // The table moves; its bookkeeping stays where it was filed.
106
+ to.historyName = from.historyName;
107
+ from.present = false;
108
+ from.historyName = undefined;
109
+ break;
36
110
  }
37
111
  }
38
112
  }
39
- return { created, dropped };
113
+ return fates;
40
114
  }
41
115
  /**
42
116
  * Apply change sets from a remote peer.
@@ -46,9 +120,25 @@ function computeBatchTableDelta(changes) {
46
120
  * 2. Apply data to store via callback
47
121
  * 3. Commit CRDT metadata (+ durable quarantine of diverted changes)
48
122
  *
49
- * Unknown-table disposition: a change referencing a table outside the local basis
50
- * (a retired-table straggler delta — see `docs/migration.md` § 4 Contract) is
51
- * **diverted** during resolution — never resolved, applied, or recorded as CRDT
123
+ * ORDER-INDEPENDENT: `changes` may arrive in any order and produces the same
124
+ * committed state as the HLC-ordered array. Callers need not (and do not) preserve
125
+ * timestamp order — the coordinator's `onBeforeApplyChanges` approval hook returns a
126
+ * caller-supplied array, and the REST/WebSocket ingress accepts an arbitrary array
127
+ * from any client. Everything whose outcome depends on order is re-derived from the
128
+ * HLCs here rather than from arrival position: resolution and
129
+ * {@link reconcileInBatchDeletes} already compare HLCs, the store apply list is sorted
130
+ * by {@link orderDataChangesByHLC}, the DDL list by {@link orderMigrationsByHLC}, and
131
+ * the emitted payload by {@link emitRemoteChanges}. Everything else (the counters, the
132
+ * quarantine holds, the watermark max) is order-insensitive by construction. The
133
+ * guarantee covers committed STATE, not the event stream: `onConflictResolved` fires
134
+ * from the resolve loop in arrival order, and an `onUnknownTable` event reports the
135
+ * FIRST changeset that referenced the table as the straggler origin, so a reordered
136
+ * batch can name a different relayer — telemetry only, never a stored fact.
137
+ *
138
+ * Unknown-table disposition: a change referencing a table the batch leaves absent — not
139
+ * in the local basis and not created by this batch's schema steps (a retired-table
140
+ * straggler delta — see `docs/migration.md` § 4 Contract) — is **diverted** during
141
+ * resolution — never resolved, applied, or recorded as CRDT
52
142
  * metadata, so the change log stays clean (no survivor-HLC pollution). Diverted
53
143
  * changes are held (durably, idempotently — `quarantine`, or `store-and-forward`
54
144
  * which additionally marks them forwardable) or ignored per
@@ -58,7 +148,6 @@ export async function applyChanges(ctx, changes) {
58
148
  let applied = 0;
59
149
  let skipped = 0;
60
150
  let conflicts = 0;
61
- const dataChangesToApply = [];
62
151
  const schemaChangesToApply = [];
63
152
  const appliedChanges = [];
64
153
  const resolvedDataChanges = [];
@@ -70,7 +159,6 @@ export async function applyChanges(ctx, changes) {
70
159
  // Out-of-basis straggler changes diverted out of the resolve/apply/metadata
71
160
  // path, grouped per table for disposition + telemetry.
72
161
  const unknownByTable = new Map();
73
- const { created: batchCreated, dropped: batchDropped } = computeBatchTableDelta(changes);
74
162
  // Pre-commit drift validation: reject a batch whose maximum fact HLC is beyond the
75
163
  // drift bound BEFORE any resolution, data write, or CRDT metadata commit — so a peer
76
164
  // with a badly-wrong clock cannot land far-future LWW winners that then beat every
@@ -89,31 +177,44 @@ export async function applyChanges(ctx, changes) {
89
177
  throw error;
90
178
  }
91
179
  }
92
- // PHASE 1: Resolve all changes (no writes yet). The clock watermark is merged
180
+ // PHASE 1a: Schema migrations, batch-wide and HLC-ordered (DDL before DML — the
181
+ // whole batch's schema changes run before any of its data, see admitGroup). Two
182
+ // migrations for ONE table are order-dependent (a `drop_table` replayed after the
183
+ // `create_table` that should follow it leaves the table absent), and `applyChanges`
184
+ // does not trust arrival order, so sort by HLC rather than walking the changesets in
185
+ // receipt order. For a well-ordered batch the sort is a no-op: per-table HLC order
186
+ // IS schemaVersion order (the origin assigns versions monotonically as it ticks).
187
+ // It also pins the `migration.schemaVersion ?? getCurrentVersion() + 1` fallback
188
+ // below, which reads storage that no migration in this batch has written yet.
189
+ for (const migration of orderMigrationsByHLC(changes)) {
190
+ // NOTE: the `??` fallback reads storage no migration in this batch has written
191
+ // yet, so two migrations of ONE object that BOTH omit `schemaVersion` compute
192
+ // the SAME version and collapse onto one `sm:` key (the later, max-HLC, wins).
193
+ // Unreachable today — `SchemaMigration.schemaVersion` is required, and
194
+ // `collectSchemaMigrations` always carries the stored value; if a wire format
195
+ // ever makes it optional in practice, assign in-batch versions here instead.
196
+ const kind = migrationObjectKind(migration.type);
197
+ const schemaVersion = migration.schemaVersion ??
198
+ (await ctx.schemaMigrations.getCurrentVersion(migration.schema, kind, migration.table)) + 1;
199
+ const existingMigration = await ctx.schemaMigrations.getMigration(migration.schema, kind, migration.table, schemaVersion);
200
+ if (existingMigration) {
201
+ if (compareHLC(migration.hlc, existingMigration.hlc) <= 0) {
202
+ skipped++;
203
+ continue;
204
+ }
205
+ }
206
+ schemaChangesToApply.push(toSchemaChange(migration));
207
+ pendingSchemaMigrations.push({ migration, schemaVersion });
208
+ applied++;
209
+ }
210
+ // What the batch's schema steps leave behind, simulated over the migrations Phase 1a
211
+ // actually KEPT and seeded from what the receiver has now — so the verdict below
212
+ // agrees with the catalog the DDL will be decided against.
213
+ const batchFates = computeBatchTableFates(pendingSchemaMigrations.map(({ migration }) => migration), (schema, table) => ctx.isTableInBasis(schema, table));
214
+ // PHASE 1b: Resolve all data changes (no writes yet). The clock watermark is merged
93
215
  // once after a successful admission (see admitGroup below), not per changeset —
94
216
  // resolution reads stored versions via compareHLC, never the live clock.
95
217
  for (const changeSet of changes) {
96
- // Process schema migrations first (DDL before DML)
97
- for (const migration of changeSet.schemaMigrations) {
98
- const schemaVersion = migration.schemaVersion ??
99
- (await ctx.schemaMigrations.getCurrentVersion(migration.schema, migration.table)) + 1;
100
- const existingMigration = await ctx.schemaMigrations.getMigration(migration.schema, migration.table, schemaVersion);
101
- if (existingMigration) {
102
- if (compareHLC(migration.hlc, existingMigration.hlc) <= 0) {
103
- skipped++;
104
- continue;
105
- }
106
- }
107
- schemaChangesToApply.push({
108
- type: migration.type,
109
- schema: migration.schema,
110
- table: migration.table,
111
- ddl: migration.ddl,
112
- });
113
- pendingSchemaMigrations.push({ migration, schemaVersion });
114
- applied++;
115
- }
116
- // Resolve data changes
117
218
  for (const change of changeSet.changes) {
118
219
  // Self-origin echo skip BEFORE unknown-table detection, so a self-change
119
220
  // to a retired table is skipped (counted), never quarantined. resolveChange
@@ -122,13 +223,16 @@ export async function applyChanges(ctx, changes) {
122
223
  skipped++;
123
224
  continue;
124
225
  }
125
- // Structural unknown-table detection: in the current basis OR created by
126
- // this batch, AND not dropped by this batch. Diverted changes never reach
226
+ // Structural unknown-table detection: a table this batch creates or drops is
227
+ // known iff the batch's schema steps leave it PRESENT (its last create/drop
228
+ // step in timestamp order is a create_table); one the batch does not touch
229
+ // falls back to the current basis. Diverted changes never reach
127
230
  // resolveChange / dataChangesToApply / commitChangeMetadata, so no CRDT
128
231
  // metadata is written for a table the receiver does not have.
129
232
  const key = tableKey(change.schema, change.table);
130
233
  const inBasis = ctx.isTableInBasis(change.schema, change.table);
131
- const known = (inBasis || batchCreated.has(key)) && !batchDropped.has(key);
234
+ const fate = batchFates.get(key);
235
+ const known = fate ? fate.present : inBasis;
132
236
  if (!known) {
133
237
  let group = unknownByTable.get(key);
134
238
  if (!group) {
@@ -143,7 +247,30 @@ export async function applyChanges(ctx, changes) {
143
247
  // — and, being locally fresh, no local metadata to resolve against either.
144
248
  // Resolve it read-free rather than throwing from the keying resolver;
145
249
  // Phase 3's metadata commit runs after the DDL, when the keying resolves.
146
- const freshLocalTable = !inBasis;
250
+ //
251
+ // A table this batch leaves under a name whose stranded bookkeeping describes
252
+ // some OTHER table counts as fresh too, even when the receiver already has the
253
+ // name: dropping or renaming a table does not move its cell versions and
254
+ // tombstones, so resolving these rows against them would let a stale tombstone
255
+ // silently discard them under the default `allowResurrection: false`. That is
256
+ // `fate.historyName !== key` — a drop-then-re-create, or a swap that renames a
257
+ // different table into the vacated name. A RE-DELIVERED drop/re-create batch —
258
+ // every schema step dominated, no local schema changed, the local table already
259
+ // the post-re-create incarnation — keeps `historyName === key` and resolves
260
+ // normally against that incarnation's own metadata, and so does a name renamed
261
+ // AWAY and BACK in one batch: the same table returns to its own bookkeeping.
262
+ // (The broader question of a re-created table INHERITING that bookkeeping —
263
+ // purge policy, relays, retention horizon — is tracked separately; this only
264
+ // stops the in-batch recreate consulting it.)
265
+ //
266
+ // NOTE: `!inBasis` still resolves read-free for a table that arrives under a
267
+ // name the receiver does NOT currently have, including by rename. That name may
268
+ // carry metadata stranded by an earlier incarnation, which the arriving table's
269
+ // rows then skip. Unavoidable today — an out-of-basis name has no schema and so
270
+ // no resolvable pk keying — and the same for `create_table`; if the stranded
271
+ // bookkeeping is ever purged or re-keyed on drop/rename
272
+ // (`bug-sync-recreated-table-inherits-dropped-table-metadata`), narrow this.
273
+ const freshLocalTable = !inBasis || (fate !== undefined && fate.historyName !== key);
147
274
  const resolved = await resolveChange(ctx, change, freshLocalTable);
148
275
  if (freshLocalTable)
149
276
  resolved.freshLocalTable = true;
@@ -164,9 +291,6 @@ export async function applyChanges(ctx, changes) {
164
291
  applied++;
165
292
  appliedChanges.push({ change: resolved.change, siteId: dataResolutions[i].siteId });
166
293
  resolvedDataChanges.push(resolved);
167
- if (resolved.dataChange) {
168
- dataChangesToApply.push(resolved.dataChange);
169
- }
170
294
  }
171
295
  else if (resolved.outcome === 'skipped') {
172
296
  skipped++;
@@ -175,6 +299,7 @@ export async function applyChanges(ctx, changes) {
175
299
  conflicts++;
176
300
  }
177
301
  }
302
+ const dataChangesToApply = orderDataChangesByHLC(resolvedDataChanges);
178
303
  const disposition = ctx.config.unknownTableDisposition;
179
304
  // Single receive timestamp for every quarantine entry this apply (GC horizon).
180
305
  const receivedAt = Date.now();
@@ -191,8 +316,12 @@ export async function applyChanges(ctx, changes) {
191
316
  await commitChangeMetadata(ctx, resolvedDataChanges);
192
317
  // Commit schema migration metadata
193
318
  for (const { migration, schemaVersion } of pendingSchemaMigrations) {
194
- await ctx.schemaMigrations.recordMigration(migration.schema, migration.table, {
319
+ await ctx.schemaMigrations.recordMigration(migration.schema, migrationObjectKind(migration.type), migration.table, {
195
320
  type: migration.type,
321
+ // Carry the rename's old name into local storage, or this
322
+ // receiver's own re-relay/snapshot would ship the rename
323
+ // without it — undecidable downstream.
324
+ ...(migration.fromTable !== undefined ? { fromTable: migration.fromTable } : {}),
196
325
  ddl: migration.ddl,
197
326
  hlc: migration.hlc,
198
327
  schemaVersion,
@@ -230,22 +359,28 @@ export async function applyChanges(ctx, changes) {
230
359
  // Emit remote change events (grouped by the relaying changeset's siteId).
231
360
  emitRemoteChanges(ctx, appliedChanges);
232
361
  // Reactive low-latency drain (sync-drain-reappear-inbound-ddl): every APPLIED
233
- // create_table may have revived a previously-retired table that has held
362
+ // migration that makes a NAME exist — a `create_table`, or a `rename_table` moving a
363
+ // table onto that name — may have revived a previously-retired table that has held
234
364
  // out-of-basis changes waiting on it. Replay them NOW — as a SEPARATE post-commit
235
365
  // apply unit, after the admitting batch above has fully committed (fresh data lands
236
366
  // first, held changes LWW-resolve against it) — instead of waiting up to one
237
367
  // periodic-sweep interval. Only applied migrations are in `pendingSchemaMigrations`
238
368
  // (an HLC-dominated create_table `continue`s before being pushed), so a losing
239
- // create never triggers a drain. A create+drop in the same batch leaves the table
240
- // absent, so its key is skipped to avoid a wasted scoped `quarantine.list`.
369
+ // create never triggers a drain. A batch whose schema steps leave the table ABSENT
370
+ // (a trailing drop_table) has its key skipped to avoid a wasted scoped
371
+ // `quarantine.list` — a drop-then-create batch leaves it PRESENT and does drain.
372
+ // A migration the simulation never modelled has no fate entry (only a
373
+ // `rename_table` with no `fromTable`, which returns before reaching `fateOf`): fall
374
+ // back to the basis, read HERE — post-DDL — so it is the exact post-batch answer.
241
375
  // Advisory: `drainReappearedTables` logs + swallows any failure, so a drain throw
242
376
  // never turns this successful apply into an error.
243
377
  const reappeared = new Map();
244
378
  for (const { migration } of pendingSchemaMigrations) {
245
- if (migration.type !== 'create_table')
379
+ if (migration.type !== 'create_table' && migration.type !== 'rename_table')
246
380
  continue;
247
381
  const key = tableKey(migration.schema, migration.table);
248
- if (batchDropped.has(key))
382
+ const fate = batchFates.get(key);
383
+ if (!(fate ? fate.present : ctx.isTableInBasis(migration.schema, migration.table)))
249
384
  continue;
250
385
  if (!reappeared.has(key))
251
386
  reappeared.set(key, { schema: migration.schema, table: migration.table });
@@ -275,18 +410,63 @@ export async function applyChanges(ctx, changes) {
275
410
  ...(unknownTableCount > 0 ? { unknownTable: unknownTableCount } : {}),
276
411
  };
277
412
  }
413
+ /**
414
+ * Order one reconciled batch's store operations by HLC.
415
+ *
416
+ * {@link DataChangeToApply} carries no timestamp, so the store adapter replays each
417
+ * row group in ARRIVAL order (`buildRowOp` in store-adapter.ts) while resolution and
418
+ * {@link reconcileInBatchDeletes} decide by HLC. `applyChanges` takes whatever
419
+ * transaction array its caller hands it — the coordinator's approval hook and the
420
+ * REST/WebSocket ingress neither preserve nor produce timestamp order — so arrival
421
+ * order is not trustworthy. Sorting here, in the one place that still holds the HLCs,
422
+ * makes the table contents follow the same rule as the metadata whatever order the
423
+ * batch arrived in, without threading an HLC through the whole store seam.
424
+ *
425
+ * A GLOBAL sort suffices: the adapter groups by table, then by row, so only the
426
+ * relative order WITHIN one row group is load-bearing. `compareHLC` is a total order
427
+ * over `(wallTime, counter, siteId, opSeq)` and `Array.prototype.sort` is stable, so
428
+ * equal HLCs — the same fact — keep arrival order.
429
+ *
430
+ * It also lands the resurrection case right: {@link reconcileInBatchDeletes} already
431
+ * skipped every column change at or below the winning delete's HLC, so the only column
432
+ * ops left for that row are strictly later than the delete — the sort puts the delete
433
+ * first and `buildRowOp` rebuilds the row from primary key + nulls, which is what the
434
+ * metadata says happened.
435
+ */
436
+ function orderDataChangesByHLC(applied) {
437
+ const withOps = applied.filter((resolved) => resolved.dataChange !== undefined);
438
+ withOps.sort((a, b) => compareHLC(a.change.hlc, b.change.hlc));
439
+ return withOps.map(resolved => resolved.dataChange);
440
+ }
441
+ /**
442
+ * Flatten a batch's schema migrations into one HLC-ordered list.
443
+ *
444
+ * Same reason as {@link orderDataChangesByHLC}: the DDL list reaches the store adapter
445
+ * as a plain array replayed in order, so arrival order across changesets must not
446
+ * decide which runs first. Ordering itself is {@link sortMigrationsByHLC}.
447
+ */
448
+ function orderMigrationsByHLC(changes) {
449
+ return sortMigrationsByHLC(changes.flatMap(changeSet => [...changeSet.schemaMigrations]));
450
+ }
278
451
  /**
279
452
  * Emit `onRemoteChange` for applied changes, grouped by a per-change origin site
280
453
  * id. Shared by the wire apply (grouping by the relaying changeset's `siteId`) and
281
454
  * the drain path (grouping by each held change's original origin `hlc.siteId`), so
282
455
  * downstream reactivity — MV maintenance, `Database.watch`, UI — fires identically
283
456
  * on a revival as on a fresh remote apply. No-op for an empty set.
457
+ *
458
+ * The payload is HLC-ordered for the same reason the store apply list is
459
+ * ({@link orderDataChangesByHLC}): it is built from the same reconciled list, so a
460
+ * reordered batch would otherwise hand a listener the batch's facts in an order that
461
+ * contradicts the state just committed. Ordering is per emitted event, and the sort is
462
+ * a total order, so each site's slice stays HLC-ordered too.
284
463
  */
285
464
  function emitRemoteChanges(ctx, entries) {
286
465
  if (entries.length === 0)
287
466
  return;
467
+ const ordered = [...entries].sort((a, b) => compareHLC(a.change.hlc, b.change.hlc));
288
468
  const changesBySite = new Map();
289
- for (const { change, siteId } of entries) {
469
+ for (const { change, siteId } of ordered) {
290
470
  const siteKey = Array.from(siteId).join(',');
291
471
  const siteChanges = changesBySite.get(siteKey);
292
472
  if (siteChanges) {
@@ -307,6 +487,10 @@ function emitRemoteChanges(ctx, entries) {
307
487
  });
308
488
  }
309
489
  }
490
+ // NOTE: this file is 1204 lines (`wc -l`), second-largest in the package. The drain
491
+ // block below (`drainHeldChanges` → `drainReappearedTables`) shares only `resolveChange`,
492
+ // `reconcileInBatchDeletes`, `commitChangeMetadata`, and `admitGroup` with the wire-apply
493
+ // half above, so it is the natural seam if the file keeps growing.
310
494
  /**
311
495
  * Replay held out-of-basis changes (`quarantine` + forwardable `store-and-forward`
312
496
  * entries) into tables that have since reappeared in the local basis — the revival
@@ -366,7 +550,6 @@ async function drainTableGroup(ctx, group) {
366
550
  if (columns === undefined)
367
551
  return 0;
368
552
  const columnSet = new Set(columns);
369
- const dataChangesToApply = [];
370
553
  const resolvedDataChanges = [];
371
554
  const appliedEntries = [];
372
555
  let applied = 0;
@@ -393,8 +576,6 @@ async function drainTableGroup(ctx, group) {
393
576
  if (resolved.outcome === 'applied') {
394
577
  applied++;
395
578
  resolvedDataChanges.push(resolved);
396
- if (resolved.dataChange)
397
- dataChangesToApply.push(resolved.dataChange);
398
579
  // Group revival events by the held change's ORIGINAL origin (its HLC
399
580
  // siteId) — a held change carries no relaying changeset.
400
581
  appliedEntries.push({ change: resolved.change, siteId: resolved.change.hlc.siteId });
@@ -403,6 +584,10 @@ async function drainTableGroup(ctx, group) {
403
584
  skipped++;
404
585
  }
405
586
  }
587
+ // Held entries already come back HLC-ordered (`buildQuarantineKey` puts the HLC
588
+ // bytes first), so this is order-preserving today — it pins the same contract
589
+ // applyChanges states rather than fixing a live inversion here.
590
+ const dataChangesToApply = orderDataChangesByHLC(resolvedDataChanges);
406
591
  // One admission unit: data first → CRDT metadata + held-entry deletes second.
407
592
  // No watermarkHLC — these HLCs were already merged into the local clock at the
408
593
  // original receive (applyChanges merges the batch maxHLC even for diverted
@@ -707,10 +892,15 @@ export async function commitChangeMetadata(ctx, resolvedChanges) {
707
892
  * collapse runs post-DDL with the resolved keying; for a fresh table with
708
893
  * collation-variant pk spellings in ONE batch the two groupings can disagree, an
709
894
  * edge accepted here.)
895
+ *
896
+ * Components are length-prefixed ({@link joinKeyParts}), not punctuation-joined, for
897
+ * the same reason the on-disk keys are: a table name may contain `:` or `.` and a pk
898
+ * identity contains both, so a `{schema}.{table}:{identity}` join would let two rows
899
+ * of DIFFERENT tables collapse onto one winner and silently drop a change.
710
900
  */
711
901
  function rowIdentityKey(ctx, change, freshLocalTable) {
712
902
  const keying = freshLocalTable ? RAW_PK_KEYING : ctx.getPkKeying(change.schema, change.table);
713
- return `${change.schema}.${change.table}:${encodePkIdentity(change.pk, keying)}`;
903
+ return joinKeyParts(change.schema, change.table, encodePkIdentity(change.pk, keying));
714
904
  }
715
905
  /** Stable per-pk key for collapsing repeated delete entries within one batch. */
716
906
  function deleteKey(ctx, change) {
@@ -718,7 +908,7 @@ function deleteKey(ctx, change) {
718
908
  }
719
909
  /** Stable per-(pk, column) key for collapsing repeated column entries within one batch. */
720
910
  function columnKey(ctx, change) {
721
- return `column:${rowIdentityKey(ctx, change)}:${change.column}`;
911
+ return `column:${rowIdentityKey(ctx, change)}${joinKeyParts(change.column)}`;
722
912
  }
723
913
  /** Keep the max-HLC resolved change per key, collapsing in-batch repeats to one winner. */
724
914
  function keepMaxHLC(winners, key, resolved) {
@@ -1 +1 @@
1
- {"version":3,"file":"change-applicator.js","sourceRoot":"","sources":["../../../src/sync/change-applicator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-applicator.js","sourceRoot":"","sources":["../../../src/sync/change-applicator.ts"],"names":[],"mappings":"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"}