@rocicorp/zero 0.18.2025032401 → 0.18.2025032800
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/out/advanced.js +0 -1
- package/out/{chunk-5WXONOGR.js → chunk-3S3SDA44.js} +205 -140
- package/out/chunk-3S3SDA44.js.map +7 -0
- package/out/{chunk-2B2QE5AT.js → chunk-MB3DEFRC.js} +25 -2
- package/out/{chunk-2B2QE5AT.js.map → chunk-MB3DEFRC.js.map} +2 -2
- package/out/{chunk-DSUPSGE4.js → chunk-NBZURO2P.js} +81 -26
- package/out/{chunk-DSUPSGE4.js.map → chunk-NBZURO2P.js.map} +4 -4
- package/out/{inspector-ROITQB3J.js → inspector-SH2ZK7O3.js} +253 -102
- package/out/inspector-SH2ZK7O3.js.map +7 -0
- package/out/react.js +2 -3
- package/out/react.js.map +2 -2
- package/out/shared/src/sentinels.d.ts +3 -0
- package/out/shared/src/sentinels.d.ts.map +1 -0
- package/out/solid.js +3 -4
- package/out/solid.js.map +2 -2
- package/out/z2s/src/compiler.d.ts +5 -3
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +116 -16
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/z2s/src/sql.d.ts +8 -0
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js +205 -11
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/src/zero-cache-dev.d.ts +1 -1
- package/out/zero/src/zero-cache-dev.d.ts.map +1 -1
- package/out/zero/src/zero-cache-dev.js +1 -1
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js +2 -1
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +6 -3
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js +9 -9
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.d.ts +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.d.ts.map +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
- package/out/zero-cache/src/server/multi/config.d.ts +1 -1
- package/out/zero-cache/src/server/multi/main.d.ts +1 -1
- package/out/zero-cache/src/server/multi/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/main.js +1 -1
- package/out/zero-cache/src/server/multi/main.js.map +1 -1
- package/out/zero-cache/src/server/multi/run-worker.d.ts +1 -1
- package/out/zero-cache/src/server/multi/run-worker.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/run-worker.js +1 -1
- package/out/zero-cache/src/server/multi/run-worker.js.map +1 -1
- package/out/zero-cache/src/server/syncer.js +1 -1
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +96 -42
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.js +16 -5
- package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -2
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +18 -31
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +7 -35
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +42 -74
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.js +69 -21
- package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +54 -27
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js +53 -16
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +7 -5
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +20 -5
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +24 -10
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +25 -14
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +8 -4
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +47 -23
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js +8 -2
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -0
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +35 -0
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -0
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +32 -20
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/bigint-json.d.ts +1 -1
- package/out/zero-cache/src/types/bigint-json.d.ts.map +1 -1
- package/out/zero-cache/src/types/bigint-json.js.map +1 -1
- package/out/zero-cache/src/types/lite.d.ts.map +1 -1
- package/out/zero-cache/src/types/lite.js +4 -3
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/shards.d.ts +4 -0
- package/out/zero-cache/src/types/shards.d.ts.map +1 -1
- package/out/zero-cache/src/types/shards.js +1 -1
- package/out/zero-cache/src/types/shards.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +1 -2
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +64 -21
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +4 -8
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +16 -7
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +9 -11
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.d.ts +2 -1
- package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/types.d.ts +7 -2
- package/out/zero-client/src/client/inspector/types.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts +23 -8
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/options.d.ts +7 -2
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts +2 -1
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +7 -1
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-pg/src/custom.d.ts +2 -13
- package/out/zero-pg/src/custom.d.ts.map +1 -1
- package/out/zero-pg/src/custom.js +11 -14
- package/out/zero-pg/src/custom.js.map +1 -1
- package/out/zero-pg/src/mod.d.ts +1 -2
- package/out/zero-pg/src/mod.d.ts.map +1 -1
- package/out/zero-pg/src/mod.js +1 -1
- package/out/zero-pg/src/mod.js.map +1 -1
- package/out/zero-pg/src/query.d.ts +2 -2
- package/out/zero-pg/src/query.d.ts.map +1 -1
- package/out/zero-pg/src/query.js +8 -15
- package/out/zero-pg/src/query.js.map +1 -1
- package/out/zero-pg/src/web.d.ts +3 -7
- package/out/zero-pg/src/web.d.ts.map +1 -1
- package/out/zero-pg/src/web.js +9 -15
- package/out/zero-pg/src/web.js.map +1 -1
- package/out/zero-protocol/src/client-schema.d.ts +1 -1
- package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
- package/out/zero-protocol/src/client-schema.js +1 -1
- package/out/zero-protocol/src/client-schema.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +19 -4
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/down.js +2 -2
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/inspect-down.d.ts +59 -0
- package/out/zero-protocol/src/inspect-down.d.ts.map +1 -0
- package/out/zero-protocol/src/inspect-down.js +23 -0
- package/out/zero-protocol/src/inspect-down.js.map +1 -0
- package/out/zero-protocol/src/inspect-up.d.ts +21 -0
- package/out/zero-protocol/src/inspect-up.d.ts.map +1 -0
- package/out/zero-protocol/src/inspect-up.js +12 -0
- package/out/zero-protocol/src/inspect-up.js.map +1 -0
- package/out/zero-protocol/src/mutation-type-enum.d.ts +1 -0
- package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +3 -1
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +31 -6
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +7 -2
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +5 -1
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-protocol/src/up.js +2 -1
- package/out/zero-protocol/src/up.js.map +1 -1
- package/out/zero-react/src/use-query.d.ts +1 -2
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-schema/src/builder/table-builder.d.ts +13 -0
- package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/table-builder.js +17 -0
- package/out/zero-schema/src/builder/table-builder.js.map +1 -1
- package/out/zero-schema/src/permissions.d.ts.map +1 -1
- package/out/zero-schema/src/table-schema.d.ts +3 -1
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-schema/src/table-schema.js.map +1 -1
- package/out/zero-solid/src/create-zero.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +1 -2
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +1 -2
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero.js +7 -4
- package/out/zql/src/mutate/custom.d.ts +0 -1
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +9 -6
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +16 -18
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internal.d.ts +2 -9
- package/out/zql/src/query/query-internal.d.ts.map +1 -1
- package/out/zql/src/query/query.d.ts +5 -0
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/static-query.d.ts +1 -1
- package/out/zql/src/query/static-query.d.ts.map +1 -1
- package/out/zql/src/query/static-query.js +2 -2
- package/out/zql/src/query/static-query.js.map +1 -1
- package/out/zql/src/query/ttl.d.ts +1 -1
- package/out/zql/src/query/ttl.d.ts.map +1 -1
- package/out/zql/src/query/ttl.js +1 -1
- package/out/zql/src/query/ttl.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +8 -0
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +4 -5
- package/out/chunk-5WXONOGR.js.map +0 -7
- package/out/chunk-ULOTOBTC.js +0 -1
- package/out/chunk-ULOTOBTC.js.map +0 -7
- package/out/inspector-ROITQB3J.js.map +0 -7
- package/out/zero-protocol/src/warm.d.ts +0 -10
- package/out/zero-protocol/src/warm.d.ts.map +0 -1
- package/out/zero-protocol/src/warm.js +0 -6
- package/out/zero-protocol/src/warm.js.map +0 -1
- package/out/zero-schema/src/mod.d.ts +0 -5
- package/out/zero-schema/src/mod.d.ts.map +0 -1
- package/out/zql/src/query/query-internal.js +0 -2
- package/out/zql/src/query/query-internal.js.map +0 -1
|
@@ -1,37 +1,44 @@
|
|
|
1
1
|
import { assert } from "../../../../../../shared/src/asserts.js";
|
|
2
|
+
import * as v from "../../../../../../shared/src/valita.js";
|
|
2
3
|
import { getVersionHistory, runSchemaMigrations, } from "../../../../db/migration.js";
|
|
3
4
|
import { upstreamSchema } from "../../../../types/shards.js";
|
|
4
5
|
import { AutoResetSignal } from "../../../change-streamer/schema/tables.js";
|
|
5
6
|
import { decommissionShard } from "../decommission.js";
|
|
6
|
-
import {
|
|
7
|
+
import { publishedSchema } from "./published.js";
|
|
8
|
+
import { legacyReplicationSlot, setupTablesAndReplication, setupTriggers, } from "./shard.js";
|
|
7
9
|
/**
|
|
8
10
|
* Initializes a shard for initial sync.
|
|
9
11
|
* This will drop any existing shard setup.
|
|
10
12
|
*/
|
|
11
|
-
export async function
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
export async function ensureShardSchema(lc, db, shard) {
|
|
14
|
+
const initialSetup = {
|
|
15
|
+
migrateSchema: (lc, tx) => setupTablesAndReplication(lc, tx, shard),
|
|
16
|
+
minSafeVersion: 1,
|
|
17
|
+
};
|
|
18
|
+
await runSchemaMigrations(lc, `upstream-shard-${shard.appID}`, upstreamSchema(shard), db, initialSetup,
|
|
19
|
+
// The incremental migration of any existing replicas will be replaced by
|
|
20
|
+
// the incoming replica being synced, so the replicaVersion here is
|
|
21
|
+
// unnecessary.
|
|
22
|
+
getIncrementalMigrations(shard, 'obsolete'));
|
|
14
23
|
}
|
|
15
24
|
/**
|
|
16
25
|
* Updates the schema for an existing shard.
|
|
17
26
|
*/
|
|
18
27
|
export async function updateShardSchema(lc, db, shard, replicaVersion) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
await runSchemaMigrations(lc, `upstream-shard-${shard.appID}`, upstreamSchema(shard), db, {
|
|
29
|
+
// If the expected existing shard is absent, throw an
|
|
30
|
+
// AutoResetSignal to backtrack and initial sync.
|
|
31
|
+
migrateSchema: () => {
|
|
32
|
+
throw new AutoResetSignal(`upstream shard ${upstreamSchema(shard)} is not initialized`);
|
|
33
|
+
},
|
|
34
|
+
}, getIncrementalMigrations(shard, replicaVersion));
|
|
25
35
|
// The decommission check is run in updateShardSchema so that it happens
|
|
26
36
|
// after initial sync, and not when the shard schema is initially set up.
|
|
27
37
|
await decommissionLegacyShard(lc, db, shard);
|
|
28
38
|
}
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
minSafeVersion: 1,
|
|
33
|
-
};
|
|
34
|
-
const schemaVersionMigrationMap = {
|
|
39
|
+
function getIncrementalMigrations(shard, replicaVersion) {
|
|
40
|
+
const shardConfigTable = `${upstreamSchema(shard)}.shardConfig`;
|
|
41
|
+
return {
|
|
35
42
|
4: {
|
|
36
43
|
migrateSchema: () => {
|
|
37
44
|
throw new AutoResetSignal('resetting to upgrade shard schema');
|
|
@@ -51,17 +58,58 @@ async function runShardMigrations(lc, db, shard, replicaVersion) {
|
|
|
51
58
|
assert(replicaVersion, `replicaVersion is always passed for incremental migrations`);
|
|
52
59
|
await Promise.all([
|
|
53
60
|
tx `
|
|
54
|
-
ALTER TABLE ${tx(
|
|
55
|
-
ADD "replicaVersion" TEXT`,
|
|
61
|
+
ALTER TABLE ${tx(shardConfigTable)} ADD "replicaVersion" TEXT`,
|
|
56
62
|
tx `
|
|
57
|
-
UPDATE ${tx(
|
|
58
|
-
SET ${tx({ replicaVersion })}`,
|
|
63
|
+
UPDATE ${tx(shardConfigTable)} SET ${tx({ replicaVersion })}`,
|
|
59
64
|
]);
|
|
60
65
|
lc.info?.(`Recorded replicaVersion ${replicaVersion} in upstream shardConfig`);
|
|
61
66
|
},
|
|
62
67
|
},
|
|
68
|
+
// Updates the DDL event trigger protocol to v2, and adds support for
|
|
69
|
+
// ALTER SCHEMA x RENAME TO y
|
|
70
|
+
7: {
|
|
71
|
+
migrateSchema: async (lc, tx) => {
|
|
72
|
+
const [{ publications }] = await tx `
|
|
73
|
+
SELECT publications FROM ${tx(shardConfigTable)}`;
|
|
74
|
+
await setupTriggers(lc, tx, { ...shard, publications });
|
|
75
|
+
lc.info?.(`Upgraded to v2 event triggers`);
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
// Adds support for non-disruptive resyncs, which tracks multiple
|
|
79
|
+
// replicas with different slot names.
|
|
80
|
+
8: {
|
|
81
|
+
migrateSchema: async (lc, tx) => {
|
|
82
|
+
const legacyShardConfigSchema = v.object({
|
|
83
|
+
replicaVersion: v.string().nullable(),
|
|
84
|
+
initialSchema: publishedSchema.nullable(),
|
|
85
|
+
});
|
|
86
|
+
const result = await tx `
|
|
87
|
+
SELECT "replicaVersion", "initialSchema" FROM ${tx(shardConfigTable)}`;
|
|
88
|
+
assert(result.length === 1);
|
|
89
|
+
const { replicaVersion, initialSchema } = v.parse(result[0], legacyShardConfigSchema, 'passthrough');
|
|
90
|
+
await Promise.all([
|
|
91
|
+
tx `
|
|
92
|
+
CREATE TABLE ${tx(upstreamSchema(shard))}.replicas (
|
|
93
|
+
"slot" TEXT PRIMARY KEY,
|
|
94
|
+
"version" TEXT NOT NULL,
|
|
95
|
+
"initialSchema" JSON NOT NULL
|
|
96
|
+
);
|
|
97
|
+
`,
|
|
98
|
+
tx `
|
|
99
|
+
INSERT INTO ${tx(upstreamSchema(shard))}.replicas ${tx({
|
|
100
|
+
slot: legacyReplicationSlot(shard),
|
|
101
|
+
version: replicaVersion,
|
|
102
|
+
initialSchema,
|
|
103
|
+
})}
|
|
104
|
+
`,
|
|
105
|
+
tx `
|
|
106
|
+
ALTER TABLE ${tx(shardConfigTable)} DROP "replicaVersion", DROP "initialSchema"
|
|
107
|
+
`,
|
|
108
|
+
]);
|
|
109
|
+
lc.info?.(`Upgraded schema to support non-disruptive resyncs`);
|
|
110
|
+
},
|
|
111
|
+
},
|
|
63
112
|
};
|
|
64
|
-
await runSchemaMigrations(lc, `upstream-shard-${shard.appID}`, upstreamSchema(shard), db, setupMigration, schemaVersionMigrationMap);
|
|
65
113
|
}
|
|
66
114
|
export async function decommissionLegacyShard(lc, db, shard) {
|
|
67
115
|
if (shard.appID !== 'zero') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,yCAAyC,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAC,cAAc,EAAmB,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAC,eAAe,EAAC,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,23 +4,39 @@ import type { PostgresDB, PostgresTransaction } from '../../../../types/pg.ts';
|
|
|
4
4
|
import type { AppID, ShardConfig, ShardID } from '../../../../types/shards.ts';
|
|
5
5
|
import { type PublicationInfo, type PublishedSchema } from './published.ts';
|
|
6
6
|
export declare function internalPublicationPrefix({ appID }: AppID): string;
|
|
7
|
+
export declare function legacyReplicationSlot({ appID, shardNum }: ShardID): string;
|
|
8
|
+
export declare function replicationSlotPrefix(shard: ShardID): string;
|
|
9
|
+
/**
|
|
10
|
+
* An expression used to match replication slots in the shard
|
|
11
|
+
* in a Postgres `LIKE` operator.
|
|
12
|
+
*/
|
|
13
|
+
export declare function replicationSlotExpression(shard: ShardID): string;
|
|
14
|
+
export declare function newReplicationSlot(shard: ShardID): string;
|
|
7
15
|
export declare function ensureGlobalTables(db: PostgresDB, appID: AppID): Promise<void>;
|
|
8
16
|
export declare function getClientsTableDefinition(schema: string): string;
|
|
9
17
|
export declare const SHARD_CONFIG_TABLE = "shardConfig";
|
|
10
18
|
export declare function shardSetup(shardConfig: ShardConfig, metadataPublication: string): string;
|
|
11
19
|
export declare function dropShard(appID: string, shardID: string | number): string;
|
|
12
|
-
declare const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
declare const replicaSchema: v.ObjectType<{
|
|
21
|
+
slot: v.Type<string>;
|
|
22
|
+
version: v.Type<string>;
|
|
23
|
+
initialSchema: v.ObjectType<Omit<{
|
|
24
|
+
tables: v.ArrayType<v.ObjectType<Omit<Omit<{
|
|
25
|
+
name: v.Type<string>;
|
|
26
|
+
columns: v.Type<Record<string, {
|
|
27
|
+
pgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | undefined;
|
|
28
|
+
characterMaximumLength?: number | null | undefined;
|
|
29
|
+
notNull?: boolean | null | undefined;
|
|
30
|
+
dflt?: string | null | undefined;
|
|
31
|
+
pos: number;
|
|
32
|
+
dataType: string;
|
|
33
|
+
}>>;
|
|
34
|
+
primaryKey: v.Optional<string[]>;
|
|
35
|
+
}, "schema"> & {
|
|
36
|
+
schema: v.Type<string>;
|
|
37
|
+
}, "publications" | "oid" | "columns" | "replicaIdentity"> & {
|
|
38
|
+
oid: v.Type<number>;
|
|
39
|
+
columns: v.Type<Record<string, {
|
|
24
40
|
pgTypeClass?: "e" | "b" | "d" | "c" | "p" | "r" | "m" | undefined;
|
|
25
41
|
characterMaximumLength?: number | null | undefined;
|
|
26
42
|
notNull?: boolean | null | undefined;
|
|
@@ -28,30 +44,41 @@ declare const internalShardConfigSchema: v.ObjectType<{
|
|
|
28
44
|
pos: number;
|
|
29
45
|
dataType: string;
|
|
30
46
|
typeOID: number;
|
|
31
|
-
}
|
|
32
|
-
|
|
47
|
+
}>>;
|
|
48
|
+
replicaIdentity: v.Optional<"n" | "d" | "f" | "i">;
|
|
49
|
+
publications: v.Type<Record<string, {
|
|
33
50
|
rowFilter: string | null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
51
|
+
}>>;
|
|
52
|
+
}, undefined>>;
|
|
53
|
+
}, "indexes"> & {
|
|
54
|
+
indexes: v.ArrayType<v.ObjectType<Omit<Omit<{
|
|
55
|
+
name: v.Type<string>;
|
|
56
|
+
tableName: v.Type<string>;
|
|
57
|
+
unique: v.Type<boolean>;
|
|
58
|
+
columns: v.Type<Record<string, "ASC" | "DESC">>;
|
|
59
|
+
}, "schema"> & {
|
|
60
|
+
schema: v.Type<string>;
|
|
61
|
+
}, "isReplicaIdentity" | "isImmediate"> & {
|
|
62
|
+
isReplicaIdentity: v.Optional<boolean>;
|
|
63
|
+
isImmediate: v.Optional<boolean>;
|
|
64
|
+
}, undefined>>;
|
|
65
|
+
}, undefined>;
|
|
66
|
+
}, undefined>;
|
|
67
|
+
export type Replica = v.Infer<typeof replicaSchema>;
|
|
68
|
+
declare const internalShardConfigSchema: v.ObjectType<{
|
|
69
|
+
publications: v.ArrayType<v.Type<string>>;
|
|
70
|
+
ddlDetection: v.Type<boolean>;
|
|
46
71
|
}, undefined>;
|
|
47
72
|
export type InternalShardConfig = v.Infer<typeof internalShardConfigSchema>;
|
|
48
|
-
export declare function
|
|
73
|
+
export declare function addReplica(db: PostgresDB, shard: ShardID, slot: string, replicaVersion: string, { tables, indexes }: PublishedSchema): Promise<void>;
|
|
74
|
+
export declare function getReplicaAtVersion(db: PostgresDB, shard: ShardID, replicaVersion: string): Promise<Replica | null>;
|
|
49
75
|
export declare function getInternalShardConfig(db: PostgresDB, shard: ShardID): Promise<InternalShardConfig>;
|
|
50
76
|
/**
|
|
51
77
|
* Sets up and returns all publications (including internal ones) for
|
|
52
78
|
* the given shard.
|
|
53
79
|
*/
|
|
54
80
|
export declare function setupTablesAndReplication(lc: LogContext, tx: PostgresTransaction, requested: ShardConfig): Promise<void>;
|
|
81
|
+
export declare function setupTriggers(lc: LogContext, tx: PostgresTransaction, shard: ShardConfig): Promise<void>;
|
|
55
82
|
export declare function validatePublications(lc: LogContext, published: PublicationInfo): void;
|
|
56
83
|
type ReplicaIdentities = {
|
|
57
84
|
apply(lc: LogContext, db: PostgresDB): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAE5D,OAAO,KAAK,EAAC,UAAU,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,6BAA6B,CAAC;AAI7E,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAGxB,wBAAgB,yBAAyB,CAAC,EAAC,KAAK,EAAC,EAAE,KAAK,UAEvD;AAyDD,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,iBAEpE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,UAQvD;AAED,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,wBAAgB,UAAU,CACxB,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAE5D,OAAO,KAAK,EAAC,UAAU,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,6BAA6B,CAAC;AAI7E,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAGxB,wBAAgB,yBAAyB,CAAC,EAAC,KAAK,EAAC,EAAE,KAAK,UAEvD;AAED,wBAAgB,qBAAqB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,OAAO,UAE/D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,UAGnD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,UAIvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,UAEhD;AAyDD,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,iBAEpE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,UAQvD;AAED,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,wBAAgB,UAAU,CACxB,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAqCR;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAYzE;AAED,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAIjB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,QAAA,MAAM,yBAAyB;;;aAG7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAc5E,wBAAsB,UAAU,CAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,EAAC,MAAM,EAAE,OAAO,EAAC,EAAE,eAAe,iBAOnC;AAED,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CASzB;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,mBAAmB,EACvB,SAAS,EAAE,WAAW,iBAwDvB;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,mBAAmB,EACvB,KAAK,EAAE,WAAW,iBAqBnB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,eAAe,QAkB3B;AAED,KAAK,iBAAiB,GAAG;IACvB,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD,CAAC;AAEF,wBAAgB,4CAA4C,CAC1D,IAAI,EAAE,eAAe,GACpB,iBAAiB,GAAG,SAAS,CA+C/B"}
|
|
@@ -4,7 +4,7 @@ import postgres from 'postgres';
|
|
|
4
4
|
import { assert } from "../../../../../../shared/src/asserts.js";
|
|
5
5
|
import * as v from "../../../../../../shared/src/valita.js";
|
|
6
6
|
import { Default } from "../../../../db/postgres-replica-identity-enum.js";
|
|
7
|
-
import { appSchema, upstreamSchema } from "../../../../types/shards.js";
|
|
7
|
+
import { appSchema, check, upstreamSchema } from "../../../../types/shards.js";
|
|
8
8
|
import { id } from "../../../../types/sql.js";
|
|
9
9
|
import { createEventTriggerStatements } from "./ddl.js";
|
|
10
10
|
import { getPublicationInfo, publishedSchema, } from "./published.js";
|
|
@@ -12,6 +12,25 @@ import { validate } from "./validation.js";
|
|
|
12
12
|
export function internalPublicationPrefix({ appID }) {
|
|
13
13
|
return `_${appID}_`;
|
|
14
14
|
}
|
|
15
|
+
export function legacyReplicationSlot({ appID, shardNum }) {
|
|
16
|
+
return `${appID}_${shardNum}`;
|
|
17
|
+
}
|
|
18
|
+
export function replicationSlotPrefix(shard) {
|
|
19
|
+
const { appID, shardNum } = check(shard);
|
|
20
|
+
return `${appID}_${shardNum}_`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* An expression used to match replication slots in the shard
|
|
24
|
+
* in a Postgres `LIKE` operator.
|
|
25
|
+
*/
|
|
26
|
+
export function replicationSlotExpression(shard) {
|
|
27
|
+
// Underscores have a special meaning in LIKE values
|
|
28
|
+
// so they have to be escaped.
|
|
29
|
+
return `${replicationSlotPrefix(shard)}%`.replaceAll('_', '\\_');
|
|
30
|
+
}
|
|
31
|
+
export function newReplicationSlot(shard) {
|
|
32
|
+
return replicationSlotPrefix(shard) + Date.now();
|
|
33
|
+
}
|
|
15
34
|
function defaultPublicationName(appID, shardID) {
|
|
16
35
|
return `_${appID}_public_${shardID}`;
|
|
17
36
|
}
|
|
@@ -92,21 +111,24 @@ export function shardSetup(shardConfig, metadataPublication) {
|
|
|
92
111
|
CREATE TABLE ${shard}."${SHARD_CONFIG_TABLE}" (
|
|
93
112
|
"publications" TEXT[] NOT NULL,
|
|
94
113
|
"ddlDetection" BOOL NOT NULL,
|
|
95
|
-
"replicaVersion" TEXT,
|
|
96
|
-
"initialSchema" JSON,
|
|
97
114
|
|
|
98
115
|
-- Ensure that there is only a single row in the table.
|
|
99
116
|
"lock" BOOL PRIMARY KEY DEFAULT true CHECK (lock)
|
|
100
117
|
);
|
|
101
118
|
|
|
102
|
-
INSERT INTO ${shard}."${SHARD_CONFIG_TABLE}"
|
|
103
|
-
|
|
104
|
-
|
|
119
|
+
INSERT INTO ${shard}."${SHARD_CONFIG_TABLE}" (
|
|
120
|
+
"publications",
|
|
121
|
+
"ddlDetection"
|
|
122
|
+
) VALUES (
|
|
105
123
|
ARRAY[${literal(pubs)}],
|
|
106
|
-
false
|
|
107
|
-
null, -- set in initial-sync at consistent_point LSN.
|
|
108
|
-
null -- set in initial-sync at consistent_ponit LSN.
|
|
124
|
+
false -- set in SAVEPOINT with triggerSetup() statements
|
|
109
125
|
);
|
|
126
|
+
|
|
127
|
+
CREATE TABLE ${shard}.replicas (
|
|
128
|
+
"slot" TEXT PRIMARY KEY,
|
|
129
|
+
"version" TEXT NOT NULL,
|
|
130
|
+
"initialSchema" JSON NOT NULL
|
|
131
|
+
);
|
|
110
132
|
`;
|
|
111
133
|
}
|
|
112
134
|
export function dropShard(appID, shardID) {
|
|
@@ -121,11 +143,14 @@ export function dropShard(appID, shardID) {
|
|
|
121
143
|
DROP SCHEMA IF EXISTS ${id(schema)} CASCADE;
|
|
122
144
|
`;
|
|
123
145
|
}
|
|
146
|
+
const replicaSchema = v.object({
|
|
147
|
+
slot: v.string(),
|
|
148
|
+
version: v.string(),
|
|
149
|
+
initialSchema: publishedSchema,
|
|
150
|
+
});
|
|
124
151
|
const internalShardConfigSchema = v.object({
|
|
125
152
|
publications: v.array(v.string()),
|
|
126
153
|
ddlDetection: v.boolean(),
|
|
127
|
-
replicaVersion: v.string().nullable(),
|
|
128
|
-
initialSchema: publishedSchema.nullable(),
|
|
129
154
|
});
|
|
130
155
|
// triggerSetup is run separately in a sub-transaction (i.e. SAVEPOINT) so
|
|
131
156
|
// that a failure (e.g. due to lack of superuser permissions) can be handled
|
|
@@ -136,17 +161,26 @@ function triggerSetup(shard) {
|
|
|
136
161
|
`UPDATE ${schema}."shardConfig" SET "ddlDetection" = true;`);
|
|
137
162
|
}
|
|
138
163
|
// Called in initial-sync to store the exact schema that was initially synced.
|
|
139
|
-
export async function
|
|
164
|
+
export async function addReplica(db, shard, slot, replicaVersion, { tables, indexes }) {
|
|
140
165
|
const schema = upstreamSchema(shard);
|
|
141
166
|
const synced = { tables, indexes };
|
|
142
167
|
await db `
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
168
|
+
INSERT INTO ${db(schema)}.replicas ("slot", "version", "initialSchema")
|
|
169
|
+
VALUES (${slot}, ${replicaVersion}, ${synced})`;
|
|
170
|
+
}
|
|
171
|
+
export async function getReplicaAtVersion(db, shard, replicaVersion) {
|
|
172
|
+
const result = await db `
|
|
173
|
+
SELECT * FROM ${db(upstreamSchema(shard))}.replicas
|
|
174
|
+
WHERE version = ${replicaVersion};
|
|
175
|
+
`;
|
|
176
|
+
if (result.length === 0) {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
return v.parse(result[0], replicaSchema, 'passthrough');
|
|
146
180
|
}
|
|
147
181
|
export async function getInternalShardConfig(db, shard) {
|
|
148
182
|
const result = await db `
|
|
149
|
-
SELECT "publications", "ddlDetection"
|
|
183
|
+
SELECT "publications", "ddlDetection"
|
|
150
184
|
FROM ${db(upstreamSchema(shard))}."shardConfig";
|
|
151
185
|
`;
|
|
152
186
|
assert(result.length === 1);
|
|
@@ -192,6 +226,9 @@ export async function setupTablesAndReplication(lc, tx, requested) {
|
|
|
192
226
|
await tx.unsafe(globalSetup(shard) + shardSetup(shard, metadataPublication));
|
|
193
227
|
const pubs = await getPublicationInfo(tx, allPublications);
|
|
194
228
|
await replicaIdentitiesForTablesWithoutPrimaryKeys(pubs)?.apply(lc, tx);
|
|
229
|
+
await setupTriggers(lc, tx, shard);
|
|
230
|
+
}
|
|
231
|
+
export async function setupTriggers(lc, tx, shard) {
|
|
195
232
|
try {
|
|
196
233
|
await tx.savepoint(sub => sub.unsafe(triggerSetup(shard)));
|
|
197
234
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAC,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,MAAM,EAAC,MAAM,yCAAyC,CAAC;AAC/D,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAC5D,OAAO,EAAC,OAAO,EAAC,MAAM,kDAAkD,CAAC;AAGzE,OAAO,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@ import type { LogContext } from '@rocicorp/logger';
|
|
|
2
2
|
import type { JWTPayload } from 'jose';
|
|
3
3
|
import postgres from 'postgres';
|
|
4
4
|
import * as ErrorKind from '../../../../zero-protocol/src/error-kind-enum.ts';
|
|
5
|
-
import { type InsertOp, type Mutation, type UpsertOp } from '../../../../zero-protocol/src/push.ts';
|
|
5
|
+
import { type CRUDMutation, type InsertOp, type Mutation, type UpsertOp } from '../../../../zero-protocol/src/push.ts';
|
|
6
6
|
import { type WriteAuthorizer } from '../../auth/write-authorizer.ts';
|
|
7
7
|
import { type ZeroConfig } from '../../config/zero-config.ts';
|
|
8
|
-
import type { PostgresDB } from '../../types/pg.ts';
|
|
8
|
+
import type { PostgresDB, PostgresTransaction } from '../../types/pg.ts';
|
|
9
9
|
import { type ShardID } from '../../types/shards.ts';
|
|
10
10
|
import type { Service } from '../service.ts';
|
|
11
11
|
export type MutationError = [
|
|
@@ -13,17 +13,19 @@ export type MutationError = [
|
|
|
13
13
|
desc: string
|
|
14
14
|
];
|
|
15
15
|
export interface Mutagen {
|
|
16
|
-
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined): Promise<MutationError | undefined>;
|
|
16
|
+
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined, customMutatorsEnabled: boolean): Promise<MutationError | undefined>;
|
|
17
17
|
}
|
|
18
18
|
export declare class MutagenService implements Mutagen, Service {
|
|
19
19
|
#private;
|
|
20
20
|
readonly id: string;
|
|
21
21
|
constructor(lc: LogContext, shard: ShardID, clientGroupID: string, upstream: PostgresDB, config: ZeroConfig);
|
|
22
|
-
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined): Promise<MutationError | undefined>;
|
|
22
|
+
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined, customMutatorsEnabled?: boolean): Promise<MutationError | undefined>;
|
|
23
23
|
run(): Promise<void>;
|
|
24
24
|
stop(): Promise<void>;
|
|
25
25
|
}
|
|
26
|
-
export declare function processMutation(lc: LogContext, authData: JWTPayload | undefined, db: PostgresDB, shard: ShardID, clientGroupID: string, mutation: Mutation, writeAuthorizer: WriteAuthorizer, schemaVersion: number | undefined, onTxStart?: () => void | Promise<void
|
|
26
|
+
export declare function processMutation(lc: LogContext, authData: JWTPayload | undefined, db: PostgresDB, shard: ShardID, clientGroupID: string, mutation: Mutation, writeAuthorizer: WriteAuthorizer, schemaVersion: number | undefined, onTxStart?: () => void | Promise<void>, // for testing
|
|
27
|
+
customMutatorsEnabled?: boolean): Promise<MutationError | undefined>;
|
|
28
|
+
export declare function processMutationWithTx(lc: LogContext, tx: PostgresTransaction, authData: JWTPayload | undefined, shard: ShardID, clientGroupID: string, schemaVersion: number | undefined, mutation: CRUDMutation, errorMode: boolean, authorizer: WriteAuthorizer): Promise<void>;
|
|
27
29
|
export declare function getInsertSQL(tx: postgres.TransactionSql, create: InsertOp): postgres.PendingQuery<postgres.Row[]>;
|
|
28
30
|
export declare function getUpsertSQL(tx: postgres.TransactionSql, set: UpsertOp): postgres.PendingQuery<postgres.Row[]>;
|
|
29
31
|
export declare class MutationAlreadyProcessedError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,SAAS,MAAM,kDAAkD,CAAC;AAM9E,OAAO,
|
|
1
|
+
{"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,14 +37,14 @@ export class MutagenService {
|
|
|
37
37
|
this.#limiter = new SlidingWindowLimiter(config.perUserMutationLimit.windowMs, config.perUserMutationLimit.max);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
processMutation(mutation, authData, schemaVersion) {
|
|
40
|
+
processMutation(mutation, authData, schemaVersion, customMutatorsEnabled = false) {
|
|
41
41
|
if (this.#limiter?.canDo() === false) {
|
|
42
42
|
return Promise.resolve([
|
|
43
43
|
ErrorKind.MutationRateLimited,
|
|
44
44
|
'Rate limit exceeded',
|
|
45
45
|
]);
|
|
46
46
|
}
|
|
47
|
-
return processMutation(this.#lc, authData, this.#upstream, this.#shard, this.id, mutation, this.#writeAuthorizer, schemaVersion);
|
|
47
|
+
return processMutation(this.#lc, authData, this.#upstream, this.#shard, this.id, mutation, this.#writeAuthorizer, schemaVersion, undefined, customMutatorsEnabled);
|
|
48
48
|
}
|
|
49
49
|
run() {
|
|
50
50
|
return this.#stopped.promise;
|
|
@@ -55,7 +55,8 @@ export class MutagenService {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
const MAX_SERIALIZATION_ATTEMPTS = 10;
|
|
58
|
-
export async function processMutation(lc, authData, db, shard, clientGroupID, mutation, writeAuthorizer, schemaVersion, onTxStart
|
|
58
|
+
export async function processMutation(lc, authData, db, shard, clientGroupID, mutation, writeAuthorizer, schemaVersion, onTxStart, // for testing
|
|
59
|
+
customMutatorsEnabled = false) {
|
|
59
60
|
assert(mutation.type === MutationType.CRUD, 'Only CRUD mutations are supported');
|
|
60
61
|
lc = lc.withContext('mutationID', mutation.id);
|
|
61
62
|
lc = lc.withContext('processMutation');
|
|
@@ -124,6 +125,21 @@ export async function processMutation(lc, authData, db, shard, clientGroupID, mu
|
|
|
124
125
|
lc.debug?.(e.message);
|
|
125
126
|
return undefined;
|
|
126
127
|
}
|
|
128
|
+
if (e instanceof ErrorForClient &&
|
|
129
|
+
!errorMode &&
|
|
130
|
+
e.errorBody.kind === ErrorKind.InvalidPush &&
|
|
131
|
+
customMutatorsEnabled &&
|
|
132
|
+
i < 2) {
|
|
133
|
+
// We're temporarily supporting custom mutators AND CRUD mutators at the same time.
|
|
134
|
+
// This can create a lot of OOO mutation errors since we do not know when the API server
|
|
135
|
+
// has applied a custom mutation before moving on to process CRUD mutations.
|
|
136
|
+
// The temporary workaround (since CRUD is being deprecated) is to retry the mutation
|
|
137
|
+
// after a small delay. Users are not expected to be running both CRUD and Custom mutators.
|
|
138
|
+
// They should migrate completely to custom mutators.
|
|
139
|
+
lc.info?.('Both CRUD and Custom mutators are being used at once. This is supported for now but IS NOT RECOMMENDED. Migrate completely to custom mutators.', e);
|
|
140
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
127
143
|
if (e instanceof ErrorForClient || errorMode) {
|
|
128
144
|
lc.error?.('Process mutation error', e);
|
|
129
145
|
throw e;
|
|
@@ -138,7 +154,6 @@ export async function processMutation(lc, authData, db, shard, clientGroupID, mu
|
|
|
138
154
|
break;
|
|
139
155
|
}
|
|
140
156
|
lc.error?.('Got error running mutation, re-running in error mode', e);
|
|
141
|
-
``;
|
|
142
157
|
errorMode = true;
|
|
143
158
|
i--;
|
|
144
159
|
}
|
|
@@ -149,7 +164,7 @@ export async function processMutation(lc, authData, db, shard, clientGroupID, mu
|
|
|
149
164
|
}
|
|
150
165
|
return result;
|
|
151
166
|
}
|
|
152
|
-
async function processMutationWithTx(lc, tx, authData, shard, clientGroupID, schemaVersion, mutation, errorMode, authorizer) {
|
|
167
|
+
export async function processMutationWithTx(lc, tx, authData, shard, clientGroupID, schemaVersion, mutation, errorMode, authorizer) {
|
|
153
168
|
const tasks = [];
|
|
154
169
|
async function execute(stmt) {
|
|
155
170
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AAExE,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,KAAK,SAAS,MAAM,kDAAkD,CAAC;AAC9E,OAAO,KAAK,YAAY,MAAM,qDAAqD,CAAC;AACpF,OAAO,EACL,qBAAqB,GAEtB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAON,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACtD,OAAO,EACL,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAC,8CAA8C,EAAC,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAC,SAAS,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { LogContext } from '@rocicorp/logger';
|
|
2
2
|
import { type PushBody } from '../../../../zero-protocol/src/push.ts';
|
|
3
|
-
import type { Service } from '../service.ts';
|
|
4
3
|
import { type ZeroConfig } from '../../config/zero-config.ts';
|
|
5
4
|
import type { HandlerResult } from '../../workers/connection.ts';
|
|
5
|
+
import type { Service } from '../service.ts';
|
|
6
6
|
export interface Pusher {
|
|
7
7
|
enqueuePush(clientID: string, wsID: string, push: PushBody, jwt: string | undefined): HandlerResult;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pusher.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/pusher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"pusher.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/pusher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAOjD,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAC,KAAK,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAI5D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,MAAM;IACrB,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,aAAa,CAAC;CAClB;AAED,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,YAAW,OAAO,EAAE,MAAM;;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAMlB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,SAAS;IAO5B,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,aAAa;IAmBhB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAItB;AAED,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,CAAC;AACF,KAAK,iBAAiB,GAAG,WAAW,GAAG,MAAM,CAAC;AAsO9C;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE,GAClD,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAsB1B"}
|