@zlink-systems/framework 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +6 -23
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +68 -52
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -10
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.js +5 -2
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +248 -174
- package/dist/runtime/channels/channel-transports.d.ts +11 -17
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -157
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +7 -20
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +9 -8
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +11 -1
- package/dist/runtime/streams/index.d.ts +14 -15
- package/dist/runtime/streams/index.js +20 -21
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +13 -29
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -85
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -23
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +6 -2
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +301 -192
- package/src/runtime/channels/channel-transports.ts +161 -112
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -296
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +8 -41
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +45 -23
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +21 -1
- package/src/runtime/streams/index.ts +76 -64
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServiceDiscoveryRegistry = void 0;
|
|
4
|
+
const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
5
|
+
const service_weighted_selection_1 = require("./service-weighted-selection");
|
|
4
6
|
/** Dedicated discovery state; fanout publishers never reuse RouteMesh peer rows. */
|
|
5
7
|
class ServiceDiscoveryRegistry {
|
|
8
|
+
clientServerChanged = new Set();
|
|
9
|
+
onClientServerChanged(listener) {
|
|
10
|
+
this.clientServerChanged.add(listener);
|
|
11
|
+
return () => {
|
|
12
|
+
this.clientServerChanged.delete(listener);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
dispose(error) {
|
|
16
|
+
for (const listener of this.clientServerChanged)
|
|
17
|
+
listener(error);
|
|
18
|
+
this.clientServerChanged.clear();
|
|
19
|
+
}
|
|
6
20
|
clientServers = new Map();
|
|
7
21
|
fanoutPublishers = new Map();
|
|
8
22
|
clientServerSelections = new Map();
|
|
@@ -56,6 +70,10 @@ class ServiceDiscoveryRegistry {
|
|
|
56
70
|
}
|
|
57
71
|
return selection.select();
|
|
58
72
|
}
|
|
73
|
+
hasReadyClientServer(channelName) {
|
|
74
|
+
return [...this.clientServers.values()].some(({ descriptor }) => descriptor.channelName === channelName &&
|
|
75
|
+
(descriptor.state === 'serving' || descriptor.state === 'retiring'));
|
|
76
|
+
}
|
|
59
77
|
clientServerDescriptors(channelName) {
|
|
60
78
|
return [...this.clientServers.values()]
|
|
61
79
|
.map((value) => value.descriptor)
|
|
@@ -94,6 +112,8 @@ class ServiceDiscoveryRegistry {
|
|
|
94
112
|
if (this.clientServerSelections.has(channelName)) {
|
|
95
113
|
this.clientServerSelections.get(channelName).rebuild();
|
|
96
114
|
}
|
|
115
|
+
for (const listener of this.clientServerChanged)
|
|
116
|
+
listener();
|
|
97
117
|
}
|
|
98
118
|
clientServerCandidates(channelName) {
|
|
99
119
|
return [...this.clientServers.values()]
|
|
@@ -150,8 +170,8 @@ function validateClientServer(descriptor) {
|
|
|
150
170
|
requireText(descriptor.securityIdentity, 'securityIdentity');
|
|
151
171
|
requireText(descriptor.advertisedEndpoint, 'advertisedEndpoint');
|
|
152
172
|
validateRevision(descriptor.lifecycleGeneration, descriptor.descriptorRevision);
|
|
153
|
-
if (!
|
|
154
|
-
throw new RangeError(
|
|
173
|
+
if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(descriptor.weight)) {
|
|
174
|
+
throw new RangeError(`ClientServer weight must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
|
|
155
175
|
}
|
|
156
176
|
if (!Number.isSafeInteger(descriptor.effectiveMaxMessageBytes) ||
|
|
157
177
|
descriptor.effectiveMaxMessageBytes < 1) {
|
|
@@ -174,4 +194,3 @@ function requireText(value, field) {
|
|
|
174
194
|
throw new TypeError(`${field} must be non-empty text without NUL.`);
|
|
175
195
|
}
|
|
176
196
|
}
|
|
177
|
-
const service_weighted_selection_1 = require("./service-weighted-selection");
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.encodeInstanceActivationRecoveryEnvelope = encodeInstanceActivationRecoveryEnvelope;
|
|
4
4
|
exports.decodeInstanceActivationRecoveryEnvelope = decodeInstanceActivationRecoveryEnvelope;
|
|
5
|
+
const service_wire_binary_primitives_1 = require("./service-wire-binary-primitives");
|
|
6
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
5
7
|
const service_relocation_runtime_1 = require("./service-relocation-runtime");
|
|
6
8
|
const service_wire_m6a_codec_1 = require("./service-wire-m6a-codec");
|
|
7
9
|
const service_metadata_codec_1 = require("./service-metadata-codec");
|
|
@@ -175,8 +177,10 @@ function requireOperation(value) {
|
|
|
175
177
|
}
|
|
176
178
|
function textBytes(value, name) {
|
|
177
179
|
const bytes = Buffer.from(value, 'utf8');
|
|
178
|
-
if (bytes.byteLength < 1 ||
|
|
179
|
-
|
|
180
|
+
if (bytes.byteLength < 1 ||
|
|
181
|
+
bytes.byteLength > service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES ||
|
|
182
|
+
bytes.includes(0)) {
|
|
183
|
+
throw new RangeError(`${name} must contain 1..${service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`);
|
|
180
184
|
}
|
|
181
185
|
return bytes;
|
|
182
186
|
}
|
|
@@ -189,12 +193,12 @@ function writeText8(target, offset, value) {
|
|
|
189
193
|
return offset + 1 + value.byteLength;
|
|
190
194
|
}
|
|
191
195
|
function validatePositiveU64(value, name) {
|
|
192
|
-
if (value <= 0n || value >
|
|
196
|
+
if (value <= 0n || value > stream_wire_1.UINT64_MAX) {
|
|
193
197
|
throw new RangeError(`${name} is out of range.`);
|
|
194
198
|
}
|
|
195
199
|
}
|
|
196
200
|
function validateU64(value, name) {
|
|
197
|
-
if (value < 0n || value >
|
|
201
|
+
if (value < 0n || value > stream_wire_1.UINT64_MAX) {
|
|
198
202
|
throw new RangeError(`${name} is out of range.`);
|
|
199
203
|
}
|
|
200
204
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServiceLivenessRegistry = exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS = exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS = void 0;
|
|
4
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
4
5
|
exports.DEFAULT_SERVICE_PROBE_INTERVAL_MS = 5_000;
|
|
5
6
|
exports.DEFAULT_SERVICE_PEER_TIMEOUT_MS = 15_000;
|
|
6
7
|
/** Uses monotonic milliseconds and never treats application traffic as a probe ACK. */
|
|
@@ -101,7 +102,7 @@ class ServiceLivenessRegistry {
|
|
|
101
102
|
}
|
|
102
103
|
allocateProbeId() {
|
|
103
104
|
const result = this.nextProbeId++;
|
|
104
|
-
if (this.nextProbeId >
|
|
105
|
+
if (this.nextProbeId > stream_wire_1.UINT64_MAX)
|
|
105
106
|
this.nextProbeId = 1n;
|
|
106
107
|
return result;
|
|
107
108
|
}
|
|
@@ -42,4 +42,3 @@ export declare class ServiceMaintenanceRuntime {
|
|
|
42
42
|
private publishCore;
|
|
43
43
|
private notify;
|
|
44
44
|
}
|
|
45
|
-
export declare function classifyRelocationRecovery(publishedReference: boolean, payloadPresent: boolean, checksumMatches: boolean, inventoryMatches: boolean): 'resume' | 'orphan' | 'relocationDataLost';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServiceMaintenanceRuntime = void 0;
|
|
4
|
-
exports.classifyRelocationRecovery = classifyRelocationRecovery;
|
|
5
4
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
6
5
|
const state_lane_1 = require("../execution/state-lane");
|
|
7
6
|
const detachedStateLaneResource = new node_async_hooks_1.AsyncResource('zlink:service-maintenance-runtime');
|
|
@@ -210,8 +209,3 @@ exports.ServiceMaintenanceRuntime = ServiceMaintenanceRuntime;
|
|
|
210
209
|
function startOutsideStateLane(work) {
|
|
211
210
|
return detachedStateLaneResource.runInAsyncScope(work);
|
|
212
211
|
}
|
|
213
|
-
function classifyRelocationRecovery(publishedReference, payloadPresent, checksumMatches, inventoryMatches) {
|
|
214
|
-
if (!publishedReference)
|
|
215
|
-
return payloadPresent ? 'orphan' : 'resume';
|
|
216
|
-
return payloadPresent && checksumMatches && inventoryMatches ? 'resume' : 'relocationDataLost';
|
|
217
|
-
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.encodeServiceMetadataFrame = encodeServiceMetadataFrame;
|
|
4
4
|
exports.validateServiceMetadataFrame = validateServiceMetadataFrame;
|
|
5
|
-
const
|
|
5
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
6
6
|
const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
|
|
7
7
|
function encodeServiceMetadataFrame(entries) {
|
|
8
8
|
if (entries.size > 0xff) {
|
|
@@ -19,8 +19,8 @@ function encodeServiceMetadataFrame(entries) {
|
|
|
19
19
|
return validateServiceMetadataFrame(Buffer.concat(encoded));
|
|
20
20
|
}
|
|
21
21
|
function validateServiceMetadataFrame(frame) {
|
|
22
|
-
if (frame.byteLength >
|
|
23
|
-
throw new RangeError(
|
|
22
|
+
if (frame.byteLength > stream_wire_1.ZLINK_STREAM_MAX_METADATA_BYTES) {
|
|
23
|
+
throw new RangeError(`Application metadata frame exceeds ${stream_wire_1.ZLINK_STREAM_MAX_METADATA_BYTES} bytes.`);
|
|
24
24
|
}
|
|
25
25
|
const bytes = Buffer.from(frame);
|
|
26
26
|
let offset = 0;
|
|
@@ -20,16 +20,13 @@ export interface ServicePreparedRelocationAggregate {
|
|
|
20
20
|
readonly fence: ZLinkAggregateFence;
|
|
21
21
|
readonly plan: ServiceRelocationAggregatePlan;
|
|
22
22
|
}
|
|
23
|
-
type AggregateStore = Pick<ZLinkObjectCreationStore, 'prepareAggregate' | '
|
|
24
|
-
/**
|
|
23
|
+
type AggregateStore = Pick<ZLinkObjectCreationStore, 'prepareAggregate' | 'abortAggregate'> & Pick<ZLinkAuthorityStore, 'readAuthority'>;
|
|
24
|
+
/** Prepares and aborts relocation through one Location Store fence. */
|
|
25
25
|
export declare class ServiceRelocationAggregateCommitter {
|
|
26
26
|
private readonly store;
|
|
27
27
|
constructor(store: AggregateStore);
|
|
28
28
|
prepare(plan: ServiceRelocationAggregatePlan, signal?: AbortSignal): Promise<ServicePreparedRelocationAggregate>;
|
|
29
29
|
private authorityStoreVersionsUnchanged;
|
|
30
|
-
commit(prepared: ServicePreparedRelocationAggregate, signal?: AbortSignal): Promise<ReadonlyMap<string, ZLinkAuthoritySnapshot>>;
|
|
31
30
|
abort(prepared: ServicePreparedRelocationAggregate, signal?: AbortSignal): Promise<void>;
|
|
32
|
-
private commitFence;
|
|
33
|
-
private readCommittedParticipants;
|
|
34
31
|
}
|
|
35
32
|
export {};
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ServiceRelocationAggregateCommitter = void 0;
|
|
4
4
|
const service_relocation_runtime_1 = require("./service-relocation-runtime");
|
|
5
5
|
const MAX_PREPARE_CONFLICT_ATTEMPTS = 8;
|
|
6
|
-
/**
|
|
6
|
+
/** Prepares and aborts relocation through one Location Store fence. */
|
|
7
7
|
class ServiceRelocationAggregateCommitter {
|
|
8
8
|
store;
|
|
9
9
|
constructor(store) {
|
|
@@ -52,59 +52,12 @@ class ServiceRelocationAggregateCommitter {
|
|
|
52
52
|
}
|
|
53
53
|
return true;
|
|
54
54
|
}
|
|
55
|
-
async commit(prepared, signal) {
|
|
56
|
-
try {
|
|
57
|
-
await this.commitFence(prepared.fence, signal);
|
|
58
|
-
}
|
|
59
|
-
catch (firstError) {
|
|
60
|
-
// A lost commit response is reconciled by repeating the exact durable fence.
|
|
61
|
-
try {
|
|
62
|
-
await this.commitFence(prepared.fence, signal);
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
throw firstError;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return await this.readCommittedParticipants(prepared.plan, signal);
|
|
69
|
-
}
|
|
70
55
|
async abort(prepared, signal) {
|
|
71
56
|
const result = await this.store.abortAggregate(prepared.fence, signal);
|
|
72
57
|
if (result.kind !== 'aborted' && result.kind !== 'alreadyAborted') {
|
|
73
58
|
throw new Error(`Location Store rejected relocation aggregate abort: ${result.kind}.`);
|
|
74
59
|
}
|
|
75
60
|
}
|
|
76
|
-
async commitFence(fence, signal) {
|
|
77
|
-
const result = await this.store.commitAggregate(fence, signal);
|
|
78
|
-
if (result.kind !== 'committed' && result.kind !== 'alreadyCommitted') {
|
|
79
|
-
throw new Error(`Location Store rejected relocation aggregate commit: ${result.kind}.`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async readCommittedParticipants(plan, signal) {
|
|
83
|
-
const committed = new Map();
|
|
84
|
-
for (const participant of plan.participants) {
|
|
85
|
-
const current = await this.store.readAuthority(participant.key, signal);
|
|
86
|
-
if (current.kind !== 'snapshot' ||
|
|
87
|
-
current.objectGeneration !== participant.expected.objectGeneration ||
|
|
88
|
-
current.storeVersion.value === participant.expected.storeVersion.value ||
|
|
89
|
-
!Buffer.from(current.payload).equals(Buffer.from(participant.authorityPayload))) {
|
|
90
|
-
throw new Error('Committed relocation aggregate does not match its exact participant plan.');
|
|
91
|
-
}
|
|
92
|
-
if (participant.ownerTransition === 'newOwner') {
|
|
93
|
-
if (current.ownerId !== plan.targetOwner.ownerId ||
|
|
94
|
-
current.ownerLeaseGeneration !== plan.targetOwner.leaseGeneration ||
|
|
95
|
-
current.authorityOwnerGeneration <= participant.expected.authorityOwnerGeneration) {
|
|
96
|
-
throw new Error('Committed relocation participant has a different owner fence.');
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else if (current.ownerId !== participant.expected.ownerId ||
|
|
100
|
-
current.ownerLeaseGeneration !== participant.expected.ownerLeaseGeneration ||
|
|
101
|
-
current.authorityOwnerGeneration !== participant.expected.authorityOwnerGeneration) {
|
|
102
|
-
throw new Error('Preserved relocation participant changed its owner fence.');
|
|
103
|
-
}
|
|
104
|
-
committed.set(participant.key.value, current);
|
|
105
|
-
}
|
|
106
|
-
return committed;
|
|
107
|
-
}
|
|
108
61
|
}
|
|
109
62
|
exports.ServiceRelocationAggregateCommitter = ServiceRelocationAggregateCommitter;
|
|
110
63
|
function validateAndEncodeParticipants(plan) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ServiceRelocationObjectRestoreOwner = exports.ServiceRelocationObjectCaptureOwner = exports.ServiceCapturedObjectRelocation = void 0;
|
|
4
|
+
const DEFAULT_RELOCATION_CALLBACK_CONCURRENCY = 8;
|
|
4
5
|
class ServiceCapturedObjectRelocation {
|
|
5
6
|
envelope;
|
|
6
7
|
units;
|
|
@@ -56,7 +57,7 @@ exports.ServiceCapturedObjectRelocation = ServiceCapturedObjectRelocation;
|
|
|
56
57
|
/** Captures the two valid relocation units: User Spot aggregate or one Actor. */
|
|
57
58
|
class ServiceRelocationObjectCaptureOwner {
|
|
58
59
|
maxConcurrentCallbacks;
|
|
59
|
-
constructor(maxConcurrentCallbacks =
|
|
60
|
+
constructor(maxConcurrentCallbacks = DEFAULT_RELOCATION_CALLBACK_CONCURRENCY) {
|
|
60
61
|
this.maxConcurrentCallbacks = maxConcurrentCallbacks;
|
|
61
62
|
requireCallbackConcurrency(maxConcurrentCallbacks);
|
|
62
63
|
}
|
|
@@ -127,7 +128,7 @@ class ServiceRelocationObjectRestoreOwner {
|
|
|
127
128
|
target;
|
|
128
129
|
authorityKey;
|
|
129
130
|
maxConcurrentCallbacks;
|
|
130
|
-
constructor(target, authorityKey, maxConcurrentCallbacks =
|
|
131
|
+
constructor(target, authorityKey, maxConcurrentCallbacks = DEFAULT_RELOCATION_CALLBACK_CONCURRENCY) {
|
|
131
132
|
this.target = target;
|
|
132
133
|
this.authorityKey = authorityKey;
|
|
133
134
|
this.maxConcurrentCallbacks = maxConcurrentCallbacks;
|
|
@@ -11,9 +11,18 @@ exports.encodeServiceRelocationEnvelope = encodeServiceRelocationEnvelope;
|
|
|
11
11
|
exports.decodeServiceRelocationEnvelope = decodeServiceRelocationEnvelope;
|
|
12
12
|
exports.inventoryDigest = inventoryDigest;
|
|
13
13
|
exports.crc32c = crc32c;
|
|
14
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
14
15
|
const node_crypto_1 = require("node:crypto");
|
|
16
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
15
17
|
const authority_key_codec_1 = require("../locations/authority-key-codec");
|
|
18
|
+
const service_wire_codec_generated_1 = require("../protocol/service_wire_codec.generated");
|
|
16
19
|
const service_wire_pilot_codec_generated_1 = require("../protocol/service_wire_pilot_codec.generated");
|
|
20
|
+
const actor_join_recovery_codec_1 = require("./actor-join-recovery-codec");
|
|
21
|
+
const MAX_RELOCATION_GENERATION = 0x7fffffffffffffffn;
|
|
22
|
+
const RELOCATION_PREPARING_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('preparing');
|
|
23
|
+
const RELOCATION_ACTIVATING_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('activating');
|
|
24
|
+
const RELOCATION_COMPLETED_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('completed');
|
|
25
|
+
const RELOCATION_LAST_PHASE = (0, service_wire_codec_generated_1.enumWireRelocationPhase)('aborted');
|
|
17
26
|
/** Deterministic Location authority wrapper for one immutable relocation root. */
|
|
18
27
|
class ServiceRelocationAuthorityPayloadCodec {
|
|
19
28
|
publish(currentPayload, publication) {
|
|
@@ -109,7 +118,7 @@ function projectServiceRelocationAuthorityTargetReady(payload, target) {
|
|
|
109
118
|
coordinatorNodeRid: target.nodeRid,
|
|
110
119
|
coordinatorNodeGeneration: target.nodeGeneration,
|
|
111
120
|
coordinatorExpectedStoreVersion: target.coordinatorExpectedStoreVersion,
|
|
112
|
-
phase:
|
|
121
|
+
phase: RELOCATION_ACTIVATING_PHASE,
|
|
113
122
|
sourceCleanupState: 0
|
|
114
123
|
});
|
|
115
124
|
return replaceCanonicalRelocationSlot(layout, slot);
|
|
@@ -150,7 +159,7 @@ function decodeCanonicalAuthorityPublication(payload) {
|
|
|
150
159
|
function decodeCanonicalAuthorityLayout(payload) {
|
|
151
160
|
try {
|
|
152
161
|
const bytes = Buffer.from(payload);
|
|
153
|
-
if (bytes.byteLength < 20 || bytes.byteLength >
|
|
162
|
+
if (bytes.byteLength < 20 || bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES)
|
|
154
163
|
return undefined;
|
|
155
164
|
const reader = new CanonicalReader(bytes);
|
|
156
165
|
reader.expect(Buffer.from('ZLAU'));
|
|
@@ -223,21 +232,21 @@ function decodeCanonicalRelocationSlot(payload, rootAggregateGeneration) {
|
|
|
223
232
|
const sourceCleanupState = reader.u8();
|
|
224
233
|
if (!reader.done ||
|
|
225
234
|
aggregateGeneration > 0x7ffffffffffffffen ||
|
|
226
|
-
(aggregateGeneration === 0n && phase !==
|
|
235
|
+
(aggregateGeneration === 0n && phase !== RELOCATION_PREPARING_PHASE) ||
|
|
227
236
|
(rootAggregateGeneration !== undefined && aggregateGeneration !== rootAggregateGeneration) ||
|
|
228
|
-
targetAttemptGeneration >
|
|
237
|
+
targetAttemptGeneration > MAX_RELOCATION_GENERATION ||
|
|
229
238
|
sourceNodeGeneration === 0n ||
|
|
230
|
-
sourceNodeGeneration >
|
|
239
|
+
sourceNodeGeneration > MAX_RELOCATION_GENERATION ||
|
|
231
240
|
sourceOwnerLeaseGeneration === 0n ||
|
|
232
|
-
sourceOwnerLeaseGeneration >
|
|
233
|
-
targetNodeGeneration >
|
|
234
|
-
targetOwnerLeaseGeneration >
|
|
241
|
+
sourceOwnerLeaseGeneration > MAX_RELOCATION_GENERATION ||
|
|
242
|
+
targetNodeGeneration > MAX_RELOCATION_GENERATION ||
|
|
243
|
+
targetOwnerLeaseGeneration > MAX_RELOCATION_GENERATION ||
|
|
235
244
|
coordinatorLeaseGeneration === 0n ||
|
|
236
|
-
coordinatorLeaseGeneration >
|
|
245
|
+
coordinatorLeaseGeneration > MAX_RELOCATION_GENERATION ||
|
|
237
246
|
coordinatorNodeGeneration === 0n ||
|
|
238
|
-
coordinatorNodeGeneration >
|
|
239
|
-
phase <
|
|
240
|
-
phase >
|
|
247
|
+
coordinatorNodeGeneration > MAX_RELOCATION_GENERATION ||
|
|
248
|
+
phase < RELOCATION_PREPARING_PHASE ||
|
|
249
|
+
phase > RELOCATION_LAST_PHASE ||
|
|
241
250
|
applicationVersion < 0n ||
|
|
242
251
|
sourceCleanupState > 2)
|
|
243
252
|
return undefined;
|
|
@@ -276,10 +285,10 @@ function encodeCanonicalRelocationSlot(value) {
|
|
|
276
285
|
if (aggregateGeneration > 0x7ffffffffffffffen) {
|
|
277
286
|
throw new TypeError('Aggregate generation exceeds the issued range.');
|
|
278
287
|
}
|
|
279
|
-
if (aggregateGeneration === 0n && value.phase !==
|
|
288
|
+
if (aggregateGeneration === 0n && value.phase !== RELOCATION_PREPARING_PHASE) {
|
|
280
289
|
throw new TypeError('Zero aggregate generation is only valid while preparing.');
|
|
281
290
|
}
|
|
282
|
-
if (targetAttemptGeneration >
|
|
291
|
+
if (targetAttemptGeneration > MAX_RELOCATION_GENERATION) {
|
|
283
292
|
throw new TypeError('Target attempt generation exceeds the ordinal range.');
|
|
284
293
|
}
|
|
285
294
|
const sourceNodeGeneration = canonicalNonZeroOrdinal(value.sourceNodeGeneration, 'source node generation');
|
|
@@ -288,7 +297,9 @@ function encodeCanonicalRelocationSlot(value) {
|
|
|
288
297
|
const targetOwnerLeaseGeneration = canonicalOrdinal(value.targetOwnerLeaseGeneration, 'target owner lease generation');
|
|
289
298
|
const coordinatorLeaseGeneration = canonicalNonZeroOrdinal(value.coordinatorLeaseGeneration, 'coordinator lease generation');
|
|
290
299
|
const coordinatorNodeGeneration = canonicalNonZeroOrdinal(value.coordinatorNodeGeneration, 'coordinator node generation');
|
|
291
|
-
if (!Number.isInteger(value.phase) ||
|
|
300
|
+
if (!Number.isInteger(value.phase) ||
|
|
301
|
+
value.phase < RELOCATION_PREPARING_PHASE ||
|
|
302
|
+
value.phase > RELOCATION_LAST_PHASE) {
|
|
292
303
|
throw new TypeError('Canonical relocation phase is invalid.');
|
|
293
304
|
}
|
|
294
305
|
if (!Number.isInteger(value.sourceCleanupState) ||
|
|
@@ -348,7 +359,7 @@ function encodeCanonicalRelocationPublicationSlot(layout, publication) {
|
|
|
348
359
|
coordinatorNodeRid: publication.coordinatorNodeRid ?? nodeRid,
|
|
349
360
|
coordinatorNodeGeneration: publication.coordinatorNodeGeneration ?? layout.nodeGeneration,
|
|
350
361
|
coordinatorExpectedStoreVersion: publication.coordinatorExpectedStoreVersion ?? '',
|
|
351
|
-
phase: publication.canonicalPhase ??
|
|
362
|
+
phase: publication.canonicalPhase ?? RELOCATION_COMPLETED_PHASE,
|
|
352
363
|
applicationVersion,
|
|
353
364
|
sourceCleanupState: publication.canonicalSourceCleanupState ?? 0
|
|
354
365
|
});
|
|
@@ -370,8 +381,8 @@ function replaceCanonicalRelocationSlot(layout, slot) {
|
|
|
370
381
|
body
|
|
371
382
|
]);
|
|
372
383
|
const result = Buffer.concat([envelope, canonicalU32(crc32c(envelope))]);
|
|
373
|
-
if (result.byteLength >
|
|
374
|
-
throw new TypeError(
|
|
384
|
+
if (result.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
385
|
+
throw new TypeError(`Canonical authority payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
375
386
|
}
|
|
376
387
|
return result;
|
|
377
388
|
}
|
|
@@ -721,8 +732,8 @@ function encodeAuthorityEnvelope(base, publication) {
|
|
|
721
732
|
}
|
|
722
733
|
const aggregateGeneration = positiveBigInt(publication.aggregateGeneration, 'aggregate generation');
|
|
723
734
|
const targetOwnerLeaseGeneration = positiveBigInt(publication.targetOwnerLeaseGeneration, 'target owner lease generation');
|
|
724
|
-
if (aggregateGeneration >
|
|
725
|
-
targetOwnerLeaseGeneration >
|
|
735
|
+
if (aggregateGeneration > MAX_RELOCATION_GENERATION ||
|
|
736
|
+
targetOwnerLeaseGeneration > MAX_RELOCATION_GENERATION) {
|
|
726
737
|
throw new TypeError('Relocation publication generations must fit signed 64-bit storage.');
|
|
727
738
|
}
|
|
728
739
|
const payload = Buffer.concat([
|
|
@@ -738,8 +749,8 @@ function encodeAuthorityEnvelope(base, publication) {
|
|
|
738
749
|
i64le(targetOwnerLeaseGeneration),
|
|
739
750
|
bytes32le(base)
|
|
740
751
|
]);
|
|
741
|
-
if (payload.byteLength >
|
|
742
|
-
throw new TypeError(
|
|
752
|
+
if (payload.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
753
|
+
throw new TypeError(`Location authority relocation payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
743
754
|
}
|
|
744
755
|
return payload;
|
|
745
756
|
}
|
|
@@ -759,8 +770,8 @@ function decodeAuthorityEnvelope(payload) {
|
|
|
759
770
|
const base = reader.bytes32();
|
|
760
771
|
if (!reader.done ||
|
|
761
772
|
aggregateGeneration === 0n ||
|
|
762
|
-
aggregateGeneration >
|
|
763
|
-
inventoryDigestBytes.byteLength !==
|
|
773
|
+
aggregateGeneration > MAX_RELOCATION_GENERATION ||
|
|
774
|
+
inventoryDigestBytes.byteLength !== actor_join_recovery_codec_1.SHA256_DIGEST_BYTES ||
|
|
764
775
|
targetOwnerLeaseGeneration <= 0n) {
|
|
765
776
|
return undefined;
|
|
766
777
|
}
|
|
@@ -852,8 +863,8 @@ function text16le(value) {
|
|
|
852
863
|
}
|
|
853
864
|
function bytes32le(value) {
|
|
854
865
|
const bytes = Buffer.from(value);
|
|
855
|
-
if (bytes.byteLength >
|
|
856
|
-
throw new TypeError(
|
|
866
|
+
if (bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
867
|
+
throw new TypeError(`Relocation byte field exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
857
868
|
}
|
|
858
869
|
const length = Buffer.alloc(4);
|
|
859
870
|
length.writeInt32LE(bytes.byteLength);
|
|
@@ -1001,7 +1012,7 @@ function canonicalU32(value) {
|
|
|
1001
1012
|
return result;
|
|
1002
1013
|
}
|
|
1003
1014
|
function canonicalU64(value) {
|
|
1004
|
-
if (value < 0n || value >
|
|
1015
|
+
if (value < 0n || value > stream_wire_1.UINT64_MAX) {
|
|
1005
1016
|
throw new TypeError('Canonical authority u64 is invalid.');
|
|
1006
1017
|
}
|
|
1007
1018
|
const result = Buffer.alloc(8);
|
|
@@ -1010,7 +1021,7 @@ function canonicalU64(value) {
|
|
|
1010
1021
|
}
|
|
1011
1022
|
function canonicalOrdinal(value, name) {
|
|
1012
1023
|
const ordinal = nonNegativeBigInt(value, name);
|
|
1013
|
-
if (ordinal >
|
|
1024
|
+
if (ordinal > MAX_RELOCATION_GENERATION) {
|
|
1014
1025
|
throw new TypeError(`${name} exceeds the ordinal range.`);
|
|
1015
1026
|
}
|
|
1016
1027
|
return ordinal;
|
|
@@ -1022,7 +1033,7 @@ function canonicalNonZeroOrdinal(value, name) {
|
|
|
1022
1033
|
return ordinal;
|
|
1023
1034
|
}
|
|
1024
1035
|
function canonicalI64(value) {
|
|
1025
|
-
if (value < 0n || value >
|
|
1036
|
+
if (value < 0n || value > MAX_RELOCATION_GENERATION) {
|
|
1026
1037
|
throw new TypeError('Canonical authority i64 is invalid.');
|
|
1027
1038
|
}
|
|
1028
1039
|
const result = Buffer.alloc(8);
|
|
@@ -1034,8 +1045,8 @@ class DotnetBinaryReader {
|
|
|
1034
1045
|
offset = 0;
|
|
1035
1046
|
constructor(payload) {
|
|
1036
1047
|
this.bytes = Buffer.from(payload);
|
|
1037
|
-
if (this.bytes.byteLength >
|
|
1038
|
-
throw new TypeError(
|
|
1048
|
+
if (this.bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
1049
|
+
throw new TypeError(`Location authority relocation payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
1039
1050
|
}
|
|
1040
1051
|
}
|
|
1041
1052
|
get done() {
|
|
@@ -1066,7 +1077,7 @@ class DotnetBinaryReader {
|
|
|
1066
1077
|
}
|
|
1067
1078
|
bytes32() {
|
|
1068
1079
|
const length = this.take(4).readInt32LE(0);
|
|
1069
|
-
if (length < 0 || length >
|
|
1080
|
+
if (length < 0 || length > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
1070
1081
|
throw new TypeError('Location authority relocation byte field is invalid.');
|
|
1071
1082
|
}
|
|
1072
1083
|
return Buffer.from(this.take(length));
|
|
@@ -1,9 +1,30 @@
|
|
|
1
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
2
|
-
import type { RequestResult, SubmitResult, ZLinkBackendMessageLike as MessageLike } from '../backend/runtime-values';
|
|
3
1
|
import type { RoutingId } from '../../contracts';
|
|
2
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
4
3
|
import type { ApplicationJobPermitPort } from '../application-jobs/contracts';
|
|
4
|
+
import type { ZLinkBackendMessageLike as MessageLike, RequestResult, SubmitResult } from '../backend/runtime-values';
|
|
5
5
|
import type { ServiceActorRef } from './service-stateful-registry';
|
|
6
6
|
import type { ServiceDirectSpotRouteFence, ServiceRetiredBoundSessionRouteFence } from './service-stateful-wire-codec';
|
|
7
|
+
export declare enum StreamSessionRuntimeState {
|
|
8
|
+
Created = 1,
|
|
9
|
+
Started = 2,
|
|
10
|
+
Closed = 5
|
|
11
|
+
}
|
|
12
|
+
export declare enum MeshNodeRuntimeState {
|
|
13
|
+
Preparing = 1,
|
|
14
|
+
Serving = 2,
|
|
15
|
+
Retiring = 3,
|
|
16
|
+
Draining = 4,
|
|
17
|
+
Stopped = 5,
|
|
18
|
+
Error = 6
|
|
19
|
+
}
|
|
20
|
+
export declare enum MeshPeerRuntimeState {
|
|
21
|
+
Connecting = 1,
|
|
22
|
+
Preparing = 2,
|
|
23
|
+
Serving = 3,
|
|
24
|
+
Draining = 4,
|
|
25
|
+
Closed = 5,
|
|
26
|
+
NotRequired = 6
|
|
27
|
+
}
|
|
7
28
|
export interface MeshOperationId {
|
|
8
29
|
readonly high: bigint;
|
|
9
30
|
readonly low: bigint;
|
|
@@ -142,6 +163,17 @@ export interface ActorTransferControlPayload {
|
|
|
142
163
|
readonly resultCode: number;
|
|
143
164
|
readonly failureErrno: number;
|
|
144
165
|
}
|
|
166
|
+
/** The Session owner's registry view of one Session binding (Session–Actor binding §5-2). */
|
|
167
|
+
export interface ServiceStreamSessionBinding {
|
|
168
|
+
readonly sessionRid: RoutingId;
|
|
169
|
+
readonly actor: ServiceActorRef;
|
|
170
|
+
readonly sessionOwnerNodeRid: RoutingId;
|
|
171
|
+
readonly sessionOwnerNodeGeneration: bigint;
|
|
172
|
+
readonly sessionOwnerId: string;
|
|
173
|
+
readonly sessionOwnerLeaseGeneration: bigint;
|
|
174
|
+
readonly bindingGeneration: bigint;
|
|
175
|
+
readonly membershipEpoch: bigint;
|
|
176
|
+
}
|
|
145
177
|
export interface ActorBindingControlPayload {
|
|
146
178
|
readonly kind: 'actorBinding';
|
|
147
179
|
readonly transition: 'active' | 'tombstone';
|
|
@@ -199,8 +231,13 @@ export interface ReceiveRecord {
|
|
|
199
231
|
readonly isPending?: () => boolean;
|
|
200
232
|
/** Absolute deadline used by the local lifecycle dispatch fence. */
|
|
201
233
|
readonly deadlineUnixMs?: bigint;
|
|
234
|
+
readonly activationRecord?: Extract<import('./service-stateful-wire-codec').ServiceStatefulWireRecord, {
|
|
235
|
+
readonly kind: 'instanceSpot';
|
|
236
|
+
}>;
|
|
202
237
|
readonly messageFollowOrigin?: ZLinkMessageFollowOrigin;
|
|
203
238
|
readonly onTerminalCompletion?: () => void | Promise<void>;
|
|
239
|
+
/** Marks the start of the first handler turn whose terminal record a Close waits for. */
|
|
240
|
+
readonly onHandlerTurnStarted?: () => void;
|
|
204
241
|
readonly applicationJobPermit?: ApplicationJobPermitPort;
|
|
205
242
|
readonly releaseRetainedIngress?: () => void;
|
|
206
243
|
reply(parts: MessageLike | readonly MessageLike[], flags?: number): SubmitResult;
|
|
@@ -279,12 +316,7 @@ export interface StreamSessionService {
|
|
|
279
316
|
lookupActor(targetNodeRid: RoutingId, actorId: string, timeoutMs?: number): MeshOperationId;
|
|
280
317
|
bindActor(sessionRid: RoutingId, actor: ServiceActorRef, timeoutMs?: number, onBindingReplaced?: (actorId: string, retiredSession: ServiceRetiredBoundSessionRouteFence, actor: ServiceActorRef) => void, actorAuthority?: StreamSessionActorAuthorityFence): MeshOperationId;
|
|
281
318
|
unbindActor(sessionRid: RoutingId, actor: ServiceActorRef, expectedBindingGeneration: bigint, timeoutMs?: number): MeshOperationId;
|
|
282
|
-
bindings(sessionRid: RoutingId): ReadonlyArray<
|
|
283
|
-
readonly sessionRid: RoutingId;
|
|
284
|
-
readonly actor: ServiceActorRef;
|
|
285
|
-
readonly bindingGeneration: bigint;
|
|
286
|
-
readonly membershipEpoch: bigint;
|
|
287
|
-
}>;
|
|
319
|
+
bindings(sessionRid: RoutingId): ReadonlyArray<ServiceStreamSessionBinding>;
|
|
288
320
|
sendToActor(sessionRid: RoutingId, actor: ServiceActorRef, parts: MessageLike | readonly MessageLike[], options?: {
|
|
289
321
|
flags?: number;
|
|
290
322
|
}): Promise<SubmitResult>;
|
|
@@ -1,7 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ActorTransferPhase = exports.ActorTransferRole = exports.ActorLifecycleKind = exports.OperationKind = exports.ReceiveKind = exports.ReadyOwnerKind = exports.ReadyDomain = void 0;
|
|
3
|
+
exports.ActorTransferPhase = exports.ActorTransferRole = exports.ActorLifecycleKind = exports.OperationKind = exports.ReceiveKind = exports.ReadyOwnerKind = exports.ReadyDomain = exports.MeshPeerRuntimeState = exports.MeshNodeRuntimeState = exports.StreamSessionRuntimeState = void 0;
|
|
4
4
|
exports.operationRequiresReply = operationRequiresReply;
|
|
5
|
+
var StreamSessionRuntimeState;
|
|
6
|
+
(function (StreamSessionRuntimeState) {
|
|
7
|
+
StreamSessionRuntimeState[StreamSessionRuntimeState["Created"] = 1] = "Created";
|
|
8
|
+
StreamSessionRuntimeState[StreamSessionRuntimeState["Started"] = 2] = "Started";
|
|
9
|
+
StreamSessionRuntimeState[StreamSessionRuntimeState["Closed"] = 5] = "Closed";
|
|
10
|
+
})(StreamSessionRuntimeState || (exports.StreamSessionRuntimeState = StreamSessionRuntimeState = {}));
|
|
11
|
+
var MeshNodeRuntimeState;
|
|
12
|
+
(function (MeshNodeRuntimeState) {
|
|
13
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Preparing"] = 1] = "Preparing";
|
|
14
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Serving"] = 2] = "Serving";
|
|
15
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Retiring"] = 3] = "Retiring";
|
|
16
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Draining"] = 4] = "Draining";
|
|
17
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Stopped"] = 5] = "Stopped";
|
|
18
|
+
MeshNodeRuntimeState[MeshNodeRuntimeState["Error"] = 6] = "Error";
|
|
19
|
+
})(MeshNodeRuntimeState || (exports.MeshNodeRuntimeState = MeshNodeRuntimeState = {}));
|
|
20
|
+
var MeshPeerRuntimeState;
|
|
21
|
+
(function (MeshPeerRuntimeState) {
|
|
22
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Connecting"] = 1] = "Connecting";
|
|
23
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Preparing"] = 2] = "Preparing";
|
|
24
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Serving"] = 3] = "Serving";
|
|
25
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Draining"] = 4] = "Draining";
|
|
26
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["Closed"] = 5] = "Closed";
|
|
27
|
+
MeshPeerRuntimeState[MeshPeerRuntimeState["NotRequired"] = 6] = "NotRequired";
|
|
28
|
+
})(MeshPeerRuntimeState || (exports.MeshPeerRuntimeState = MeshPeerRuntimeState = {}));
|
|
5
29
|
exports.ReadyDomain = Object.freeze({
|
|
6
30
|
None: 0,
|
|
7
31
|
Application: 1,
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
export interface ServiceSessionBindingRetainedDelivery {
|
|
2
|
-
deliver(): Promise<boolean>;
|
|
3
|
-
fail(error: unknown): void;
|
|
4
|
-
}
|
|
5
|
-
export type ServiceSessionBindingAdmissionResult = 'passThrough' | 'retained' | 'rejected';
|
|
6
1
|
export interface ServiceSessionBindingIngressPort {
|
|
7
2
|
actorSlot(actorId: string, sessionRid: string): Promise<number | undefined>;
|
|
8
|
-
/**
|
|
9
|
-
* Holds a current-binding push while its relocation seal is open
|
|
10
|
-
* (Session–Actor binding §8.1). The caller has already decided that the push
|
|
11
|
-
* names the current binding.
|
|
12
|
-
*/
|
|
13
|
-
retainOutbound(actorId: string, delivery: ServiceSessionBindingRetainedDelivery): Promise<ServiceSessionBindingAdmissionResult>;
|
|
14
|
-
clearOutbound(actorId: string, error: unknown): Promise<void>;
|
|
15
3
|
}
|
|
16
4
|
export declare function registerServiceSessionBindingIngressPort(service: object, port: ServiceSessionBindingIngressPort): void;
|
|
17
5
|
export declare function serviceSessionBindingIngressPortIfRegistered(service: object): ServiceSessionBindingIngressPort | undefined;
|
|
@@ -137,6 +137,8 @@ export declare class ServiceTerminalOperationRegistry<T> {
|
|
|
137
137
|
fail(id: bigint, error: unknown): boolean;
|
|
138
138
|
cancel(id: bigint): boolean;
|
|
139
139
|
isPending(id: bigint): boolean;
|
|
140
|
+
get size(): number;
|
|
141
|
+
expire(nowMs: number, turnDeadlineMs: number): number;
|
|
140
142
|
close(): void;
|
|
141
143
|
}
|
|
142
144
|
export {};
|