@rocicorp/zero 1.12.0-canary.6 → 1.12.0-canary.7
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/zero/package.js +10 -10
- package/out/zero/package.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +9 -2
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +1 -0
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-restore.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source-init.js +17 -9
- package/out/zero-cache/src/services/change-source/pg/change-source-init.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/server-start-metrics.js +1 -1
- package/out/zero-cache/src/services/change-streamer/server-start-metrics.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +1 -2
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +19 -2
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-protocol/src/inspect-down.d.ts +81 -81
- package/out/zero-protocol/src/up.d.ts +60 -60
- package/package.json +10 -10
- package/out/shared/src/cache.d.ts +0 -22
- package/out/shared/src/cache.d.ts.map +0 -1
- package/out/shared/src/custom-key-map.d.ts +0 -26
- package/out/shared/src/custom-key-map.d.ts.map +0 -1
- package/out/shared/src/custom-key-set.d.ts +0 -25
- package/out/shared/src/custom-key-set.d.ts.map +0 -1
- package/out/shared/src/logging-test-utils.d.ts +0 -12
- package/out/shared/src/logging-test-utils.d.ts.map +0 -1
- package/out/shared/src/queue.d.ts +0 -53
- package/out/shared/src/queue.d.ts.map +0 -1
- package/out/shared/src/ring-buffer.d.ts +0 -42
- package/out/shared/src/ring-buffer.d.ts.map +0 -1
- package/out/shared/src/sorted-entries.d.ts +0 -2
- package/out/shared/src/sorted-entries.d.ts.map +0 -1
- package/out/zero/src/server/change-streamer.d.ts +0 -2
- package/out/zero/src/server/change-streamer.d.ts.map +0 -1
- package/out/zero/src/server/main.d.ts +0 -2
- package/out/zero/src/server/main.d.ts.map +0 -1
- package/out/zero/src/server/reaper.d.ts +0 -2
- package/out/zero/src/server/reaper.d.ts.map +0 -1
- package/out/zero/src/server/replicator.d.ts +0 -2
- package/out/zero/src/server/replicator.d.ts.map +0 -1
- package/out/zero/src/server/syncer.d.ts +0 -2
- package/out/zero/src/server/syncer.d.ts.map +0 -1
- package/out/zero-cache/src/auth/jwt.d.ts +0 -12
- package/out/zero-cache/src/auth/jwt.d.ts.map +0 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts +0 -17
- package/out/zero-cache/src/auth/load-permissions.d.ts.map +0 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts +0 -28
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +0 -1
- package/out/zero-cache/src/config/server-context.d.ts +0 -16
- package/out/zero-cache/src/config/server-context.d.ts.map +0 -1
- package/out/zero-cache/src/custom/fetch.d.ts +0 -38
- package/out/zero-cache/src/custom/fetch.d.ts.map +0 -1
- package/out/zero-cache/src/custom/metrics.d.ts +0 -31
- package/out/zero-cache/src/custom/metrics.d.ts.map +0 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts +0 -68
- package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +0 -1
- package/out/zero-cache/src/db/create.d.ts +0 -12
- package/out/zero-cache/src/db/create.d.ts.map +0 -1
- package/out/zero-cache/src/db/delete-lite-db.d.ts +0 -2
- package/out/zero-cache/src/db/delete-lite-db.d.ts.map +0 -1
- package/out/zero-cache/src/db/index-predicate.d.ts +0 -4
- package/out/zero-cache/src/db/index-predicate.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration-lite.d.ts +0 -78
- package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration.d.ts +0 -80
- package/out/zero-cache/src/db/migration.d.ts.map +0 -1
- package/out/zero-cache/src/db/pg-copy-binary.d.ts +0 -101
- package/out/zero-cache/src/db/pg-copy-binary.d.ts.map +0 -1
- package/out/zero-cache/src/db/pg-copy.d.ts +0 -30
- package/out/zero-cache/src/db/pg-copy.d.ts.map +0 -1
- package/out/zero-cache/src/db/pg-type-parser.d.ts +0 -15
- package/out/zero-cache/src/db/pg-type-parser.d.ts.map +0 -1
- package/out/zero-cache/src/db/transaction-pool.d.ts +0 -205
- package/out/zero-cache/src/db/transaction-pool.d.ts.map +0 -1
- package/out/zero-cache/src/db/warmup.d.ts +0 -4
- package/out/zero-cache/src/db/warmup.d.ts.map +0 -1
- package/out/zero-cache/src/observability/events.d.ts +0 -15
- package/out/zero-cache/src/observability/events.d.ts.map +0 -1
- package/out/zero-cache/src/observability/log-throttle.d.ts +0 -44
- package/out/zero-cache/src/observability/log-throttle.d.ts.map +0 -1
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts +0 -21
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +0 -1
- package/out/zero-cache/src/server/change-streamer.d.ts +0 -3
- package/out/zero-cache/src/server/change-streamer.d.ts.map +0 -1
- package/out/zero-cache/src/server/inspector-delegate.d.ts +0 -71
- package/out/zero-cache/src/server/inspector-delegate.d.ts.map +0 -1
- package/out/zero-cache/src/server/main.d.ts +0 -3
- package/out/zero-cache/src/server/main.d.ts.map +0 -1
- package/out/zero-cache/src/server/otel-diag-logger.d.ts +0 -16
- package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +0 -1
- package/out/zero-cache/src/server/otel-start.d.ts +0 -3
- package/out/zero-cache/src/server/otel-start.d.ts.map +0 -1
- package/out/zero-cache/src/server/priority-op.d.ts +0 -8
- package/out/zero-cache/src/server/priority-op.d.ts.map +0 -1
- package/out/zero-cache/src/server/reaper.d.ts +0 -3
- package/out/zero-cache/src/server/reaper.d.ts.map +0 -1
- package/out/zero-cache/src/server/replicator.d.ts +0 -10
- package/out/zero-cache/src/server/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/server/slot-keeper.d.ts +0 -26
- package/out/zero-cache/src/server/slot-keeper.d.ts.map +0 -1
- package/out/zero-cache/src/server/syncer-assigner.d.ts +0 -14
- package/out/zero-cache/src/server/syncer-assigner.d.ts.map +0 -1
- package/out/zero-cache/src/server/syncer.d.ts +0 -3
- package/out/zero-cache/src/server/syncer.d.ts.map +0 -1
- package/out/zero-cache/src/server/worker-dispatcher.d.ts +0 -17
- package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +0 -1
- package/out/zero-cache/src/services/analyze.d.ts +0 -9
- package/out/zero-cache/src/services/analyze.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/change-source.d.ts +0 -39
- package/out/zero-cache/src/services/change-source/change-source.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts +0 -57
- package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts +0 -55
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts +0 -24
- package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts +0 -140
- package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +0 -14
- package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +0 -25
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts +0 -14
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts +0 -36
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts +0 -72
- package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -127
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/fork-request.d.ts +0 -57
- package/out/zero-cache/src/services/change-source/pg/fork-request.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +0 -155
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +0 -17
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts +0 -28
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts +0 -76
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts +0 -169
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts +0 -16
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts +0 -15
- package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +0 -127
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +0 -9
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts +0 -68
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts +0 -72
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts +0 -50
- package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts +0 -12
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +0 -57
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +0 -98
- package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts +0 -34
- package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts +0 -34
- package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts +0 -158
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts +0 -19
- package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -78
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -152
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +0 -575
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts +0 -24
- package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts +0 -15
- package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +0 -49
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts +0 -80
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts +0 -88
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts +0 -15
- package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts +0 -243
- package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +0 -6
- package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +0 -152
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/server-start-metrics.d.ts +0 -33
- package/out/zero-cache/src/services/change-streamer/server-start-metrics.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts +0 -11
- package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts +0 -92
- package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts +0 -36
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +0 -22
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts +0 -99
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts +0 -83
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts +0 -121
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts +0 -73
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts +0 -62
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts +0 -114
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +0 -276
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/subscribe.d.ts +0 -485
- package/out/zero-cache/src/services/change-streamer/subscribe.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +0 -205
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts +0 -52
- package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts.map +0 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +0 -57
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts +0 -77
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/litestream-controller.d.ts +0 -78
- package/out/zero-cache/src/services/litestream/litestream-controller.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/metrics.d.ts +0 -31
- package/out/zero-cache/src/services/litestream/metrics.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/restore-progress.d.ts +0 -24
- package/out/zero-cache/src/services/litestream/restore-progress.d.ts.map +0 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +0 -40
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +0 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +0 -63
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/change-log-db.d.ts +0 -368
- package/out/zero-cache/src/services/replicator/change-log-db.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts +0 -56
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts +0 -37
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/drain-handler.d.ts +0 -82
- package/out/zero-cache/src/services/replicator/drain-handler.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +0 -25
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/notifier.d.ts +0 -9
- package/out/zero-cache/src/services/replicator/notifier.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/replication-status.d.ts +0 -71
- package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +0 -86
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts +0 -55
- package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts +0 -132
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts +0 -120
- package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +0 -111
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +0 -1
- package/out/zero-cache/src/services/run-ast.d.ts +0 -39
- package/out/zero-cache/src/services/run-ast.d.ts.map +0 -1
- package/out/zero-cache/src/services/runner.d.ts +0 -19
- package/out/zero-cache/src/services/runner.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +0 -17
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts +0 -26
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts +0 -79
- package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +0 -97
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts +0 -18
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts +0 -184
- package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +0 -22
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +0 -128
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -294
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts +0 -81
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +0 -45
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts +0 -53
- package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts +0 -33
- package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts +0 -51
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +0 -34
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -296
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts +0 -7
- package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/push-cost.d.ts +0 -132
- package/out/zero-cache/src/services/view-syncer/push-cost.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts +0 -55
- package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/query-covering.d.ts +0 -28
- package/out/zero-cache/src/services/view-syncer/query-covering.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/query-shape.d.ts +0 -25
- package/out/zero-cache/src/services/view-syncer/query-shape.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/query-stats.d.ts +0 -89
- package/out/zero-cache/src/services/view-syncer/query-stats.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +0 -90
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts +0 -17
- package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +0 -86
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +0 -5
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +0 -563
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts +0 -95
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +0 -420
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/tracer.d.ts +0 -2
- package/out/zero-cache/src/services/view-syncer/tracer.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +0 -10
- package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +0 -133
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +0 -1
- package/out/zero-cache/src/types/downstream.d.ts +0 -11
- package/out/zero-cache/src/types/downstream.d.ts.map +0 -1
- package/out/zero-cache/src/types/error-with-level.d.ts +0 -9
- package/out/zero-cache/src/types/error-with-level.d.ts.map +0 -1
- package/out/zero-cache/src/types/pg-patch.d.ts +0 -21
- package/out/zero-cache/src/types/pg-patch.d.ts.map +0 -1
- package/out/zero-cache/src/types/pg-versions.d.ts +0 -3
- package/out/zero-cache/src/types/pg-versions.d.ts.map +0 -1
- package/out/zero-cache/src/types/poke-chunk.d.ts +0 -18
- package/out/zero-cache/src/types/poke-chunk.d.ts.map +0 -1
- package/out/zero-cache/src/types/streams.d.ts +0 -115
- package/out/zero-cache/src/types/streams.d.ts.map +0 -1
- package/out/zero-cache/src/types/subscription.d.ts +0 -197
- package/out/zero-cache/src/types/subscription.d.ts.map +0 -1
- package/out/zero-cache/src/workers/connect-params.d.ts +0 -28
- package/out/zero-cache/src/workers/connect-params.d.ts.map +0 -1
- package/out/zero-cache/src/workers/connection.d.ts +0 -77
- package/out/zero-cache/src/workers/connection.d.ts.map +0 -1
- package/out/zero-cache/src/workers/replicator.d.ts +0 -57
- package/out/zero-cache/src/workers/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts +0 -14
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +0 -1
- package/out/zero-cache/src/workers/syncer.d.ts +0 -67
- package/out/zero-cache/src/workers/syncer.d.ts.map +0 -1
- package/out/zero-events/src/index.d.ts +0 -27
- package/out/zero-events/src/index.d.ts.map +0 -1
- package/out/zero-events/src/json.d.ts +0 -20
- package/out/zero-events/src/json.d.ts.map +0 -1
- package/out/zero-events/src/status.d.ts +0 -144
- package/out/zero-events/src/status.d.ts.map +0 -1
- package/out/zqlite/src/database-storage.d.ts +0 -43
- package/out/zqlite/src/database-storage.d.ts.map +0 -1
- package/out/zqlite/src/explain-queries.d.ts +0 -4
- package/out/zqlite/src/explain-queries.d.ts.map +0 -1
- package/out/zqlite/src/internal/sql-inline.d.ts +0 -13
- package/out/zqlite/src/internal/sql-inline.d.ts.map +0 -1
- package/out/zqlite/src/resolve-scalar-subqueries.d.ts +0 -72
- package/out/zqlite/src/resolve-scalar-subqueries.d.ts.map +0 -1
- package/out/zqlite/src/sqlite-cost-model.d.ts +0 -17
- package/out/zqlite/src/sqlite-cost-model.d.ts.map +0 -1
- package/out/zqlite/src/sqlite-stat-fanout.d.ts +0 -121
- package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import type { Source } from '../../types/streams.ts';
|
|
3
|
-
import type { SingletonService } from '../service.ts';
|
|
4
|
-
export type BackedUpWatermark = {
|
|
5
|
-
watermark: string;
|
|
6
|
-
writeTimeMs?: number | undefined;
|
|
7
|
-
backupTimeMs: number;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Determines which watermarks of the replica are backed up, by whatever means
|
|
11
|
-
* the backup (or its absence) allows.
|
|
12
|
-
*/
|
|
13
|
-
export interface BackupPoller {
|
|
14
|
-
/**
|
|
15
|
-
* Starts polling, returning the stream of backed-up watermarks. Must only
|
|
16
|
-
* be called once.
|
|
17
|
-
*/
|
|
18
|
-
start(): Source<BackedUpWatermark>;
|
|
19
|
-
/**
|
|
20
|
-
* Requests that the replica be backed up through `watermark` promptly,
|
|
21
|
-
* rather than at the poller's regular cadence, once the replica has reached
|
|
22
|
-
* it. The resulting watermark is emitted on the stream as usual. Pollers
|
|
23
|
-
* that cannot initiate backups do not implement this.
|
|
24
|
-
*/
|
|
25
|
-
requestSync?(watermark: string): void;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* The interface through which the change-streamer consumes backed-up
|
|
29
|
-
* watermarks and requests prompt backups (see {@link BackupMonitor}).
|
|
30
|
-
*/
|
|
31
|
-
export type BackupSource = Pick<BackupMonitor, 'backups' | 'requestSync'>;
|
|
32
|
-
/**
|
|
33
|
-
* Relays the watermarks backed up by a {@link BackupPoller} to the
|
|
34
|
-
* change-streamer, which consumes them (see {@link backups}) and requests
|
|
35
|
-
* prompt backups (see {@link requestSync}) as needed.
|
|
36
|
-
*/
|
|
37
|
-
export declare class BackupMonitor implements SingletonService {
|
|
38
|
-
#private;
|
|
39
|
-
readonly id = "backup-monitor";
|
|
40
|
-
constructor(lc: LogContext, poller: BackupPoller, replicaFile: string);
|
|
41
|
-
firstBackupReceived(): Promise<void>;
|
|
42
|
-
/**
|
|
43
|
-
* The stream of backed-up watermarks, each later than the last, coalesced
|
|
44
|
-
* to the latest one that has not been consumed. It ends when the monitor
|
|
45
|
-
* stops.
|
|
46
|
-
*/
|
|
47
|
-
backups(): Source<BackedUpWatermark>;
|
|
48
|
-
/**
|
|
49
|
-
* Requests that the replica be backed up through `watermark` promptly, if
|
|
50
|
-
* the poller supports it (see {@link BackupPoller.requestSync}). A no-op
|
|
51
|
-
* unless the monitor is running.
|
|
52
|
-
*/
|
|
53
|
-
requestSync(watermark: string): void;
|
|
54
|
-
run(): Promise<void>;
|
|
55
|
-
stop(): Promise<void>;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=backup-monitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backup-monitor.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/backup-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC;AAE1E;;;;GAIG;AACH,qBAAa,aAAc,YAAW,gBAAgB;;IACpD,QAAQ,CAAC,EAAE,oBAAoB;IAwB/B,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAIpE;IAED,mBAAmB,kBAElB;IAED;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAEnC;IAED;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,QAY5B;IAEK,GAAG,kBAsCR;IAqDD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAKpB;CA+BF"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import type { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import { type PreSerialized } from '../../types/streams.ts';
|
|
3
|
-
import type { WatermarkedChange } from './change-streamer.ts';
|
|
4
|
-
import type { Subscriber } from './subscriber.ts';
|
|
5
|
-
export type BroadcastReleaseMode = 'all-subscribers' | 'consensus-timeout';
|
|
6
|
-
export type PreSerializedBatch = PreSerialized & {
|
|
7
|
-
readonly changes: readonly WatermarkedChange[];
|
|
8
|
-
};
|
|
9
|
-
export declare function isPreSerializedBatch(val: unknown): val is PreSerializedBatch;
|
|
10
|
-
export declare function preSerializeBatch(changes: readonly WatermarkedChange[]): PreSerializedBatch;
|
|
11
|
-
/**
|
|
12
|
-
* Enables event-driven early release of a {@link Broadcast}. When provided and a
|
|
13
|
-
* majority has acked, the broadcast schedules its own consensus-timeout release
|
|
14
|
-
* proportional to how long the majority took to ack, instead of relying on the
|
|
15
|
-
* Forwarder's periodic progress tick.
|
|
16
|
-
*/
|
|
17
|
-
export type EarlyReleaseOptions = {
|
|
18
|
-
/** Time to wait, proportional to majority completion, before releasing. */
|
|
19
|
-
consensusTimeoutProportion: number;
|
|
20
|
-
/** Injectable timer, for deterministic testing. */
|
|
21
|
-
setTimeoutFn?: typeof setTimeout;
|
|
22
|
-
/** Injectable timer cancellation, for deterministic testing. */
|
|
23
|
-
clearTimeoutFn?: typeof clearTimeout;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Initiates and tracks the progress of a change broadcasted to
|
|
27
|
-
* a set of subscribers, implementing **consensus-based timeouts**
|
|
28
|
-
* to effect short-term graceful degradation when a minority of
|
|
29
|
-
* subscribers are behind.
|
|
30
|
-
*
|
|
31
|
-
* ### Background
|
|
32
|
-
*
|
|
33
|
-
* The purpose of flow control is to pull upstream replication changes
|
|
34
|
-
* no faster than the rate they are processed by downstream subscribers
|
|
35
|
-
* in the steady state. In the change-streamer, this is done by occasionally
|
|
36
|
-
* waiting for ACKs from subscribers before continuing; without doing so,
|
|
37
|
-
* I/O buffers fill up and cause the system to spend most of its time in GC.
|
|
38
|
-
*
|
|
39
|
-
* However, the naive algorithm of always waiting for all subscribers (e.g.
|
|
40
|
-
* `Promise.all()`) can behave poorly in scenarios where subscribers
|
|
41
|
-
* are imbalanced:
|
|
42
|
-
* * New subscribers may have a backlog of changes to catch up with.
|
|
43
|
-
* Having all subscribers wait for the new subscriber to catch up results
|
|
44
|
-
* in delaying the entire application.
|
|
45
|
-
* * Broken TCP connections similarly require all subscribers to wait until
|
|
46
|
-
* connection liveness checks kick in and disconnect the subscriber.
|
|
47
|
-
*
|
|
48
|
-
* A simplistic approach is to add a limit to the amount of time waiting for
|
|
49
|
-
* subscribers, i.e. an ack timeout. However, deciding what this timeout
|
|
50
|
-
* should be is non-trivial because of the heterogeneous nature of changes;
|
|
51
|
-
* while most changes operate on single rows and are relatively predictable
|
|
52
|
-
* in terms of running time, some changes are table-wide operations and can
|
|
53
|
-
* legitimately take an arbitrary amount of time. In such scenarios, a
|
|
54
|
-
* timeout that is too short can stop progress on replication altogether.
|
|
55
|
-
*
|
|
56
|
-
* ### Consensus-based Timeout Algorithm
|
|
57
|
-
*
|
|
58
|
-
* To address these shortcomings, a "consensus-based timeout" algorithm is
|
|
59
|
-
* used:
|
|
60
|
-
* * Wait for more than half of the subscribers to finish. (In
|
|
61
|
-
* case of a single node, or the case of one replication-manager
|
|
62
|
-
* and one view-syncer, this reduces to waiting for all subscribers.)
|
|
63
|
-
* * Once more than half of the subscribers have finished, proceed after
|
|
64
|
-
* the configured timeout, proportional to the time it took for the
|
|
65
|
-
* majority of subscribers to ack, even if not all subscribers have
|
|
66
|
-
* finished.
|
|
67
|
-
*
|
|
68
|
-
* In other words, the subscribers themselves are used to determine the
|
|
69
|
-
* timeout of each batch of changes; the majority determines this when
|
|
70
|
-
* they complete, upon which a timeout is logically started.
|
|
71
|
-
*
|
|
72
|
-
* In the common case, the remaining subscribers finish soon afterward and
|
|
73
|
-
* the timeout never elapses. However, in pathological cases where a minority
|
|
74
|
-
* of subscribers have a disproportionate amount of load, some will still
|
|
75
|
-
* be processing (or otherwise unresponsive). These subscribers are given
|
|
76
|
-
* a bounded amount of time to catch up at each flushed batch, up to the
|
|
77
|
-
* timeout interval. This guarantees eventual catchup because the
|
|
78
|
-
* subscribers with a backlog of changes necessarily have a higher
|
|
79
|
-
* processing rate than the subscribers that finished (and are made to wait).
|
|
80
|
-
*/
|
|
81
|
-
export declare class Broadcast {
|
|
82
|
-
#private;
|
|
83
|
-
/**
|
|
84
|
-
* Sends the change to the subscribers without the tracking machinery.
|
|
85
|
-
* This is suitable for fire-and-forget (i.e. pipelined) sends.
|
|
86
|
-
*/
|
|
87
|
-
static withoutTracking(subscribers: Iterable<Subscriber>, change: WatermarkedChange | readonly WatermarkedChange[]): void;
|
|
88
|
-
/**
|
|
89
|
-
* Broadcasts the `change` to the `subscribers` and tracks their
|
|
90
|
-
* completion.
|
|
91
|
-
*/
|
|
92
|
-
constructor(lc: LogContext, subscribers: Iterable<Subscriber>, change: WatermarkedChange | readonly WatermarkedChange[], earlyRelease?: EarlyReleaseOptions);
|
|
93
|
-
get isDone(): boolean;
|
|
94
|
-
get done(): Promise<void>;
|
|
95
|
-
get releaseMode(): BroadcastReleaseMode;
|
|
96
|
-
logSlowRequests(now: number): void;
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=broadcast.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAkB,KAAK,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAE5E;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,iBAAiB,EAAE,GACpC,kBAAkB,CAYpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,2EAA2E;IAC3E,0BAA0B,EAAE,MAAM,CAAC;IACnC,mDAAmD;IACnD,YAAY,CAAC,EAAE,OAAO,UAAU,CAAC;IACjC,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,YAAY,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,qBAAa,SAAS;;IACpB;;;OAGG;IACH,MAAM,CAAC,eAAe,CACpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,EACjC,MAAM,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,QAOzD;IA0BD;;;OAGG;IACH,YACE,EAAE,EAAE,UAAU,EACd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,EACjC,MAAM,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,EACxD,YAAY,CAAC,EAAE,mBAAmB,EA+BnC;IAwDD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAExB;IAED,IAAI,WAAW,IAAI,oBAAoB,CAEtC;IAED,eAAe,CAAC,GAAG,EAAE,MAAM,QAa1B;CAiBF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { ChangeStreamData } from '../change-source/protocol/current/downstream.ts';
|
|
2
|
-
import type { ChangeTag, WatermarkedChange } from './change-streamer.ts';
|
|
3
|
-
export type ChangeLogEntry = {
|
|
4
|
-
watermark: string;
|
|
5
|
-
tag: string;
|
|
6
|
-
change: string;
|
|
7
|
-
};
|
|
8
|
-
export type SerializedChangeStreamData = {
|
|
9
|
-
/** The canonical downstream representation forwarded to subscribers. */
|
|
10
|
-
readonly json: string;
|
|
11
|
-
/** The already-serialized change tuple element stored in change logs. */
|
|
12
|
-
readonly change: string;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Serializes a data-plane message and its stored change payload in one pass.
|
|
16
|
-
*
|
|
17
|
-
* Change logs retain only the second tuple element for backwards
|
|
18
|
-
* compatibility. Serializing that element first avoids stringifying the full
|
|
19
|
-
* message and then copying the payload back out of the resulting string on the
|
|
20
|
-
* replication hot path.
|
|
21
|
-
*/
|
|
22
|
-
export declare function serializeChangeStreamDataWithChange(data: ChangeStreamData): SerializedChangeStreamData;
|
|
23
|
-
/** Serializes a data-plane message to the canonical downstream JSON form. */
|
|
24
|
-
export declare function serializeChangeStreamData(data: ChangeStreamData): string;
|
|
25
|
-
/**
|
|
26
|
-
* Extracts the second tuple element for callers that only have the canonical
|
|
27
|
-
* downstream JSON. The live write path uses
|
|
28
|
-
* {@link serializeChangeStreamDataWithChange} and does not scan or copy the
|
|
29
|
-
* completed message.
|
|
30
|
-
*/
|
|
31
|
-
export declare function extractChangeSubstring(streamMessageJSON: string, tag: ChangeTag | undefined): string;
|
|
32
|
-
/** Reconstructs the canonical downstream JSON around a stored change. */
|
|
33
|
-
export declare function reconstructWatermarkedChange(watermark: string, entryTag: string, change: string): WatermarkedChange;
|
|
34
|
-
//# sourceMappingURL=change-log-codec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-log-codec.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-log-codec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,gBAAgB,GACrB,0BAA0B,CAc5B;AAED,6EAA6E;AAC7E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,SAAS,GAAG,SAAS,GACzB,MAAM,CAkBR;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,iBAAiB,CAoBnB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure building blocks for comparing catchup output between the Postgres and
|
|
3
|
-
* SQLite change logs: how to reduce a catchup range to a single comparable
|
|
4
|
-
* digest. Which transactions to sample is `isSampledForShard`, in
|
|
5
|
-
* `shard-sampling.ts`.
|
|
6
|
-
*
|
|
7
|
-
* Nothing here touches either store. The comparator service supplies the
|
|
8
|
-
* batches.
|
|
9
|
-
*/
|
|
10
|
-
import type { WatermarkedChange } from './change-streamer.ts';
|
|
11
|
-
export type CatchupRangeDigest = {
|
|
12
|
-
readonly digest: string;
|
|
13
|
-
readonly rows: number;
|
|
14
|
-
/** Change text hashed. This is the payload cost of the range. */
|
|
15
|
-
readonly bytes: number;
|
|
16
|
-
/** A row or byte limit was reached before the closing commit. */
|
|
17
|
-
readonly limitReached: boolean;
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* Builds one ordered digest for a catchup range.
|
|
21
|
-
*
|
|
22
|
-
* The row position makes missing, extra, changed, and reordered rows change the digest.
|
|
23
|
-
* The digest omits `precommit` because a commit already includes its watermark.
|
|
24
|
-
*
|
|
25
|
-
* The change text is hashed as stored. Both logs write the same
|
|
26
|
-
* `extractChangeSubstring` output, and the Postgres column is `json`, which
|
|
27
|
-
* keeps the input text exactly, so the two sides are byte-comparable without
|
|
28
|
-
* reparsing. Comparing the stored text also catches an encoding difference
|
|
29
|
-
* that a semantic comparison would hide.
|
|
30
|
-
*
|
|
31
|
-
* The read stops at `maxRows` or at `maxBytes`, whichever comes first.
|
|
32
|
-
*/
|
|
33
|
-
export declare function digestCatchupRange(batches: AsyncIterable<readonly WatermarkedChange[]>, throughWatermark: string, maxRows: number, maxBytes: number): Promise<CatchupRangeDigest>;
|
|
34
|
-
//# sourceMappingURL=change-log-compare-digest.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-log-compare-digest.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-log-compare-digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,CAAC,SAAS,iBAAiB,EAAE,CAAC,EACpD,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CAsC7B"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Where a stream connection's initialization parameters come from.
|
|
3
|
-
*
|
|
4
|
-
* A change-streamer starts a stream from three things read at one position: the
|
|
5
|
-
* watermark to resume at, the {@link BackfillRequest}s to hand the change
|
|
6
|
-
* source, and the cookie set those requests were derived from. Postgres has
|
|
7
|
-
* always supplied all three (`Storer.getStartStreamInitializationParameters()`).
|
|
8
|
-
* The point of this workstream is that a restored replica can supply them
|
|
9
|
-
* instead, which is what lets the `cdc` schema be decommissioned.
|
|
10
|
-
*
|
|
11
|
-
* This is the two-source stage. Both are computed on every stream connection,
|
|
12
|
-
* compared, and Postgres's is used — so the replica-derived path runs in
|
|
13
|
-
* production, at full rate, before anything depends on it. The flip is
|
|
14
|
-
* `initFromPgChangeLog: false`, not a rewrite.
|
|
15
|
-
*
|
|
16
|
-
* The shape is {@link UpstreamAcker}'s, deliberately: two stores, one output, a
|
|
17
|
-
* flag per store, and the Postgres flag carrying the marker that retires it.
|
|
18
|
-
* That class solved the identical problem for upstream ACKs earlier in this
|
|
19
|
-
* workstream.
|
|
20
|
-
*
|
|
21
|
-
* ### Why the comparison is a fold and not an equality
|
|
22
|
-
*
|
|
23
|
-
* The replica is a subscriber downstream of the change-streamer's write loop,
|
|
24
|
-
* so its state version trails the log's head by however long the replicator is
|
|
25
|
-
* behind. A raw difference between the two cookie sets is therefore the normal
|
|
26
|
-
* case and says nothing. What is checked instead is that the replica's set,
|
|
27
|
-
* carried forward over exactly the schema changes the log holds in the interval,
|
|
28
|
-
* equals Postgres's set at Postgres's watermark. The log holds precisely those
|
|
29
|
-
* transactions, schema changes are rare, and the check is exact rather than
|
|
30
|
-
* approximate — so it also happens to be the strongest available test of the
|
|
31
|
-
* premise that three interpreters of one fold agree.
|
|
32
|
-
*/
|
|
33
|
-
import type { LogContext } from '@rocicorp/logger';
|
|
34
|
-
import { Database } from '../../../../zqlite/src/db.ts';
|
|
35
|
-
import type { BackfillRequest } from '../change-source/protocol/current/upstream.ts';
|
|
36
|
-
import { type CookieSet } from '../replicator/change-log-cookies.ts';
|
|
37
|
-
import { type ChangeLogResumePoint } from '../replicator/change-log-db.ts';
|
|
38
|
-
/** Everything one stream connection starts from, read at one position. */
|
|
39
|
-
export type InitializationParameters = {
|
|
40
|
-
readonly lastWatermark: string;
|
|
41
|
-
readonly backfillRequests: BackfillRequest[];
|
|
42
|
-
readonly cookies: CookieSet;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* - `equal` — the two stores were at the same watermark and held the same
|
|
46
|
-
* cookies. Nothing had to be folded, which is the strongest of the four.
|
|
47
|
-
* - `equal-after-fold` — the replica trailed, and carrying its set forward over
|
|
48
|
-
* the log's schema changes in the interval reproduced Postgres's exactly.
|
|
49
|
-
* The expected steady-state result.
|
|
50
|
-
* - `divergent` — the two disagree at the same position. Alert; investigate
|
|
51
|
-
* individually.
|
|
52
|
-
* - `inconclusive` — the log does not span the interval, so the fold cannot be
|
|
53
|
-
* performed. Routine on a cold log, and not a finding.
|
|
54
|
-
* - `error` — the comparison itself failed: the replica could not be read, or
|
|
55
|
-
* the fold threw. Not one of the four classifications, because it is a
|
|
56
|
-
* statement about this process rather than about the two stores. Kept
|
|
57
|
-
* separate rather than folded into `inconclusive` so that a change-streamer
|
|
58
|
-
* that has silently stopped being able to read its replica is visible before
|
|
59
|
-
* that read becomes the only source.
|
|
60
|
-
*/
|
|
61
|
-
export type InitComparisonResult = 'equal' | 'equal-after-fold' | 'divergent' | 'inconclusive' | 'error';
|
|
62
|
-
export type ChangeLogInitializerSources = {
|
|
63
|
-
/** `Storer.getStartStreamInitializationParameters()`. */
|
|
64
|
-
readonly pgChangeLog: () => Promise<InitializationParameters>;
|
|
65
|
-
/** Typically {@link replicaInitializationSource}. */
|
|
66
|
-
readonly replica: () => InitializationParameters;
|
|
67
|
-
/**
|
|
68
|
-
* Reconciles the SQLite change log and returns its current resume point.
|
|
69
|
-
*
|
|
70
|
-
* When `resumeFrom` is present, it supplies the resume point. Otherwise, a
|
|
71
|
-
* valid log uses its own head. A new or invalid log uses `seed`.
|
|
72
|
-
*
|
|
73
|
-
* Returns `undefined` when the writer is disabled or unavailable.
|
|
74
|
-
*/
|
|
75
|
-
readonly reconcileChangeLog: (resumeFrom: ChangeLogResumePoint | undefined, seed: () => ChangeLogResumePoint) => ChangeLogResumePoint | undefined;
|
|
76
|
-
/**
|
|
77
|
-
* The change log, for the fold. `undefined` before the stream loop's first
|
|
78
|
-
* reconcile has created it, and again once the writer has failed soft and
|
|
79
|
-
* deleted it — both of which make the comparison `inconclusive` rather than
|
|
80
|
-
* an error, since neither says anything about the two stores.
|
|
81
|
-
*/
|
|
82
|
-
readonly changeLog: () => Database | undefined;
|
|
83
|
-
/**
|
|
84
|
-
* Re-initializes the Postgres change log from the replica's resume point
|
|
85
|
-
* (taking ownership of it) if it does not contain all of the replica's
|
|
86
|
-
* changes, re-checking under lock. Typically
|
|
87
|
-
* `Storer.reinitializeFromReplica()`.
|
|
88
|
-
*
|
|
89
|
-
* Supplied only when the change log's head is behind the position of the
|
|
90
|
-
* replication slot from which replication resumes, i.e. when it may be
|
|
91
|
-
* missing transactions that the slot will not stream. Otherwise, a replica
|
|
92
|
-
* that is ahead of the change log (as changes are forwarded before they are
|
|
93
|
-
* stored) is caught up by the change stream, which resumes from the change
|
|
94
|
-
* log's head.
|
|
95
|
-
*/
|
|
96
|
-
readonly reinitializePgChangeLog?: ((params: {
|
|
97
|
-
watermark: string;
|
|
98
|
-
cookies: CookieSet;
|
|
99
|
-
}) => Promise<'reinitialized' | 'maintained'>) | undefined;
|
|
100
|
-
};
|
|
101
|
-
type Opts = {
|
|
102
|
-
/**
|
|
103
|
-
* When true, Postgres supplies the resume point and the cookies for a new
|
|
104
|
-
* change log.
|
|
105
|
-
*
|
|
106
|
-
* When false, a valid log resumes from its own head. The replica supplies the
|
|
107
|
-
* resume point for a new or invalid log.
|
|
108
|
-
*/
|
|
109
|
-
readonly initFromPgChangeLog: boolean;
|
|
110
|
-
/**
|
|
111
|
-
* Derive the parameters from the replica. When Postgres is enabled, these
|
|
112
|
-
* parameters are used only for comparison.
|
|
113
|
-
*
|
|
114
|
-
* When Postgres is disabled, the replica supplies the seed and the fallback
|
|
115
|
-
* resume point.
|
|
116
|
-
*/
|
|
117
|
-
readonly initFromReplica: boolean;
|
|
118
|
-
};
|
|
119
|
-
export declare class ChangeLogInitializer {
|
|
120
|
-
#private;
|
|
121
|
-
constructor(lc: LogContext, { initFromPgChangeLog, initFromReplica }: Opts, sources: ChangeLogInitializerSources);
|
|
122
|
-
/**
|
|
123
|
-
* Returns the comparison result from the most recent {@link initialize}
|
|
124
|
-
* call. Returns `undefined` when that call used only one source.
|
|
125
|
-
*
|
|
126
|
-
* Tests and metrics use this result. It does not affect initialization.
|
|
127
|
-
*/
|
|
128
|
-
lastComparison(): InitComparisonResult | undefined;
|
|
129
|
-
/**
|
|
130
|
-
* Returns the initialization parameters for one stream connection after it
|
|
131
|
-
* reconciles the change log.
|
|
132
|
-
*
|
|
133
|
-
* The selected source determines how reconciliation works. Keeping both
|
|
134
|
-
* operations here hides that choice from the caller.
|
|
135
|
-
*/
|
|
136
|
-
initialize(): Promise<InitializationParameters>;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Reads the replica's initialization parameters in one snapshot, which is
|
|
140
|
-
* invariant 15 on the replica side: the state version and the cookies are only
|
|
141
|
-
* meaningful together.
|
|
142
|
-
*/
|
|
143
|
-
export declare function readReplicaInitializationParameters(db: Database): InitializationParameters;
|
|
144
|
-
/**
|
|
145
|
-
* The replica source for {@link ChangeLogInitializer}, opening and closing the
|
|
146
|
-
* file per stream connection rather than holding a handle on a database another
|
|
147
|
-
* process owns.
|
|
148
|
-
*
|
|
149
|
-
* The handle is read-only, which is invariant 19 stated in the API: the
|
|
150
|
-
* replica's cookie tables are written by the change-processor and by nothing
|
|
151
|
-
* else. Note that a read-only SQLite connection still needs to attach the
|
|
152
|
-
* WAL's `-shm`, so this can fail if it opens at a moment when no writer holds
|
|
153
|
-
* the replica; that surfaces as the `error` classification, which is the point
|
|
154
|
-
* of running the path under observation before anything depends on it.
|
|
155
|
-
*/
|
|
156
|
-
export declare function replicaInitializationSource(lc: LogContext, replicaFile: string): () => InitializationParameters;
|
|
157
|
-
export {};
|
|
158
|
-
//# sourceMappingURL=change-log-initializer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-log-initializer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-log-initializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAKtD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AAQxC,0EAA0E;AAC1E,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAC5B,OAAO,GACP,kBAAkB,GAClB,WAAW,GACX,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,MAAM,2BAA2B,GAAG;IACxC,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC9D,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,wBAAwB,CAAC;IACjD;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,UAAU,EAAE,oBAAoB,GAAG,SAAS,EAC5C,IAAI,EAAE,MAAM,oBAAoB,KAC7B,oBAAoB,GAAG,SAAS,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC/C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAC7B,CAAC,CAAC,MAAM,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,SAAS,CAAC;KACpB,KAAK,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC,GAC9C,SAAS,CAAC;CACf,CAAC;AAEF,KAAK,IAAI,GAAG;IACV;;;;;;OAMG;IAEH,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC,CAAC;AAcF,qBAAa,oBAAoB;;IAqB/B,YACE,EAAE,EAAE,UAAU,EACd,EAAC,mBAAmB,EAAE,eAAe,EAAC,EAAE,IAAI,EAC5C,OAAO,EAAE,2BAA2B,EAUrC;IAED;;;;;OAKG;IACH,cAAc,IAAI,oBAAoB,GAAG,SAAS,CAEjD;IAED;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAqCpD;CA2JF;AAUD;;;;GAIG;AACH,wBAAgB,mCAAmC,CACjD,EAAE,EAAE,QAAQ,GACX,wBAAwB,CAc1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,UAAU,EACd,WAAW,EAAE,MAAM,GAClB,MAAM,wBAAwB,CAahC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export type ChangeLogHashRow = {
|
|
2
|
-
readonly watermark: string;
|
|
3
|
-
readonly pos: number;
|
|
4
|
-
readonly tag: string;
|
|
5
|
-
readonly change: string;
|
|
6
|
-
readonly precommit: string | null;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Computes a stable digest over the fields shared by the Postgres and SQLite
|
|
10
|
-
* change logs. Values are length-prefixed so different field boundaries cannot
|
|
11
|
-
* produce the same byte stream.
|
|
12
|
-
*/
|
|
13
|
-
export declare class ChangeLogTransactionHasher {
|
|
14
|
-
#private;
|
|
15
|
-
constructor();
|
|
16
|
-
add(row: ChangeLogHashRow): void;
|
|
17
|
-
digest(): string;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=change-log-transaction-hash.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-log-transaction-hash.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-log-transaction-hash.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,0BAA0B;;IAGrC,cAGC;IAED,GAAG,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAW/B;IAED,MAAM,IAAI,MAAM,CAEf;CACF"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage } from 'node:http';
|
|
2
|
-
import type { LogContext } from '@rocicorp/logger';
|
|
3
|
-
import type { NormalizedZeroConfig } from '../../config/normalize.ts';
|
|
4
|
-
import { type Worker } from '../../types/processes.ts';
|
|
5
|
-
import { type ShardID } from '../../types/shards.ts';
|
|
6
|
-
import { type Sized, type Source } from '../../types/streams.ts';
|
|
7
|
-
import { Subscription } from '../../types/subscription.ts';
|
|
8
|
-
import { HttpService, type Options as HttpOptions } from '../http-service.ts';
|
|
9
|
-
import { type ChangeStreamer, type ChangeStreamerService, type SubscriberContext } from './change-streamer.ts';
|
|
10
|
-
import { type LocalReplica, type SnapshotStatus, type SubscribeDownstream, type SubscribeUpstream } from './subscribe.ts';
|
|
11
|
-
type Options = HttpOptions & {
|
|
12
|
-
startupDelayMs: number;
|
|
13
|
-
config?: Pick<NormalizedZeroConfig, 'adminPassword' | 'operatorPassword'> | undefined;
|
|
14
|
-
getProfileWorker?: (() => Promise<Worker>) | undefined;
|
|
15
|
-
};
|
|
16
|
-
export declare class ChangeStreamerHttpServer extends HttpService {
|
|
17
|
-
#private;
|
|
18
|
-
readonly id = "change-streamer-http-server";
|
|
19
|
-
constructor(lc: LogContext, opts: Options, parent: Worker, changeStreamer: ChangeStreamerService);
|
|
20
|
-
protected _onStart(): void;
|
|
21
|
-
/**
|
|
22
|
-
* Signals (drainable) subscribers to switch over to another
|
|
23
|
-
* replication-manager, resolving when they have disconnected. Subscribers
|
|
24
|
-
* continue to be served in the meantime, but new connections (e.g.
|
|
25
|
-
* switchover attempts, reconnects, and snapshot reservations) are refused,
|
|
26
|
-
* so that they are routed to another replication-manager.
|
|
27
|
-
*/
|
|
28
|
-
drain(): Promise<void>;
|
|
29
|
-
protected _onStop(): Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
export interface SnapshotReserver {
|
|
32
|
-
reserveSnapshot(taskID: string, localReplica?: LocalReplica | undefined): Promise<{
|
|
33
|
-
reserved: SnapshotStatus;
|
|
34
|
-
followup: ReservationFollowup;
|
|
35
|
-
}>;
|
|
36
|
-
}
|
|
37
|
-
export interface SubscriptionStarter {
|
|
38
|
-
subscribe(ctx: SubscriberContext): Promise<Source<Sized<SubscribeDownstream>>>;
|
|
39
|
-
}
|
|
40
|
-
export interface ReservationFollowup extends SubscriptionStarter {
|
|
41
|
-
/**
|
|
42
|
-
* A signal to indicate that the followup is no longer valid (i.e. the
|
|
43
|
-
* connection to the reserving task has been severed).
|
|
44
|
-
*/
|
|
45
|
-
readonly signal: AbortSignal;
|
|
46
|
-
/**
|
|
47
|
-
* Abandons the reservation without subscribing, closing the connection that
|
|
48
|
-
* was held open to pin the change-log floor. Used when the caller cannot
|
|
49
|
-
* proceed to `subscribe()` (e.g. process shutdown while a restore is in
|
|
50
|
-
* progress) and must not leave the reservation's connection open forever.
|
|
51
|
-
*/
|
|
52
|
-
cancel(reason?: Error): void;
|
|
53
|
-
}
|
|
54
|
-
export declare class ChangeStreamerHttpClient implements ChangeStreamer, SnapshotReserver, SubscriptionStarter {
|
|
55
|
-
#private;
|
|
56
|
-
constructor(lc: LogContext, shardID: ShardID, changeDB: string, changeStreamerURI: string | undefined);
|
|
57
|
-
reserveSnapshot(taskID: string, localReplica?: LocalReplica | undefined): Promise<{
|
|
58
|
-
reserved: SnapshotStatus;
|
|
59
|
-
followup: ReservationFollowup;
|
|
60
|
-
}>;
|
|
61
|
-
subscribe(ctx: SubscriberContext): Promise<Source<Sized<SubscribeDownstream>>>;
|
|
62
|
-
/**
|
|
63
|
-
* Opens a merged v7 `/subscribe` connection (see subscribe.ts). Returns the
|
|
64
|
-
* inbound change/reservation stream and an `outbound` sink into which the
|
|
65
|
-
* caller pushes the `reserve-snapshot` / `start-subscription` control
|
|
66
|
-
* messages that drive the connection's phases. The single connection spans
|
|
67
|
-
* the reservation, backup restore, and subscription, so the reserving
|
|
68
|
-
* replication-manager is the one that serves the subscription.
|
|
69
|
-
*/
|
|
70
|
-
connect(taskID: string): Promise<{
|
|
71
|
-
instream: Source<Sized<SubscribeDownstream>>;
|
|
72
|
-
outbound: Subscription<SubscribeUpstream>;
|
|
73
|
-
}>;
|
|
74
|
-
}
|
|
75
|
-
type RequestHeaders = Pick<IncomingMessage, 'url' | 'headers'>;
|
|
76
|
-
export declare function getSubscriberContext(req: RequestHeaders): SubscriberContext;
|
|
77
|
-
export {};
|
|
78
|
-
//# sourceMappingURL=change-streamer-http.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer-http.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAE/C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,KAAK,OAAO,EAAC,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,MAAM,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAIzD,OAAO,EAAC,WAAW,EAAE,KAAK,OAAO,IAAI,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAG5E,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,YAAY,EAIjB,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAmBxB,KAAK,OAAO,GAAG,WAAW,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EACH,IAAI,CAAC,oBAAoB,EAAE,eAAe,GAAG,kBAAkB,CAAC,GAChE,SAAS,CAAC;IACd,gBAAgB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CACxD,CAAC;AAEF,qBAAa,wBAAyB,SAAQ,WAAW;;IACvD,QAAQ,CAAC,EAAE,iCAAiC;IAK5C,YACE,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,qBAAqB,EAuCtC;IAmLD,UAAmB,QAAQ,IAAI,IAAI,CA2BlC;IAED;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;IAED,UAAyB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CACb,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,GACtC,OAAO,CAAC;QACT,QAAQ,EAAE,cAAc,CAAC;QACzB,QAAQ,EAAE,mBAAmB,CAAC;KAC/B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CACP,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAED,qBAAa,wBACX,YAAW,cAAc,EAAE,gBAAgB,EAAE,mBAAmB;;IAQhE,YACE,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EActC;IAmBK,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,GACtC,OAAO,CAAC;QACT,QAAQ,EAAE,cAAc,CAAC;QACzB,QAAQ,EAAE,mBAAmB,CAAC;KAC/B,CAAC,CA2BD;IAEK,SAAS,CACb,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAI7C;IAED;;;;;;;OAOG;IAEG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACrC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,QAAQ,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;KAC3C,CAAC,CAuBD;CACF;AAED,KAAK,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;AAE/D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,iBAAiB,CAiB3E"}
|