@rocicorp/zero 0.11.2025011402 → 0.11.2025011801
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/{chunk-AII6TS5B.js → chunk-QV5ZN4MA.js} +635 -1834
- package/out/chunk-QV5ZN4MA.js.map +7 -0
- package/out/react.js.map +2 -2
- package/out/shared/src/btree-set.d.ts +34 -0
- package/out/shared/src/btree-set.d.ts.map +1 -0
- package/out/shared/src/btree-set.js +528 -0
- package/out/shared/src/btree-set.js.map +1 -0
- package/out/shared/src/expand.d.ts +3 -0
- package/out/shared/src/expand.d.ts.map +1 -1
- package/out/solid.js +7 -2
- package/out/solid.js.map +2 -2
- package/out/zero-advanced/src/mod.d.ts +1 -1
- package/out/zero-advanced/src/mod.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-schema.d.ts +1 -1
- package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +3 -6
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.d.ts +14 -1
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +89 -6
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +3 -1
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/db/postgres-replica-identity-enum.d.ts +9 -0
- package/out/zero-cache/src/db/postgres-replica-identity-enum.d.ts.map +1 -0
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js +7 -0
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -0
- package/out/zero-cache/src/db/specs.d.ts +39 -10
- package/out/zero-cache/src/db/specs.d.ts.map +1 -1
- package/out/zero-cache/src/db/specs.js +8 -1
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +1 -1
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/life-cycle.d.ts +2 -2
- package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/server/life-cycle.js +12 -3
- package/out/zero-cache/src/server/life-cycle.js.map +1 -1
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +11 -6
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/multi/config.d.ts +14 -14
- package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/config.js +24 -2
- package/out/zero-cache/src/server/multi/config.js.map +1 -1
- package/out/zero-cache/src/server/multi/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/main.js +28 -8
- package/out/zero-cache/src/server/multi/main.js.map +1 -1
- package/out/zero-cache/src/server/multi/tenant-dispatcher.d.ts +1 -1
- package/out/zero-cache/src/server/multi/tenant-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/tenant-dispatcher.js +15 -3
- package/out/zero-cache/src/server/multi/tenant-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/replicator.js +2 -3
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +4 -4
- 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 +50 -32
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +45 -25
- 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/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.js +6 -28
- 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/published.d.ts +18 -10
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.js +14 -7
- package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +7 -4
- 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 +29 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +2 -2
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js +8 -4
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js +1 -0
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +10 -10
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +17 -15
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +2 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/mod.js +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/mod.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +38 -0
- package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/status.js +14 -0
- package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +3 -13
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +3 -10
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +7 -3
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +30 -24
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +6 -4
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +4 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -5
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +18 -10
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.js +2 -16
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/services/http-service.d.ts +1 -1
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +1 -0
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +6 -2
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +15 -5
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +4 -2
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- 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 +20 -51
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -5
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +18 -35
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/types/processes.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.js +17 -2
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js +7 -1
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/ws.d.ts +4 -0
- package/out/zero-cache/src/types/ws.d.ts.map +1 -0
- package/out/zero-cache/src/types/ws.js +19 -0
- package/out/zero-cache/src/types/ws.js.map +1 -0
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +3 -4
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.d.ts +2 -2
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
- package/out/zero-client/src/client/zero-poke-handler.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 +5 -4
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/use-query.d.ts +6 -5
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-schema/src/builder/relationship-builder.d.ts +50 -0
- package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -0
- package/out/zero-schema/src/builder/relationship-builder.js +24 -0
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
- package/out/zero-schema/src/builder/schema-builder.d.ts +40 -0
- package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -0
- package/out/zero-schema/src/builder/schema-builder.js +51 -0
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
- package/out/zero-schema/src/builder/table-builder.d.ts +69 -0
- package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -0
- package/out/zero-schema/src/builder/table-builder.js +102 -0
- package/out/zero-schema/src/builder/table-builder.js.map +1 -0
- package/out/zero-schema/src/mod.d.ts +2 -2
- package/out/zero-schema/src/mod.d.ts.map +1 -1
- package/out/zero-schema/src/permissions.d.ts +11 -12
- package/out/zero-schema/src/permissions.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.d.ts +2 -4
- package/out/zero-schema/src/schema-config.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.js +12 -61
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-schema/src/table-schema.d.ts +28 -53
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-schema/src/table-schema.js +6 -13
- package/out/zero-schema/src/table-schema.js.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +4 -3
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +5 -4
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero.js +17 -7
- package/out/zql/src/ivm/exists.d.ts +1 -1
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +3 -3
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.d.ts +1 -1
- package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-in.js +3 -2
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/filter.d.ts +1 -1
- package/out/zql/src/ivm/filter.d.ts.map +1 -1
- package/out/zql/src/ivm/filter.js +3 -3
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts +1 -1
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +2 -3
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/memory-source.js +8 -10
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/memory-storage.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +5 -0
- package/out/zql/src/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.js +9 -0
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/skip.d.ts +1 -1
- package/out/zql/src/ivm/skip.d.ts.map +1 -1
- package/out/zql/src/ivm/skip.js +2 -3
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/take.d.ts +1 -1
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +2 -3
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/view.d.ts +3 -3
- package/out/zql/src/ivm/view.d.ts.map +1 -1
- package/out/zql/src/query/auth-query.d.ts +9 -10
- package/out/zql/src/query/auth-query.d.ts.map +1 -1
- package/out/zql/src/query/auth-query.js +6 -7
- package/out/zql/src/query/auth-query.js.map +1 -1
- package/out/zql/src/query/expression.d.ts +11 -13
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js +1 -1
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +26 -25
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +76 -52
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internal.d.ts +5 -5
- package/out/zql/src/query/query-internal.d.ts.map +1 -1
- package/out/zql/src/query/query.d.ts +37 -80
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/query.js +0 -1
- package/out/zql/src/query/query.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +33 -11
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +4 -4
- package/out/btree/b+tree.d.ts +0 -471
- package/out/btree/b+tree.d.ts.map +0 -1
- package/out/btree/b+tree.js +0 -1708
- package/out/btree/b+tree.js.map +0 -1
- package/out/btree/interfaces.d.ts +0 -270
- package/out/btree/interfaces.d.ts.map +0 -1
- package/out/btree/interfaces.js +0 -3
- package/out/btree/interfaces.js.map +0 -1
- package/out/btree/src/mod.d.ts +0 -2
- package/out/btree/src/mod.d.ts.map +0 -1
- package/out/btree/src/mod.js +0 -2
- package/out/btree/src/mod.js.map +0 -1
- package/out/chunk-AII6TS5B.js.map +0 -7
- package/out/shared/src/sorted-entries.d.ts +0 -2
- package/out/shared/src/sorted-entries.d.ts.map +0 -1
- package/out/shared/src/sorted-entries.js +0 -6
- package/out/shared/src/sorted-entries.js.map +0 -1
- package/out/zero-cache/src/db/queries.d.ts +0 -24
- package/out/zero-cache/src/db/queries.d.ts.map +0 -1
- package/out/zero-cache/src/db/queries.js +0 -60
- package/out/zero-cache/src/db/queries.js.map +0 -1
- package/out/zero-schema/src/column.d.ts +0 -79
- package/out/zero-schema/src/column.d.ts.map +0 -1
- package/out/zero-schema/src/normalize-table-schema.d.ts +0 -51
- package/out/zero-schema/src/normalize-table-schema.d.ts.map +0 -1
- package/out/zero-schema/src/normalize-table-schema.js +0 -122
- package/out/zero-schema/src/normalize-table-schema.js.map +0 -1
- package/out/zero-schema/src/normalized-schema.d.ts +0 -22
- package/out/zero-schema/src/normalized-schema.d.ts.map +0 -1
- package/out/zero-schema/src/normalized-schema.js +0 -48
- package/out/zero-schema/src/normalized-schema.js.map +0 -1
- package/out/zero-schema/src/schema.d.ts +0 -9
- package/out/zero-schema/src/schema.d.ts.map +0 -1
- package/out/zero-schema/src/schema.js +0 -9
- package/out/zero-schema/src/schema.js.map +0 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { DeepReadonly } from '../../../shared/src/json.js';
|
|
2
2
|
import * as v from '../../../shared/src/valita.js';
|
|
3
|
+
import type { PrimaryKey } from '../../../zero-protocol/src/primary-key.js';
|
|
3
4
|
import type { SchemaValue } from '../../../zero-schema/src/table-schema.js';
|
|
4
5
|
export declare const pgTypeClassSchema: v.UnionType<[v.Type<"b">, v.Type<"c">, v.Type<"d">, v.Type<"e">, v.Type<"p">, v.Type<"r">, v.Type<"m">]>;
|
|
6
|
+
export declare const pgReplicaIdentitySchema: v.UnionType<[v.Type<"d">, v.Type<"n">, v.Type<"f">, v.Type<"i">]>;
|
|
5
7
|
export declare const columnSpec: v.ObjectType<{
|
|
6
8
|
pos: v.Type<number>;
|
|
7
9
|
dataType: v.Type<string>;
|
|
8
|
-
pgTypeClass: v.Optional<"e" | "
|
|
10
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
9
11
|
characterMaximumLength: v.Optional<number | null>;
|
|
10
12
|
notNull: v.Optional<boolean | null>;
|
|
11
13
|
dflt: v.Optional<string | null>;
|
|
@@ -14,46 +16,46 @@ export type ColumnSpec = Readonly<v.Infer<typeof columnSpec>>;
|
|
|
14
16
|
export declare const liteTableSpec: v.ObjectType<{
|
|
15
17
|
name: v.Type<string>;
|
|
16
18
|
columns: v.Type<Record<string, {
|
|
17
|
-
pgTypeClass?: "e" | "
|
|
19
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
18
20
|
characterMaximumLength?: number | null | undefined;
|
|
19
21
|
notNull?: boolean | null | undefined;
|
|
20
22
|
dflt?: string | null | undefined;
|
|
21
23
|
pos: number;
|
|
22
24
|
dataType: string;
|
|
23
25
|
}>>;
|
|
24
|
-
primaryKey: v.
|
|
26
|
+
primaryKey: v.Optional<string[]>;
|
|
25
27
|
}, undefined>;
|
|
26
28
|
export declare const tableSpec: v.ObjectType<Omit<{
|
|
27
29
|
name: v.Type<string>;
|
|
28
30
|
columns: v.Type<Record<string, {
|
|
29
|
-
pgTypeClass?: "e" | "
|
|
31
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
30
32
|
characterMaximumLength?: number | null | undefined;
|
|
31
33
|
notNull?: boolean | null | undefined;
|
|
32
34
|
dflt?: string | null | undefined;
|
|
33
35
|
pos: number;
|
|
34
36
|
dataType: string;
|
|
35
37
|
}>>;
|
|
36
|
-
primaryKey: v.
|
|
38
|
+
primaryKey: v.Optional<string[]>;
|
|
37
39
|
}, "schema"> & {
|
|
38
40
|
schema: v.Type<string>;
|
|
39
41
|
}, undefined>;
|
|
40
42
|
export declare const publishedTableSpec: v.ObjectType<Omit<Omit<{
|
|
41
43
|
name: v.Type<string>;
|
|
42
44
|
columns: v.Type<Record<string, {
|
|
43
|
-
pgTypeClass?: "e" | "
|
|
45
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
44
46
|
characterMaximumLength?: number | null | undefined;
|
|
45
47
|
notNull?: boolean | null | undefined;
|
|
46
48
|
dflt?: string | null | undefined;
|
|
47
49
|
pos: number;
|
|
48
50
|
dataType: string;
|
|
49
51
|
}>>;
|
|
50
|
-
primaryKey: v.
|
|
52
|
+
primaryKey: v.Optional<string[]>;
|
|
51
53
|
}, "schema"> & {
|
|
52
54
|
schema: v.Type<string>;
|
|
53
|
-
}, "publications" | "oid" | "columns"> & {
|
|
55
|
+
}, "publications" | "oid" | "columns" | "replicaIdentity"> & {
|
|
54
56
|
oid: v.Type<number>;
|
|
55
57
|
columns: v.Type<Record<string, {
|
|
56
|
-
pgTypeClass?: "e" | "
|
|
58
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
57
59
|
characterMaximumLength?: number | null | undefined;
|
|
58
60
|
notNull?: boolean | null | undefined;
|
|
59
61
|
dflt?: string | null | undefined;
|
|
@@ -61,13 +63,28 @@ export declare const publishedTableSpec: v.ObjectType<Omit<Omit<{
|
|
|
61
63
|
dataType: string;
|
|
62
64
|
typeOID: number;
|
|
63
65
|
}>>;
|
|
66
|
+
replicaIdentity: v.Optional<"n" | "d" | "f" | "i">;
|
|
64
67
|
publications: v.Type<Record<string, {
|
|
65
68
|
rowFilter: string | null;
|
|
66
69
|
}>>;
|
|
67
70
|
}, undefined>;
|
|
68
71
|
export type LiteTableSpec = Readonly<v.Infer<typeof liteTableSpec>>;
|
|
72
|
+
export type LiteTableSpecWithKeys = Omit<LiteTableSpec, 'primaryKey'> & {
|
|
73
|
+
/**
|
|
74
|
+
* The key selected to act as the "primary key". Primary keys
|
|
75
|
+
* are not explicitly set on the replica, but an appropriate
|
|
76
|
+
* unique index is required.
|
|
77
|
+
*/
|
|
78
|
+
primaryKey: PrimaryKey;
|
|
79
|
+
/**
|
|
80
|
+
* The union of all columns that are part of any unique index.
|
|
81
|
+
* This is guaranteed to include any combination of columns that
|
|
82
|
+
* can serve as a key.
|
|
83
|
+
*/
|
|
84
|
+
unionKey: PrimaryKey;
|
|
85
|
+
};
|
|
69
86
|
export type LiteAndZqlSpec = {
|
|
70
|
-
tableSpec:
|
|
87
|
+
tableSpec: LiteTableSpecWithKeys;
|
|
71
88
|
zqlSpec: Record<string, SchemaValue>;
|
|
72
89
|
};
|
|
73
90
|
export type TableSpec = Readonly<v.Infer<typeof tableSpec>>;
|
|
@@ -90,4 +107,16 @@ export declare const indexSpec: v.ObjectType<Omit<{
|
|
|
90
107
|
schema: v.Type<string>;
|
|
91
108
|
}, undefined>;
|
|
92
109
|
export type IndexSpec = DeepReadonly<v.Infer<typeof indexSpec>>;
|
|
110
|
+
export declare const publishedIndexSpec: v.ObjectType<Omit<Omit<{
|
|
111
|
+
name: v.Type<string>;
|
|
112
|
+
tableName: v.Type<string>;
|
|
113
|
+
unique: v.Type<boolean>;
|
|
114
|
+
columns: v.Type<Record<string, "ASC" | "DESC">>;
|
|
115
|
+
}, "schema"> & {
|
|
116
|
+
schema: v.Type<string>;
|
|
117
|
+
}, "isReplicaIdentity" | "isImmediate"> & {
|
|
118
|
+
isReplicaIdentity: v.Optional<boolean>;
|
|
119
|
+
isImmediate: v.Optional<boolean>;
|
|
120
|
+
}, undefined>;
|
|
121
|
+
export type PublishedIndexSpec = DeepReadonly<v.Infer<typeof publishedIndexSpec>>;
|
|
93
122
|
//# sourceMappingURL=specs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/db/specs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,CAAC,MAAM,+BAA+B,CAAC;AACnD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/db/specs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,CAAC,MAAM,+BAA+B,CAAC;AACnD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AAC1E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,0CAA0C,CAAC;AAI1E,eAAO,MAAM,iBAAiB,0GAQ7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,mEAKnC,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;aAOrB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AAM9D,eAAO,MAAM,aAAa;;;;;;;;;;;aAIxB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;aAEpB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAK7B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC;AAEpE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG;IACtE;;;;OAIG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,qBAAqB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AAE9E,eAAO,MAAM,eAAe,8CAA+C,CAAC;AAE5E,eAAO,MAAM,aAAa;;;;;aAKxB,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEjE,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE3D,eAAO,MAAM,SAAS;;;;;;;aAEpB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;;;;;;;;;;aAG7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CACnC,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as v from '../../../shared/src/valita.js';
|
|
2
|
+
import * as PostgresReplicaIdentity from './postgres-replica-identity-enum.js';
|
|
2
3
|
import * as PostgresTypeClass from './postgres-type-class-enum.js';
|
|
3
4
|
export const pgTypeClassSchema = v.union(v.literal(PostgresTypeClass.Base), v.literal(PostgresTypeClass.Composite), v.literal(PostgresTypeClass.Domain), v.literal(PostgresTypeClass.Enum), v.literal(PostgresTypeClass.Pseudo), v.literal(PostgresTypeClass.Range), v.literal(PostgresTypeClass.Multirange));
|
|
5
|
+
export const pgReplicaIdentitySchema = v.union(v.literal(PostgresReplicaIdentity.Default), v.literal(PostgresReplicaIdentity.Nothing), v.literal(PostgresReplicaIdentity.Full), v.literal(PostgresReplicaIdentity.Index));
|
|
4
6
|
export const columnSpec = v.object({
|
|
5
7
|
pos: v.number(),
|
|
6
8
|
dataType: v.string(),
|
|
@@ -15,7 +17,7 @@ const publishedColumnSpec = columnSpec.extend({
|
|
|
15
17
|
export const liteTableSpec = v.object({
|
|
16
18
|
name: v.string(),
|
|
17
19
|
columns: v.record(columnSpec),
|
|
18
|
-
primaryKey: v.array(v.string()),
|
|
20
|
+
primaryKey: v.array(v.string()).optional(),
|
|
19
21
|
});
|
|
20
22
|
export const tableSpec = liteTableSpec.extend({
|
|
21
23
|
schema: v.string(),
|
|
@@ -23,6 +25,7 @@ export const tableSpec = liteTableSpec.extend({
|
|
|
23
25
|
export const publishedTableSpec = tableSpec.extend({
|
|
24
26
|
oid: v.number(),
|
|
25
27
|
columns: v.record(publishedColumnSpec),
|
|
28
|
+
replicaIdentity: pgReplicaIdentitySchema.optional(),
|
|
26
29
|
publications: v.record(v.object({ rowFilter: v.string().nullable() })),
|
|
27
30
|
});
|
|
28
31
|
export const directionSchema = v.union(v.literal('ASC'), v.literal('DESC'));
|
|
@@ -35,4 +38,8 @@ export const liteIndexSpec = v.object({
|
|
|
35
38
|
export const indexSpec = liteIndexSpec.extend({
|
|
36
39
|
schema: v.string(),
|
|
37
40
|
});
|
|
41
|
+
export const publishedIndexSpec = indexSpec.extend({
|
|
42
|
+
isReplicaIdentity: v.boolean().optional(),
|
|
43
|
+
isImmediate: v.boolean().optional(),
|
|
44
|
+
});
|
|
38
45
|
//# sourceMappingURL=specs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../../../../zero-cache/src/db/specs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../../../../zero-cache/src/db/specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAI/B,wBAA8B,SAAS,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAI/B,wBAA8B,SAAS,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CA8Df"}
|
|
@@ -42,7 +42,7 @@ export default async function runWorker(parent, env) {
|
|
|
42
42
|
}
|
|
43
43
|
// impossible: upstream must have advanced in order for replication to be stuck.
|
|
44
44
|
assert(changeStreamer, `resetting replica did not advance replicaVersion`);
|
|
45
|
-
const changeStreamerWebServer = new ChangeStreamerHttpServer(lc, changeStreamer, { port });
|
|
45
|
+
const changeStreamerWebServer = new ChangeStreamerHttpServer(lc, changeStreamer, { port }, parent);
|
|
46
46
|
parent.send(['ready', { ready: true }]);
|
|
47
47
|
return runUntilKilled(lc, parent, changeStreamer, changeStreamerWebServer);
|
|
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":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAC,IAAI,EAAC,MAAM,6BAA6B,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,sBAAsB,EAAC,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAC,wBAAwB,EAAC,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAC,kBAAkB,EAAC,MAAM,wDAAwD,CAAC;AAE1F,OAAO,EAAC,eAAe,EAAC,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,YAAY,EACZ,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CACrC,MAAc,EACd,GAAsB;IAEtB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAC,MAAM,EAAE,iBAAiB,EAAC,CAAC,CAAC;IAEjE,mDAAmD;IACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;QAC9C,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;QAC3B,UAAU,EAAE,EAAC,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,EAAC;KAC3D,CAAC,CAAC;IACH,KAAK,OAAO,CAAC,UAAU,CACrB,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAC,EAAE,GAAG,EAAE,CAChD,QAAQ,CAAA,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CACtC,CACF,CAAC;IAEF,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,CAAC;IAC3B,IAAI,cAAiD,CAAC;IAEtD,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,EAAC,YAAY,EAAE,iBAAiB,EAAC,GAAG,MAAM,sBAAsB,CACpE,EAAE,EACF,MAAM,CAAC,QAAQ,CAAC,EAAE,EAClB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,WAAW,CACnB,CAAC;YAEF,cAAc,GAAG,MAAM,kBAAkB,CACvC,EAAE,EACF,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,SAAS,IAAI,KAAK,CACnB,CAAC;YACF,MAAM;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,KAAK,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;gBAC1C,EAAE,CAAC,IAAI,EAAE,CAAC,qBAAqB,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,4EAA4E;gBAC5E,kDAAkD;gBAClD,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACjC,SAAS,CAAC,0CAA0C;YACtD,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,gFAAgF;IAChF,MAAM,CAAC,cAAc,EAAE,kDAAkD,CAAC,CAAC;IAE3E,MAAM,uBAAuB,GAAG,IAAI,wBAAwB,CAC1D,EAAE,EACF,cAAc,EACd,EAAC,IAAI,EAAC,EACN,MAAM,CACP,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IAEtC,OAAO,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS;AACT,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { LogContext } from '@rocicorp/logger';
|
|
|
2
2
|
import type { EventEmitter } from 'stream';
|
|
3
3
|
import { HttpService, type Options } from '../services/http-service.js';
|
|
4
4
|
import type { SingletonService } from '../services/service.js';
|
|
5
|
-
import type
|
|
5
|
+
import { type Subprocess, type Worker } from '../types/processes.js';
|
|
6
6
|
/**
|
|
7
7
|
* * `user-facing` workers serve external requests and are the first to
|
|
8
8
|
* receive a `SIGTERM` or `SIGINT` signal for graceful shutdown.
|
|
@@ -24,7 +24,7 @@ export declare const FORCEFUL_SHUTDOWN: readonly ["SIGQUIT"];
|
|
|
24
24
|
*/
|
|
25
25
|
export declare class ProcessManager {
|
|
26
26
|
#private;
|
|
27
|
-
constructor(lc: LogContext, proc?: EventEmitter
|
|
27
|
+
constructor(lc: LogContext, proc?: EventEmitter);
|
|
28
28
|
done(): Promise<void>;
|
|
29
29
|
addSubprocess(proc: Subprocess, type: WorkerType, name: string): void;
|
|
30
30
|
addWorker(worker: Worker, type: WorkerType, name: string): Worker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"life-cycle.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/life-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAG5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAC,WAAW,EAAE,KAAK,OAAO,EAAC,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"life-cycle.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/life-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAG5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAC,WAAW,EAAE,KAAK,OAAO,EAAC,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;AAEtD,eAAO,MAAM,iBAAiB,gCAAiC,CAAC;AAChE,eAAO,MAAM,iBAAiB,sBAAuB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,cAAc;;gBAWb,EAAE,EAAE,UAAU,EAAE,IAAI,GAAE,YAAsB;IAiCxD,IAAI;IAoBJ,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM;IAe9D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAa3D,eAAe;IAIrB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;CAoE3C;AAED;;;;;;GAMG;AAEH,wBAAsB,cAAc,CAClC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,EAC/B,GAAG,QAAQ,EAAE,gBAAgB,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBASvD;AAID;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;;gBAO7C,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,OAAO,EACb,YAAY,SAA2B;IAmCnC,IAAI;CAIX"}
|
|
@@ -3,6 +3,7 @@ import { resolver } from '@rocicorp/resolver';
|
|
|
3
3
|
import { pid } from 'process';
|
|
4
4
|
import { HttpService } from '../services/http-service.js';
|
|
5
5
|
import { RunningState } from '../services/running-state.js';
|
|
6
|
+
import { singleProcessMode, } from '../types/processes.js';
|
|
6
7
|
export const GRACEFUL_SHUTDOWN = ['SIGTERM', 'SIGINT'];
|
|
7
8
|
export const FORCEFUL_SHUTDOWN = ['SIGQUIT'];
|
|
8
9
|
/**
|
|
@@ -18,7 +19,7 @@ export class ProcessManager {
|
|
|
18
19
|
#ready = [];
|
|
19
20
|
#runningState = new RunningState('process-manager');
|
|
20
21
|
#drainStart = 0;
|
|
21
|
-
constructor(lc, proc = process
|
|
22
|
+
constructor(lc, proc = process) {
|
|
22
23
|
this.#lc = lc.withContext('component', 'process-manager');
|
|
23
24
|
// Propagate `SIGTERM` and `SIGINT` to all user-facing workers,
|
|
24
25
|
// initiating a graceful shutdown. The parent process will
|
|
@@ -32,9 +33,14 @@ export class ProcessManager {
|
|
|
32
33
|
// to send a `SIGQUIT` to all workers. For this signal, workers are
|
|
33
34
|
// stopped immediately without draining. See `runUntilKilled()`.
|
|
34
35
|
for (const signal of FORCEFUL_SHUTDOWN) {
|
|
35
|
-
proc.on(signal, () => exit(-1));
|
|
36
|
+
proc.on(signal, () => this.#exit(-1));
|
|
36
37
|
}
|
|
37
|
-
this.#exitImpl =
|
|
38
|
+
this.#exitImpl = (code) => {
|
|
39
|
+
if (singleProcessMode()) {
|
|
40
|
+
return proc.emit('exit', code); // For unit / integration tests.
|
|
41
|
+
}
|
|
42
|
+
process.exit(code);
|
|
43
|
+
};
|
|
38
44
|
}
|
|
39
45
|
done() {
|
|
40
46
|
return this.#runningState.stopped();
|
|
@@ -136,6 +142,9 @@ export class ProcessManager {
|
|
|
136
142
|
* @returns a Promise that resolves/rejects when any of the services stops/throws.
|
|
137
143
|
*/
|
|
138
144
|
export async function runUntilKilled(lc, parent, ...services) {
|
|
145
|
+
if (services.length === 0) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
139
148
|
for (const signal of [...GRACEFUL_SHUTDOWN, ...FORCEFUL_SHUTDOWN]) {
|
|
140
149
|
parent.once(signal, () => {
|
|
141
150
|
const GRACEFUL_SIGNALS = GRACEFUL_SHUTDOWN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"life-cycle.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/life-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAe,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"life-cycle.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/life-cycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/main.ts"],"names":[],"mappings":"AAcA,OAAO,EAIL,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAgB/B,wBAA8B,SAAS,CACrC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CA4If"}
|
|
@@ -2,7 +2,9 @@ import { resolver } from '@rocicorp/resolver';
|
|
|
2
2
|
import { availableParallelism } from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { getZeroConfig } from '../config/zero-config.js';
|
|
5
|
+
import { getSubscriberContext } from '../services/change-streamer/change-streamer-http.js';
|
|
5
6
|
import { SyncDispatcher } from '../services/dispatcher/sync-dispatcher.js';
|
|
7
|
+
import { installWebSocketHandoff } from '../services/dispatcher/websocket-handoff.js';
|
|
6
8
|
import { restoreReplica, startReplicaBackupProcess, } from '../services/litestream/commands.js';
|
|
7
9
|
import { initViewSyncerSchema } from '../services/view-syncer/schema/init.js';
|
|
8
10
|
import { pgClient } from '../types/pg.js';
|
|
@@ -49,12 +51,9 @@ export default async function runWorker(parent, env) {
|
|
|
49
51
|
await restoreReplica(lc, config, runChangeStreamer ? 1 : 10, 3000);
|
|
50
52
|
}
|
|
51
53
|
const { promise: changeStreamerReady, resolve } = resolver();
|
|
52
|
-
|
|
53
|
-
loadWorker('./server/change-streamer.ts', 'supporting').once('message', resolve)
|
|
54
|
-
|
|
55
|
-
else {
|
|
56
|
-
resolve();
|
|
57
|
-
}
|
|
54
|
+
const changeStreamer = runChangeStreamer
|
|
55
|
+
? loadWorker('./server/change-streamer.ts', 'supporting').once('message', resolve)
|
|
56
|
+
: resolve();
|
|
58
57
|
if (numSyncers) {
|
|
59
58
|
// Technically, setting up the CVR DB schema is the responsibility of the Syncer,
|
|
60
59
|
// but it is done here in the main thread because it is wasteful to have all of
|
|
@@ -94,6 +93,12 @@ export default async function runWorker(parent, env) {
|
|
|
94
93
|
if (numSyncers) {
|
|
95
94
|
mainServices.push(new SyncDispatcher(lc, parent, syncers, { port }));
|
|
96
95
|
}
|
|
96
|
+
else if (changeStreamer && parent) {
|
|
97
|
+
// When running as the replication-manager, the dispatcher process
|
|
98
|
+
// hands off websockets from the main (tenant) dispatcher to the
|
|
99
|
+
// change-streamer process.
|
|
100
|
+
installWebSocketHandoff(lc, req => ({ payload: getSubscriberContext(req), receiver: changeStreamer }), parent);
|
|
101
|
+
}
|
|
97
102
|
parent?.send(['ready', { ready: true }]);
|
|
98
103
|
try {
|
|
99
104
|
await runUntilKilled(lc, parent ?? process, ...mainServices);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/main.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -172,20 +172,20 @@ export declare const multiConfigSchema: {
|
|
|
172
172
|
hidden: boolean;
|
|
173
173
|
};
|
|
174
174
|
};
|
|
175
|
-
declare const tenantsSchema: v.
|
|
176
|
-
tenants:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
env:
|
|
181
|
-
[x: string]:
|
|
182
|
-
|
|
183
|
-
ZERO_REPLICA_FILE:
|
|
184
|
-
ZERO_CVR_DB:
|
|
185
|
-
ZERO_CHANGE_DB:
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
175
|
+
declare const tenantsSchema: v.Type<{
|
|
176
|
+
tenants: {
|
|
177
|
+
host?: string | undefined;
|
|
178
|
+
path?: string | undefined;
|
|
179
|
+
id: string;
|
|
180
|
+
env: {
|
|
181
|
+
[x: string]: string | undefined;
|
|
182
|
+
[x: number]: string | undefined;
|
|
183
|
+
ZERO_REPLICA_FILE: string;
|
|
184
|
+
ZERO_CVR_DB: string;
|
|
185
|
+
ZERO_CHANGE_DB: string;
|
|
186
|
+
};
|
|
187
|
+
}[];
|
|
188
|
+
}>;
|
|
189
189
|
export type MultiZeroConfig = v.Infer<typeof tenantsSchema> & Omit<Config<typeof multiConfigSchema>, 'tenantsJSON'>;
|
|
190
190
|
export declare function getMultiZeroConfig(processEnv?: NodeJS.ProcessEnv, argv?: string[]): {
|
|
191
191
|
config: MultiZeroConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AAKtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AAKtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C7B,CAAC;AA8BF,QAAA,MAAM,aAAa;;;;;;;;;;;;;EAkBf,CAAC;AAEL,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GACzD,IAAI,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,EAAE,aAAa,CAAC,CAAC;AAExD,wBAAgB,kBAAkB,CAChC,UAAU,GAAE,MAAM,CAAC,UAAwB,EAC3C,IAAI,WAAwB,GAC3B;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAC,CAgBnD"}
|
|
@@ -20,7 +20,14 @@ export const multiConfigSchema = {
|
|
|
20
20
|
` * matching is necessary.`,
|
|
21
21
|
` */`,
|
|
22
22
|
` tenants: \\{`,
|
|
23
|
-
`
|
|
23
|
+
` /**`,
|
|
24
|
+
` * Unique per-tenant ID used internally for multi-node dispatch.`,
|
|
25
|
+
` *`,
|
|
26
|
+
` * The ID may only contain alphanumeric characters, underscores, and hyphens.`,
|
|
27
|
+
` * Note that changing the ID may result in temporary disruption in multi-node`,
|
|
28
|
+
` * mode, when the configs in the view-syncer and replication-manager differ.`,
|
|
29
|
+
` */`,
|
|
30
|
+
` id: string;`,
|
|
24
31
|
` host?: string; // case-insensitive full Host: header match`,
|
|
25
32
|
` path?: string; // first path component, with or without leading slash`,
|
|
26
33
|
``,
|
|
@@ -64,8 +71,23 @@ const tenantSchema = v.object({
|
|
|
64
71
|
['ZERO_CHANGE_DB']: v.string(),
|
|
65
72
|
}),
|
|
66
73
|
});
|
|
67
|
-
const
|
|
74
|
+
const ID_REGEX = /^[A-Za-z0-9_-]+$/;
|
|
75
|
+
const tenantsSchema = v
|
|
76
|
+
.object({
|
|
68
77
|
tenants: v.array(tenantSchema),
|
|
78
|
+
})
|
|
79
|
+
.chain(val => {
|
|
80
|
+
const ids = new Set();
|
|
81
|
+
for (const { id } of val.tenants) {
|
|
82
|
+
if (!ID_REGEX.test(id)) {
|
|
83
|
+
return v.err(`Invalid tenant ID "${id}". Must be non-empty, and contain only alphanumeric characters, underscores, and hyphens`);
|
|
84
|
+
}
|
|
85
|
+
if (ids.has(id)) {
|
|
86
|
+
return v.err(`Multiple tenants with ID ${id}`);
|
|
87
|
+
}
|
|
88
|
+
ids.add(id);
|
|
89
|
+
}
|
|
90
|
+
return v.ok(val);
|
|
69
91
|
});
|
|
70
92
|
export function getMultiZeroConfig(processEnv = process.env, argv = process.argv.slice(2)) {
|
|
71
93
|
const { config: { tenantsJSON, ...config }, env, } = parseOptionsAdvanced(multiConfigSchema, argv, ENV_VAR_PREFIX, false, true, // allowPartial, as options can be merged with each tenant's `env`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,oBAAoB,GAErB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;AAExD,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,WAAW;IAEd,WAAW,EAAE;QACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAE;YACJ,kFAAkF;YAClF,EAAE;YACF,KAAK;YACL,OAAO;YACP,sFAAsF;YACtF,wFAAwF;YACxF,uEAAuE;YACvE,MAAM;YACN,2EAA2E;YAC3E,wEAAwE;YACxE,6BAA6B;YAC7B,OAAO;YACP,gBAAgB;YAChB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,oBAAoB,GAErB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;AAExD,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,WAAW;IAEd,WAAW,EAAE;QACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAE;YACJ,kFAAkF;YAClF,EAAE;YACF,KAAK;YACL,OAAO;YACP,sFAAsF;YACtF,wFAAwF;YACxF,uEAAuE;YACvE,MAAM;YACN,2EAA2E;YAC3E,wEAAwE;YACxE,6BAA6B;YAC7B,OAAO;YACP,gBAAgB;YAChB,UAAU;YACV,uEAAuE;YACvE,SAAS;YACT,oFAAoF;YACpF,oFAAoF;YACpF,mFAAmF;YACnF,UAAU;YACV,kBAAkB;YAClB,kEAAkE;YAClE,6EAA6E;YAC7E,EAAE;YACF,UAAU;YACV,yFAAyF;YACzF,yEAAyE;YACzE,UAAU;YACV,eAAe;YACf,kCAAkC;YAClC,iCAAiC;YACjC,4BAA4B;YAC5B,+BAA+B;YAC/B,YAAY;YACZ,WAAW;YACX,UAAU;YACV,KAAK;SACN;KACF;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAE7D,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACzB,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,CAAC,CAAC,EAAE;QACT,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC,GAAG,CAAC,kDAAkD,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;SACD,QAAQ,EAAE;IACb,GAAG,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;QAClC,2EAA2E;QAC3E,wEAAwE;QACxE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QACjC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QAC3B,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;KAC/B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AAEpC,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;CAC/B,CAAC;KACD,KAAK,CAAC,GAAG,CAAC,EAAE;IACX,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,KAAK,MAAM,EAAC,EAAE,EAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC,GAAG,CACV,sBAAsB,EAAE,0FAA0F,CACnH,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAKL,MAAM,UAAU,kBAAkB,CAChC,aAAgC,OAAO,CAAC,GAAG,EAC3C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5B,MAAM,EACJ,MAAM,EAAE,EAAC,WAAW,EAAE,GAAG,MAAM,EAAC,EAChC,GAAG,GACJ,GAAG,oBAAoB,CACtB,iBAAiB,EACjB,IAAI,EACJ,cAAc,EACd,KAAK,EACL,IAAI,EAAE,kEAAkE;IACxE,UAAU,CACX,CAAC;IACF,MAAM,aAAa,GAAG,WAAW;QAC/B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;QACjD,CAAC,CAAC,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC;IAClB,OAAO,EAAC,MAAM,EAAE,EAAC,GAAG,MAAM,EAAE,GAAG,aAAa,EAAC,EAAE,GAAG,EAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/main.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/main.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAGvB,OAAO,EAIL,KAAK,MAAM,EACZ,MAAM,0BAA0B,CAAC;AAalC,wBAA8B,SAAS,CACrC,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAqGf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import 'dotenv/config'; // Imports ENV variables from .env
|
|
2
|
+
import { assert } from '../../../../shared/src/asserts.js';
|
|
2
3
|
import { childWorker, parentWorker, singleProcessMode, } from '../../types/processes.js';
|
|
3
4
|
import { orTimeout } from '../../types/timeout.js';
|
|
4
5
|
import { exitAfter, HeartbeatMonitor, ProcessManager, runUntilKilled, } from '../life-cycle.js';
|
|
@@ -11,7 +12,7 @@ export default async function runWorker(parent, env) {
|
|
|
11
12
|
const { config, env: baseEnv } = getMultiZeroConfig(env);
|
|
12
13
|
const lc = createLogContext(config, { worker: 'main' });
|
|
13
14
|
const processes = new ProcessManager(lc, parent ?? process);
|
|
14
|
-
const { port, heartbeatMonitorPort } = config;
|
|
15
|
+
const { port, changeStreamerPort = port + 1, heartbeatMonitorPort = port + 2, } = config;
|
|
15
16
|
let { taskID } = config;
|
|
16
17
|
if (!taskID) {
|
|
17
18
|
taskID = await getTaskID(lc);
|
|
@@ -31,19 +32,36 @@ export default async function runWorker(parent, env) {
|
|
|
31
32
|
},
|
|
32
33
|
});
|
|
33
34
|
}
|
|
35
|
+
// In the multi-node configuration, determine if this process
|
|
36
|
+
// should be dispatching sync requests (i.e. by `host` / `port`),
|
|
37
|
+
// or change-streamer requests (i.e. by tenant `id`).
|
|
38
|
+
const runAsReplicationManager = config.numSyncWorkers === 0;
|
|
34
39
|
// Start the first tenant at (port + 1 + 2) unless explicitly
|
|
35
40
|
// overridden by its own ZERO_PORT ...
|
|
36
41
|
let tenantPort = port + 1;
|
|
37
|
-
const tenants = config.tenants.map(tenant =>
|
|
38
|
-
|
|
39
|
-
worker: childWorker('./server/main.ts', {
|
|
42
|
+
const tenants = config.tenants.map(tenant => {
|
|
43
|
+
const mergedEnv = {
|
|
40
44
|
...process.env, // propagate all ENV variables from this process
|
|
41
45
|
...baseEnv, // defaults
|
|
42
46
|
['ZERO_TENANT_ID']: tenant.id,
|
|
43
47
|
['ZERO_PORT']: String((tenantPort += 2)), // and bump the port by 2 thereafter.
|
|
44
48
|
...tenant.env, // overrides
|
|
45
|
-
}
|
|
46
|
-
|
|
49
|
+
};
|
|
50
|
+
if (runAsReplicationManager) {
|
|
51
|
+
// Sanity-check. It doesn't make sense to run sync workers in the
|
|
52
|
+
// replication-manager.
|
|
53
|
+
assert(mergedEnv['ZERO_NUM_SYNC_WORKERS'] === '0', `Tenant ${tenant.id} cannot run sync workers in the replication-manager`);
|
|
54
|
+
}
|
|
55
|
+
const changeStreamerURI = mergedEnv['ZERO_CHANGE_STREAMER_URI'];
|
|
56
|
+
if (changeStreamerURI && multiMode) {
|
|
57
|
+
// Requests from the view-syncer to the replication-manager are
|
|
58
|
+
// delineated/dispatched by the tenant ID as the first path component.
|
|
59
|
+
mergedEnv['ZERO_CHANGE_STREAMER_URI'] += changeStreamerURI.endsWith('/')
|
|
60
|
+
? tenant.id
|
|
61
|
+
: `/${tenant.id}`;
|
|
62
|
+
}
|
|
63
|
+
return { ...tenant, worker: childWorker('./server/main.ts', mergedEnv) };
|
|
64
|
+
});
|
|
47
65
|
for (const tenant of tenants) {
|
|
48
66
|
processes.addWorker(tenant.worker, 'user-facing', tenant.id);
|
|
49
67
|
}
|
|
@@ -56,10 +74,12 @@ export default async function runWorker(parent, env) {
|
|
|
56
74
|
lc.info?.(`zero-cache${s} ready (${Date.now() - startMs} ms)`);
|
|
57
75
|
}
|
|
58
76
|
const mainServices = [
|
|
59
|
-
new HeartbeatMonitor(lc, { port: heartbeatMonitorPort
|
|
77
|
+
new HeartbeatMonitor(lc, { port: heartbeatMonitorPort }),
|
|
60
78
|
];
|
|
61
79
|
if (multiMode) {
|
|
62
|
-
mainServices.push(new TenantDispatcher(lc, tenants, {
|
|
80
|
+
mainServices.push(new TenantDispatcher(lc, runAsReplicationManager, tenants, {
|
|
81
|
+
port: runAsReplicationManager ? changeStreamerPort : port,
|
|
82
|
+
}));
|
|
63
83
|
}
|
|
64
84
|
parent?.send(['ready', { ready: true }]);
|
|
65
85
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/main.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC,CAAC,kCAAkC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ type Tenant = {
|
|
|
10
10
|
export declare class TenantDispatcher extends HttpService {
|
|
11
11
|
#private;
|
|
12
12
|
readonly id = "tenant-dispatcher";
|
|
13
|
-
constructor(lc: LogContext, tenants: Tenant[], opts: Options);
|
|
13
|
+
constructor(lc: LogContext, runAsReplicationManager: boolean, tenants: Tenant[], opts: Options);
|
|
14
14
|
}
|
|
15
15
|
export {};
|
|
16
16
|
//# sourceMappingURL=tenant-dispatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-dispatcher.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/tenant-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,WAAW,EAAE,KAAK,OAAO,EAAC,MAAM,gCAAgC,CAAC;AAEzE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAErD,KAAK,MAAM,GAAG;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,WAAW;;IAC/C,QAAQ,CAAC,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"tenant-dispatcher.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/server/multi/tenant-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,WAAW,EAAE,KAAK,OAAO,EAAC,MAAM,gCAAgC,CAAC;AAEzE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAErD,KAAK,MAAM,GAAG;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,WAAW;;IAC/C,QAAQ,CAAC,EAAE,uBAAuB;gBAKhC,EAAE,EAAE,UAAU,EACd,uBAAuB,EAAE,OAAO,EAChC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,OAAO;CAyChB"}
|