@zlink-systems/framework 0.25.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/Channels/IZLinkFanoutClient.d.ts +0 -6
- 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/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -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 +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- 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 +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- 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 +85 -123
- 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 +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- 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-contracts.d.ts +4 -2
- 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/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- 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 +7 -1
- package/dist/runtime/admission.js +11 -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 +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- 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-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -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 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- 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 -18
- 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.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- 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 +133 -81
- 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 +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- 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/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- 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 +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- 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.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -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 +23 -8
- 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-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- 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 -19
- 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 +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- 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 +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- 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 +19 -14
- package/dist/runtime/host/index.js +234 -175
- 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 +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- 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 +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- 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 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- 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 +79 -27
- 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 +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- 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 +44 -30
- 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 +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- 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 +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- 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 +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- 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 +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- 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 +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- 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 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- 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 +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- 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 +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- 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/session-serial-executor.js +2 -2
- 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/Channels/IZLinkFanoutClient.ts +0 -7
- 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/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- 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 +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- 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 +15 -36
- 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-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- 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 +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- 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 -31
- 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 +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- 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 +175 -106
- 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 +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- 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/listener-records.ts +21 -0
- 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 +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -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 +30 -19
- 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-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- 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 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- 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 +266 -418
- 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 +408 -312
- 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 +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- 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 +1161 -904
- 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 +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- 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 +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- 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 +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- 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 +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- 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 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- 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 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- 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/session-serial-executor.ts +2 -2
- 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/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- 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/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -17,9 +17,9 @@ export declare class ZLinkInstanceActivationAuthority implements ServiceAsyncIns
|
|
|
17
17
|
private readonly pending;
|
|
18
18
|
constructor(options: ZLinkInstanceActivationAuthorityOptions);
|
|
19
19
|
read(target: ServiceInstanceActivationTarget): Promise<ServiceInstanceAuthorityRead>;
|
|
20
|
-
reserve(activation: Omit<ServiceInstanceActivationRecoveryEnvelope, 'targetMeshName'
|
|
20
|
+
reserve(activation: Omit<ServiceInstanceActivationRecoveryEnvelope, 'targetMeshName'>, signal?: AbortSignal): Promise<ServiceInstanceAuthorityReserve>;
|
|
21
21
|
resume(target: ServiceInstanceActivationTarget, pending: ServicePendingInstanceActivation): Promise<ServiceInstanceActivationReservation>;
|
|
22
|
-
commit(target: ServiceInstanceActivationTarget, reservation: ServiceInstanceActivationReservation, spot: ServiceSpotState): Promise<{
|
|
22
|
+
commit(target: ServiceInstanceActivationTarget, reservation: ServiceInstanceActivationReservation, spot: ServiceSpotState, deadlineUnixMs?: bigint): Promise<{
|
|
23
23
|
readonly kind: 'committed' | 'lost';
|
|
24
24
|
readonly route: ServiceInstanceRouteFence;
|
|
25
25
|
}>;
|
|
@@ -28,6 +28,5 @@ export declare class ZLinkInstanceActivationAuthority implements ServiceAsyncIns
|
|
|
28
28
|
private requireOwner;
|
|
29
29
|
private deleteOrphan;
|
|
30
30
|
private awaitConcurrentActivation;
|
|
31
|
-
private awaitClosingRelease;
|
|
32
31
|
private requirePending;
|
|
33
32
|
}
|
|
@@ -7,7 +7,6 @@ const contracts_1 = require("../../contracts");
|
|
|
7
7
|
const service_authority_payload_codec_1 = require("../foundation/service-authority-payload-codec");
|
|
8
8
|
const routing_id_1 = require("../routing-id");
|
|
9
9
|
const authority_key_codec_1 = require("../locations/authority-key-codec");
|
|
10
|
-
const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
|
|
11
10
|
const relocation_blob_1 = require("../locations/relocation-blob");
|
|
12
11
|
const service_instance_activation_recovery_codec_1 = require("../foundation/service-instance-activation-recovery-codec");
|
|
13
12
|
const CREATION_REQUEST_RETENTION_MS = 24 * 60 * 60 * 1_000;
|
|
@@ -23,7 +22,7 @@ class ZLinkInstanceActivationAuthority {
|
|
|
23
22
|
const current = await this.options.store.readAuthority(authorityKey(target.targetSpotId));
|
|
24
23
|
return current.kind === 'snapshot' ? readyRead(current, target) : { kind: 'missing' };
|
|
25
24
|
}
|
|
26
|
-
async reserve(activation) {
|
|
25
|
+
async reserve(activation, signal) {
|
|
27
26
|
const target = activation.target;
|
|
28
27
|
const owner = this.requireOwner();
|
|
29
28
|
const requestBytes = (0, service_instance_activation_recovery_codec_1.encodeInstanceActivationRecoveryEnvelope)({
|
|
@@ -38,13 +37,12 @@ class ZLinkInstanceActivationAuthority {
|
|
|
38
37
|
throw new Error('Instance activation requires a Relocation Store.');
|
|
39
38
|
}
|
|
40
39
|
const requestHash = (0, node_crypto_1.createHash)('sha256').update(requestBytes).digest();
|
|
41
|
-
const stored = await (0, relocation_blob_1.putNewRelocationBlob)(relocationStore, requestBytes, CREATION_REQUEST_RETENTION_MS);
|
|
42
|
-
const storedRead = await relocationStore.read(stored.reference);
|
|
40
|
+
const stored = await (0, relocation_blob_1.putNewRelocationBlob)(relocationStore, requestBytes, CREATION_REQUEST_RETENTION_MS, signal);
|
|
41
|
+
const storedRead = await relocationStore.read(stored.reference, signal);
|
|
43
42
|
if (stored.reference.value.length === 0 ||
|
|
44
43
|
stored.expiresAt.getTime() <= stored.storeNow.getTime() ||
|
|
45
44
|
storedRead.kind !== 'found' ||
|
|
46
|
-
|
|
47
|
-
!Buffer.from(storedRead.bytes).equals(requestBytes)) {
|
|
45
|
+
Buffer.compare(storedRead.bytes, requestBytes) !== 0) {
|
|
48
46
|
await this.deleteOrphan(stored.reference);
|
|
49
47
|
throw new Error('Relocation Store returned an invalid creation request receipt.');
|
|
50
48
|
}
|
|
@@ -84,16 +82,7 @@ class ZLinkInstanceActivationAuthority {
|
|
|
84
82
|
count: 1
|
|
85
83
|
}
|
|
86
84
|
}
|
|
87
|
-
});
|
|
88
|
-
if (reserved.kind === 'conflict' || reserved.kind === 'alreadyExists') {
|
|
89
|
-
const existingState = reserved.current.kind === 'snapshot'
|
|
90
|
-
? (0, service_authority_payload_codec_1.decodeServiceInstanceAuthorityPayload)(reserved.current.payload)?.state
|
|
91
|
-
: undefined;
|
|
92
|
-
if (existingState === 'closing') {
|
|
93
|
-
await this.awaitClosingRelease(target, activation.deadlineUnixMs);
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
85
|
+
}, undefined, activation.deadlineUnixMs);
|
|
97
86
|
if (reserved.kind !== 'alreadyExists')
|
|
98
87
|
break;
|
|
99
88
|
this.options.metrics?.recordInstanceSpotClaimConflict(this.options.meshName, target.stableType, 'already_exists');
|
|
@@ -176,7 +165,7 @@ class ZLinkInstanceActivationAuthority {
|
|
|
176
165
|
});
|
|
177
166
|
return reservation;
|
|
178
167
|
}
|
|
179
|
-
async commit(target, reservation, spot) {
|
|
168
|
+
async commit(target, reservation, spot, deadlineUnixMs) {
|
|
180
169
|
const pending = this.requirePending(reservation);
|
|
181
170
|
requireCommitIdentity(target, reservation, pending.creating, spot, this.options.meshName);
|
|
182
171
|
let result;
|
|
@@ -208,7 +197,7 @@ class ZLinkInstanceActivationAuthority {
|
|
|
208
197
|
replayCursor: 0n
|
|
209
198
|
}
|
|
210
199
|
})
|
|
211
|
-
});
|
|
200
|
+
}, undefined, deadlineUnixMs);
|
|
212
201
|
}
|
|
213
202
|
catch (error) {
|
|
214
203
|
if (error instanceof contracts_1.ZLinkFrameworkException)
|
|
@@ -366,26 +355,6 @@ class ZLinkInstanceActivationAuthority {
|
|
|
366
355
|
}
|
|
367
356
|
throw new Error(`Concurrent Instance activation for '${target.targetSpotId}' did not reach Ready before deadline.`);
|
|
368
357
|
}
|
|
369
|
-
async awaitClosingRelease(target, deadlineUnixMs) {
|
|
370
|
-
const key = authorityKey(target.targetSpotId);
|
|
371
|
-
const deadlineMs = performance.now() + Number(deadlineUnixMs - BigInt(Date.now()));
|
|
372
|
-
while (performance.now() <= deadlineMs) {
|
|
373
|
-
const current = await this.options.store.readAuthority(key);
|
|
374
|
-
if (current.kind !== 'snapshot')
|
|
375
|
-
return;
|
|
376
|
-
const decoded = (0, service_authority_payload_codec_1.decodeServiceInstanceAuthorityPayload)(current.payload);
|
|
377
|
-
if (current.allocation.objectKind !== 'instance_spot' ||
|
|
378
|
-
current.allocation.stableType !== target.stableType ||
|
|
379
|
-
decoded?.kind !== 'instance_spot' ||
|
|
380
|
-
decoded.spotId !== target.targetSpotId) {
|
|
381
|
-
throw new Error('Instance authority changed to a different Spot while closing.');
|
|
382
|
-
}
|
|
383
|
-
if (decoded.state !== 'closing')
|
|
384
|
-
return;
|
|
385
|
-
await waitForActivationJoin(deadlineMs);
|
|
386
|
-
}
|
|
387
|
-
throw new Error(`Instance Spot '${target.targetSpotId}' close did not release authority before deadline.`);
|
|
388
|
-
}
|
|
389
358
|
requirePending(reservation) {
|
|
390
359
|
const pending = this.pending.get(reservation.token);
|
|
391
360
|
if (pending === undefined || pending.creating.objectGeneration !== reservation.attempt) {
|
|
@@ -396,11 +365,11 @@ class ZLinkInstanceActivationAuthority {
|
|
|
396
365
|
}
|
|
397
366
|
exports.ZLinkInstanceActivationAuthority = ZLinkInstanceActivationAuthority;
|
|
398
367
|
function readyRead(snapshot, target) {
|
|
399
|
-
const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(snapshot.payload)
|
|
368
|
+
const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(snapshot.payload) ??
|
|
369
|
+
(0, service_authority_payload_codec_1.decodeServiceClosingSpotAuthority)(snapshot.payload);
|
|
400
370
|
const creating = (0, service_authority_payload_codec_1.decodeServiceInstanceAuthorityPayload)(snapshot.payload);
|
|
401
371
|
if (creating?.state === 'coldActivating' &&
|
|
402
372
|
snapshot.allocation.objectKind === 'instance_spot' &&
|
|
403
|
-
snapshot.allocation.state === 'reserved' &&
|
|
404
373
|
creating.stableType === target.stableType &&
|
|
405
374
|
creating.spotId === target.targetSpotId &&
|
|
406
375
|
creating.ownerId === snapshot.ownerId &&
|
|
@@ -413,7 +382,8 @@ function readyRead(snapshot, target) {
|
|
|
413
382
|
return {
|
|
414
383
|
kind: 'creating',
|
|
415
384
|
objectGeneration: snapshot.objectGeneration,
|
|
416
|
-
authorityOwnerGeneration: snapshot.authorityOwnerGeneration
|
|
385
|
+
authorityOwnerGeneration: snapshot.authorityOwnerGeneration,
|
|
386
|
+
authority: snapshot
|
|
417
387
|
};
|
|
418
388
|
}
|
|
419
389
|
if (decoded?.kind !== 'instance_spot' ||
|
|
@@ -430,10 +400,11 @@ function readyRead(snapshot, target) {
|
|
|
430
400
|
target.targetNodeGeneration !== snapshot.allocation.descriptorLifecycleGeneration) {
|
|
431
401
|
return { kind: 'missing' };
|
|
432
402
|
}
|
|
433
|
-
return { kind: 'ready', route: routeFromSnapshot(snapshot) };
|
|
403
|
+
return { kind: 'ready', route: routeFromSnapshot(snapshot), authority: snapshot };
|
|
434
404
|
}
|
|
435
405
|
function readyExisting(snapshot, target) {
|
|
436
|
-
const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(snapshot.payload)
|
|
406
|
+
const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(snapshot.payload) ??
|
|
407
|
+
(0, service_authority_payload_codec_1.decodeServiceClosingSpotAuthority)(snapshot.payload);
|
|
437
408
|
if (decoded?.kind !== 'instance_spot' ||
|
|
438
409
|
decoded.stableType !== target.stableType ||
|
|
439
410
|
decoded.spotId !== target.targetSpotId ||
|
|
@@ -446,7 +417,7 @@ function readyExisting(snapshot, target) {
|
|
|
446
417
|
!(0, routing_id_1.routingIdsEqual)(decoded.ownerNodeRid, snapshot.allocation.descriptor.rid)) {
|
|
447
418
|
throw new Error('Existing Instance authority is not a matching Ready allocation.');
|
|
448
419
|
}
|
|
449
|
-
return { kind: 'ready', route: routeFromSnapshot(snapshot) };
|
|
420
|
+
return { kind: 'ready', route: routeFromSnapshot(snapshot), authority: snapshot };
|
|
450
421
|
}
|
|
451
422
|
async function waitForActivationJoin(deadlineMs) {
|
|
452
423
|
const remaining = deadlineMs - performance.now();
|
|
@@ -473,7 +444,8 @@ function requireCommitIdentity(target, reservation, creating, spot, meshName) {
|
|
|
473
444
|
}
|
|
474
445
|
}
|
|
475
446
|
function routeFromSnapshot(snapshot) {
|
|
476
|
-
const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(snapshot.payload)
|
|
447
|
+
const decoded = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(snapshot.payload) ??
|
|
448
|
+
(0, service_authority_payload_codec_1.decodeServiceClosingSpotAuthority)(snapshot.payload);
|
|
477
449
|
if (decoded?.kind !== 'instance_spot') {
|
|
478
450
|
throw new Error('Instance authority is not Ready.');
|
|
479
451
|
}
|
|
@@ -39,7 +39,7 @@ export declare class ZLinkLocationRuntimeOwner {
|
|
|
39
39
|
createSpotRouteResolver(spotMeshNames: readonly string[], spotRouterChannelIdByMesh: (meshName: string) => string, resolveLocalSpot?: (spotId: RoutingId) => import('../spots/spot-routing-internal').ZLinkSpotRouteTarget | undefined): ZLinkSpotRouteResolver | undefined;
|
|
40
40
|
createActorLocationResolver(spotMeshNames: readonly string[]): ZLinkStoreLocationResolvers | undefined;
|
|
41
41
|
ownerNodeRid(spotNodeRuntime?: ZLinkSpotNodeRuntimeManager): RoutingId;
|
|
42
|
-
startForRuntime(primaryMeshName: string | undefined, spotNodeRuntime: ZLinkSpotNodeRuntimeManager, channelRuntime: ZLinkChannelRuntimeManager): Promise<ZLinkLocationRuntime | undefined>;
|
|
42
|
+
startForRuntime(primaryMeshName: string | undefined, spotNodeRuntime: ZLinkSpotNodeRuntimeManager, channelRuntime: ZLinkChannelRuntimeManager, signal: AbortSignal, shutdownSignal: () => AbortSignal): Promise<ZLinkLocationRuntime | undefined>;
|
|
43
43
|
clearForStop(): ZLinkLocationRuntimeStopSnapshot;
|
|
44
44
|
private createRuntimeStores;
|
|
45
45
|
private createAndRememberStores;
|
|
@@ -134,12 +134,12 @@ class ZLinkLocationRuntimeOwner {
|
|
|
134
134
|
}
|
|
135
135
|
return this.options.fallbackNodeRid;
|
|
136
136
|
}
|
|
137
|
-
async startForRuntime(primaryMeshName, spotNodeRuntime, channelRuntime) {
|
|
137
|
+
async startForRuntime(primaryMeshName, spotNodeRuntime, channelRuntime, signal, shutdownSignal) {
|
|
138
138
|
const runtime = this.ensureRuntime(primaryMeshName);
|
|
139
139
|
if (runtime === undefined) {
|
|
140
140
|
return undefined;
|
|
141
141
|
}
|
|
142
|
-
await runtime.start(this.ownerNodeRid(spotNodeRuntime));
|
|
142
|
+
await runtime.start(this.ownerNodeRid(spotNodeRuntime), signal, shutdownSignal);
|
|
143
143
|
const stores = this.currentStores;
|
|
144
144
|
if (stores === undefined) {
|
|
145
145
|
return runtime;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RoutingId
|
|
1
|
+
import type { RoutingId } from '../../contracts';
|
|
2
2
|
import type { DefaultZLinkActorManager } from '../actors';
|
|
3
3
|
import type { DefaultZLinkSpotManager } from '../spots';
|
|
4
4
|
import type { ZLinkAuthorityStore } from '../locations/internal-store-contracts';
|
|
@@ -18,7 +18,7 @@ export interface ZLinkRemoteActorJoinReceiverOptions {
|
|
|
18
18
|
export declare class ZLinkRemoteActorJoinReceiver {
|
|
19
19
|
private readonly options;
|
|
20
20
|
constructor(options: ZLinkRemoteActorJoinReceiverOptions);
|
|
21
|
-
receive(payload: unknown
|
|
21
|
+
receive(payload: unknown): Promise<{
|
|
22
22
|
readonly accepted: boolean;
|
|
23
23
|
readonly actorNodeRid: string;
|
|
24
24
|
readonly actorNodeRidHex?: string;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkRemoteActorJoinReceiver = void 0;
|
|
4
4
|
const runtime_message_1 = require("../backend/runtime-message");
|
|
5
|
-
const actor_runtime_state_1 = require("../actors/actor-runtime-state");
|
|
6
5
|
const actor_remote_wire_1 = require("../actors/actor-remote-wire");
|
|
7
6
|
const authority_key_codec_1 = require("../locations/authority-key-codec");
|
|
8
7
|
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
@@ -12,7 +11,7 @@ class ZLinkRemoteActorJoinReceiver {
|
|
|
12
11
|
constructor(options) {
|
|
13
12
|
this.options = options;
|
|
14
13
|
}
|
|
15
|
-
async receive(payload
|
|
14
|
+
async receive(payload) {
|
|
16
15
|
let join;
|
|
17
16
|
try {
|
|
18
17
|
join = (0, actor_remote_wire_1.decodeRemoteActorJoinPayload)(payload);
|
|
@@ -38,22 +37,10 @@ class ZLinkRemoteActorJoinReceiver {
|
|
|
38
37
|
generation: BigInt(join.actorGeneration)
|
|
39
38
|
};
|
|
40
39
|
state.setNativeActorRef(actorRef);
|
|
41
|
-
const refreshedTarget = (0, actor_runtime_state_1.mergeRemoteBoundSessionTarget)({
|
|
42
|
-
routerChannelId: join.boundSessionRouterChannelId ??
|
|
43
|
-
join.routerChannelId ??
|
|
44
|
-
routeContext.channelName ??
|
|
45
|
-
'',
|
|
46
|
-
targetNodeRid: join.boundSessionTargetNodeRid ?? (0, routing_id_1.normalizeRoutingId)(routeContext.sourceNodeRid),
|
|
47
|
-
spotId: join.boundSessionSpotId ??
|
|
48
|
-
join.sourceSpotId ??
|
|
49
|
-
(0, routing_id_1.normalizeRoutingId)(routeContext.sourceNodeRid)
|
|
50
|
-
}, (0, actor_runtime_state_1.preferredRemoteBoundSessionTarget)(state.remoteBoundSessionTarget, state.boundSessionTransferTarget));
|
|
51
|
-
state.setRemoteBoundSessionTarget(refreshedTarget);
|
|
52
40
|
const request = runtime_message_1.ZLinkBufferMessage.from(Buffer.from(join.request, 'base64'));
|
|
53
41
|
try {
|
|
54
42
|
const response = await this.requireSpotManager().admitActorJoin(join.spotId, actor, request, (spot) => {
|
|
55
43
|
state.setJoinedSpot(join.spotId, spot);
|
|
56
|
-
return () => state.clearJoinedSpot();
|
|
57
44
|
}, undefined, undefined, join.requestContentType);
|
|
58
45
|
const reply = response.reply;
|
|
59
46
|
return {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ActorRef, type RoutingId, type ZLinkSessionActor } from '../../contracts';
|
|
2
2
|
import type { DefaultZLinkActorManager, ZLinkRemoteActorPacketTarget } from '../actors';
|
|
3
3
|
import type { ZLinkStreamActorLookupPort } from '../streams/stream-binding-runtime-ports';
|
|
4
4
|
import type { MeshRouterResolver } from './mesh-router-resolver';
|
|
@@ -20,8 +20,9 @@ export declare class ZLinkRemoteActorPacketTargetStore {
|
|
|
20
20
|
decodeFromWire(value: unknown): ZLinkRemoteActorPacketTarget | undefined;
|
|
21
21
|
clear(actorId: string, expectedTenureKey?: string, expectedActor?: ZLinkSessionActor): void;
|
|
22
22
|
cachedTargetForActor(actor: ZLinkSessionActor): ZLinkRemoteActorPacketTarget | undefined;
|
|
23
|
-
targetForState(actorId: string
|
|
23
|
+
targetForState(actorId: string): ZLinkRemoteActorPacketTarget | undefined;
|
|
24
24
|
targetForActorRef(actorRef: ActorRef): ZLinkRemoteActorPacketTarget | undefined;
|
|
25
|
+
isLocalActorRef(actorRef: ActorRef): boolean;
|
|
25
26
|
tenureKeyForActor(actor: ZLinkSessionActor): string;
|
|
26
27
|
tenureKeyForActorRef(actorId: string, actorRef: ActorRef): string;
|
|
27
28
|
rememberActorTarget(actor: ZLinkSessionActor, target: ZLinkRemoteActorPacketTarget, expectedTenureKey?: string): void;
|
|
@@ -4,7 +4,6 @@ exports.ZLinkRemoteActorPacketTargetStore = void 0;
|
|
|
4
4
|
const contracts_1 = require("../../contracts");
|
|
5
5
|
const actor_packet_relay_wire_1 = require("../actors/actor-packet-relay-wire");
|
|
6
6
|
const routing_id_1 = require("../routing-id");
|
|
7
|
-
const routing_id_2 = require("../routing-id");
|
|
8
7
|
class ZLinkRemoteActorPacketTargetStore {
|
|
9
8
|
options;
|
|
10
9
|
sessionActorPacketTargets = new WeakMap();
|
|
@@ -63,53 +62,18 @@ class ZLinkRemoteActorPacketTargetStore {
|
|
|
63
62
|
(actorIdEntry?.routeKey === routeKey ? actorIdEntry.target : undefined) ??
|
|
64
63
|
this.targetForActorRef(actor.ref));
|
|
65
64
|
}
|
|
66
|
-
targetForState(actorId
|
|
65
|
+
targetForState(actorId) {
|
|
67
66
|
const state = this.options.actorManager()?.getState(actorId);
|
|
68
67
|
if (state?.remoteActorPacketTarget !== undefined &&
|
|
69
68
|
(state.spotId === undefined ||
|
|
70
|
-
(0,
|
|
69
|
+
(0, routing_id_1.routingIdsEqual)(state.remoteActorPacketTarget.spotId, state.spotId))) {
|
|
71
70
|
return state.remoteActorPacketTarget;
|
|
72
71
|
}
|
|
73
|
-
|
|
74
|
-
if (spotId !== undefined && state?.remoteActorPacketTarget !== undefined) {
|
|
75
|
-
// The cached packet target refers to a different Spot than the
|
|
76
|
-
// actor's current membership (the actor just moved Entry -> User).
|
|
77
|
-
// Combining the stale target's node with the new Spot id fabricates
|
|
78
|
-
// a route with no complete Ready authority fence, and the next
|
|
79
|
-
// direct request then fails the fence check instead of resolving
|
|
80
|
-
// the current owner route (spec 12 §direct payload uses the
|
|
81
|
-
// Location Store's current owner route; spec 32:87 — an unavailable
|
|
82
|
-
// route is Unavailable, not a fabricated hit). Publish no hint so
|
|
83
|
-
// the source clears its cache and re-resolves completely.
|
|
84
|
-
return undefined;
|
|
85
|
-
}
|
|
86
|
-
const actorRef = state?.nativeActorRef;
|
|
87
|
-
const targetNodeRid = actorRef?.nodeRid ?? this.options.primaryNodeRid();
|
|
88
|
-
const routerChannelId = routerChannelIdHint ??
|
|
89
|
-
this.options.meshRouters.defaultSpotRouterChannelId() ??
|
|
90
|
-
this.options.meshRouters.defaultRouterChannelId();
|
|
91
|
-
const localNodeRid = this.options.primaryNodeRid();
|
|
92
|
-
if (spotId === undefined &&
|
|
93
|
-
targetNodeRid !== undefined &&
|
|
94
|
-
localNodeRid !== undefined &&
|
|
95
|
-
(0, routing_id_2.routingIdsEqual)(targetNodeRid, localNodeRid)) {
|
|
96
|
-
return undefined;
|
|
97
|
-
}
|
|
98
|
-
if (spotId === undefined || targetNodeRid === undefined || routerChannelId === undefined) {
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
routerChannelId,
|
|
103
|
-
targetNodeRid: (0, routing_id_1.normalizeRoutingId)(targetNodeRid),
|
|
104
|
-
spotId: validateSpotId(spotId),
|
|
105
|
-
spotKind: contracts_1.ZLinkSpotKind.User,
|
|
106
|
-
...(state?.spotGeneration === undefined ? {} : { targetSpotGeneration: state.spotGeneration })
|
|
107
|
-
};
|
|
72
|
+
return undefined;
|
|
108
73
|
}
|
|
109
74
|
targetForActorRef(actorRef) {
|
|
110
75
|
const targetNodeRid = actorRef.nodeRid;
|
|
111
|
-
|
|
112
|
-
if (localNodeRid !== undefined && (0, routing_id_2.routingIdsEqual)(localNodeRid, targetNodeRid)) {
|
|
76
|
+
if (this.isLocalActorRef(actorRef)) {
|
|
113
77
|
return undefined;
|
|
114
78
|
}
|
|
115
79
|
const meshName = actorRef.meshName;
|
|
@@ -127,6 +91,10 @@ class ZLinkRemoteActorPacketTargetStore {
|
|
|
127
91
|
spotKind: contracts_1.ZLinkSpotKind.Entry
|
|
128
92
|
};
|
|
129
93
|
}
|
|
94
|
+
isLocalActorRef(actorRef) {
|
|
95
|
+
const localNodeRid = this.options.primaryNodeRid();
|
|
96
|
+
return localNodeRid !== undefined && (0, routing_id_1.routingIdsEqual)(localNodeRid, actorRef.nodeRid);
|
|
97
|
+
}
|
|
130
98
|
tenureKeyForActor(actor) {
|
|
131
99
|
return sessionActorPacketTargetTenureKey(actor);
|
|
132
100
|
}
|
|
@@ -172,10 +140,3 @@ function sessionActorPacketTargetTenureKeyForRef(actorId, actorRef) {
|
|
|
172
140
|
ref.ownerLeaseGeneration?.toString() ?? ''
|
|
173
141
|
].join(':');
|
|
174
142
|
}
|
|
175
|
-
function validateSpotId(value) {
|
|
176
|
-
const byteLength = Buffer.byteLength(value, 'utf8');
|
|
177
|
-
if (byteLength < 1 || byteLength > 255) {
|
|
178
|
-
throw new TypeError('SpotId must contain between 1 and 255 UTF-8 bytes.');
|
|
179
|
-
}
|
|
180
|
-
return value;
|
|
181
|
-
}
|
|
@@ -18,7 +18,7 @@ export interface ZLinkRemoteBoundSessionRelayOptions {
|
|
|
18
18
|
readonly destroyedActorRefs: ReadonlyMap<string, ActorRef>;
|
|
19
19
|
readonly boundSessionFactory: (actorId: string) => DefaultZLinkBoundSession;
|
|
20
20
|
readonly updateRemoteActorPacketTarget: (actorId: string, value: unknown) => Promise<void>;
|
|
21
|
-
readonly actorPacketTargetForState: (actorId: string
|
|
21
|
+
readonly actorPacketTargetForState: (actorId: string) => ZLinkRemoteActorPacketTarget | undefined;
|
|
22
22
|
readonly reportOwnershipRefreshError?: (actorId: string, error: unknown) => void;
|
|
23
23
|
}
|
|
24
24
|
export declare class ZLinkRemoteBoundSessionRelay {
|
|
@@ -46,9 +46,8 @@ export declare class ZLinkRemoteBoundSessionRelay {
|
|
|
46
46
|
private warnLateSessionRouteUpdate;
|
|
47
47
|
private applyServiceWireSessionRelocationRoute;
|
|
48
48
|
private validateServiceWireSessionRoute;
|
|
49
|
-
rememberRemoteBoundSessionTarget(actorId: string, target: ZLinkRemoteBoundSessionTarget | undefined): void;
|
|
50
49
|
resolveRemoteBoundSessionTarget(sourceNodeRid: RoutingId, sourceSessionRid: RoutingId): ZLinkRemoteBoundSessionTarget | undefined;
|
|
51
|
-
actorPacketTargetForState(actorId: string
|
|
50
|
+
actorPacketTargetForState(actorId: string): ZLinkRemoteActorPacketTarget | undefined;
|
|
52
51
|
clearOwnership(actorId: string): void;
|
|
53
52
|
sendActorResponse(actor: ZLinkActor, packetName: string, requestSeq: bigint, response: unknown, replyOptions: ZLinkActorResponseOptions, fallbackBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
54
53
|
sendActorError(actorId: string, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, fallbackBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
@@ -74,15 +74,6 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
74
74
|
async receiveRemoteBoundSessionSend(payload) {
|
|
75
75
|
const send = (0, bound_session_wire_1.decodeRemoteBoundSessionSendPayload)(payload);
|
|
76
76
|
await this.options.updateRemoteActorPacketTarget(send.actorId, send.actorPacketTarget);
|
|
77
|
-
const owner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwnerIfRegistered)(this.options.streamBindingRuntime());
|
|
78
|
-
const retained = await owner?.retainRelocationOutbound(send.actorId, {
|
|
79
|
-
deliver: () => this.deliverRemoteBoundSessionSend(send),
|
|
80
|
-
fail: (error) => this.options.reportOwnershipRefreshError?.(send.actorId, error)
|
|
81
|
-
}, send.relocationSealId);
|
|
82
|
-
if (retained === 'retained')
|
|
83
|
-
return { ok: true };
|
|
84
|
-
if (retained === 'rejected')
|
|
85
|
-
return { ok: false };
|
|
86
77
|
return { ok: await this.deliverRemoteBoundSessionSend(send) };
|
|
87
78
|
}
|
|
88
79
|
async deliverRemoteBoundSessionSend(send) {
|
|
@@ -192,7 +183,7 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
192
183
|
await owner.clearRelocation(actorId, error);
|
|
193
184
|
void this.options
|
|
194
185
|
.streamBindingRuntime()
|
|
195
|
-
.
|
|
186
|
+
.closeSessionBinding(actorId, value.session)
|
|
196
187
|
.catch((disconnectError) => this.options.reportOwnershipRefreshError?.(actorId, disconnectError));
|
|
197
188
|
state.sealAbortCleanup?.();
|
|
198
189
|
};
|
|
@@ -228,7 +219,7 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
228
219
|
await owner.clearRelocation(actorId, error);
|
|
229
220
|
void this.options
|
|
230
221
|
.streamBindingRuntime()
|
|
231
|
-
.
|
|
222
|
+
.closeSessionBinding(actorId, value.session)
|
|
232
223
|
.catch((disconnectError) => this.options.reportOwnershipRefreshError?.(actorId, disconnectError));
|
|
233
224
|
}
|
|
234
225
|
}
|
|
@@ -257,7 +248,6 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
257
248
|
}
|
|
258
249
|
const state = this.activeServiceWireRelocations.get(key);
|
|
259
250
|
if (state === undefined) {
|
|
260
|
-
await (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.streamBindingRuntime()).discardRelocationOutbound(value.actor.actorId, key, new bound_session_wire_1.ZLinkRemoteBoundSessionFenceError(`Actor '${value.actor.actorId}' command 44 did not match an active command 42.`));
|
|
261
251
|
this.warnLateSessionRouteUpdate(value);
|
|
262
252
|
return;
|
|
263
253
|
}
|
|
@@ -317,7 +307,7 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
317
307
|
(0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.streamBindingRuntime()).clearRelocation(state.actorId, error);
|
|
318
308
|
await this.options
|
|
319
309
|
.streamBindingRuntime()
|
|
320
|
-
.
|
|
310
|
+
.closeSessionBinding(state.actorId, value.session)
|
|
321
311
|
.catch((disconnectError) => this.options.reportOwnershipRefreshError?.(state.actorId, disconnectError));
|
|
322
312
|
throw error;
|
|
323
313
|
}
|
|
@@ -338,7 +328,7 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
338
328
|
const owner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(runtime);
|
|
339
329
|
const fingerprint = (0, service_stateful_wire_codec_1.encodeSessionRelocationRoute)(value).toString('base64');
|
|
340
330
|
if (value.route.action === 'abort') {
|
|
341
|
-
await owner.applyRelocation(value.actor.actorId, key, fingerprint,
|
|
331
|
+
await owner.applyRelocation(value.actor.actorId, key, fingerprint, async () => {
|
|
342
332
|
if (!(await runtime.abortActorRouteSeal(value.actor.actorId, key))) {
|
|
343
333
|
throw new bound_session_wire_1.ZLinkRemoteBoundSessionFenceError(`Actor '${value.actor.actorId}' command 44 abort lost its Session seal.`);
|
|
344
334
|
}
|
|
@@ -357,9 +347,10 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
357
347
|
nodeRid: (0, routing_id_1.decodeRoutingId)(committedRoute.targetNodeRid, undefined),
|
|
358
348
|
bindingGeneration: value.session.bindingGeneration,
|
|
359
349
|
ownershipGeneration: committedRoute.targetAuthorityOwnerGeneration,
|
|
360
|
-
ownerNodeGeneration: committedRoute.targetNodeGeneration
|
|
350
|
+
ownerNodeGeneration: committedRoute.targetNodeGeneration,
|
|
351
|
+
ownerLeaseGeneration: committedRoute.targetOwnerLeaseGeneration
|
|
361
352
|
};
|
|
362
|
-
await owner.applyRelocation(value.actor.actorId, key, fingerprint,
|
|
353
|
+
await owner.applyRelocation(value.actor.actorId, key, fingerprint, async () => {
|
|
363
354
|
await runtime.commitActorRoute(targetActorRef, undefined, {
|
|
364
355
|
confirmRemoteSessionBinding: 'send',
|
|
365
356
|
releaseSeal: { sealId: key }
|
|
@@ -385,9 +376,6 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
385
376
|
throw new bound_session_wire_1.ZLinkRemoteBoundSessionFenceError(`Actor '${value.actor.actor.actorId}' command 42 was fenced by its exact Session route.`);
|
|
386
377
|
}
|
|
387
378
|
}
|
|
388
|
-
rememberRemoteBoundSessionTarget(actorId, target) {
|
|
389
|
-
this.options.actorManager()?.getState(actorId)?.setRemoteBoundSessionTarget(target);
|
|
390
|
-
}
|
|
391
379
|
resolveRemoteBoundSessionTarget(sourceNodeRid, sourceSessionRid) {
|
|
392
380
|
const target = this.options.meshRouters.remoteBoundSessionTargetForSource(sourceNodeRid);
|
|
393
381
|
if (target === undefined)
|
|
@@ -404,8 +392,8 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
404
392
|
sessionRid: sourceSessionRid
|
|
405
393
|
};
|
|
406
394
|
}
|
|
407
|
-
actorPacketTargetForState(actorId
|
|
408
|
-
return this.options.actorPacketTargetForState(actorId
|
|
395
|
+
actorPacketTargetForState(actorId) {
|
|
396
|
+
return this.options.actorPacketTargetForState(actorId);
|
|
409
397
|
}
|
|
410
398
|
clearOwnership(actorId) {
|
|
411
399
|
this.actorOwnershipGenerations.delete(actorId);
|
|
@@ -471,7 +459,7 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
471
459
|
.sendNativeBoundSessionError(actorSessionNode, actorRef, packetName, requestSeq, error, metadata, signal);
|
|
472
460
|
}
|
|
473
461
|
async sendRemoteBoundSessionResponse(target, actorId, packetName, requestSeq, message, replyOptions, signal) {
|
|
474
|
-
const actorPacketTarget = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketTarget)(this.options.actorPacketTargetForState(actorId
|
|
462
|
+
const actorPacketTarget = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketTarget)(this.options.actorPacketTargetForState(actorId));
|
|
475
463
|
await this.sendRemoteBoundSessionControl(target, (0, bound_session_wire_1.encodeRemoteBoundSessionResponsePayload)({
|
|
476
464
|
actorId,
|
|
477
465
|
boundPacketName: packetName,
|
|
@@ -489,7 +477,7 @@ class ZLinkRemoteBoundSessionRelay {
|
|
|
489
477
|
requestSeq,
|
|
490
478
|
error,
|
|
491
479
|
metadata,
|
|
492
|
-
actorPacketTarget: (0, actor_packet_relay_wire_1.encodeRemoteActorPacketTarget)(this.options.actorPacketTargetForState(actorId
|
|
480
|
+
actorPacketTarget: (0, actor_packet_relay_wire_1.encodeRemoteActorPacketTarget)(this.options.actorPacketTargetForState(actorId))
|
|
493
481
|
}), signal);
|
|
494
482
|
}
|
|
495
483
|
async sendRemoteBoundSessionControl(target, payload, signal) {
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { ZLinkFrameworkRuntimeState, type
|
|
1
|
+
import { ZLinkFrameworkRuntimeState, type ZLinkMeshNodeDescriptor, type ZLinkObservedStatus, type ZLinkRouteMeshRuntime, type ZLinkRouteMeshStatus } from '../../contracts';
|
|
2
|
+
import type { ZLinkActivationAdmission } from '../activation-admission';
|
|
3
|
+
import type { ZLinkRuntimeAdmissionGate } from '../admission';
|
|
4
|
+
import type { ZLinkBackendMeshNode } from '../backend';
|
|
5
|
+
import type { ZLinkSpotNodeOptions } from '../configuration';
|
|
2
6
|
type ZLinkDrainForceReason = 'deadline_exceeded' | 'drain_state_publish_failed' | 'owner_cleanup_failed' | 'teardown_failed';
|
|
3
7
|
type ZLinkMeshDrainResult = {
|
|
4
8
|
readonly kind: 'drained';
|
|
@@ -7,10 +11,6 @@ type ZLinkMeshDrainResult = {
|
|
|
7
11
|
readonly reason: ZLinkDrainForceReason;
|
|
8
12
|
readonly error?: unknown;
|
|
9
13
|
};
|
|
10
|
-
import type { ZLinkBackendMeshNode } from '../backend';
|
|
11
|
-
import type { ZLinkRuntimeAdmissionGate } from '../admission';
|
|
12
|
-
import type { ZLinkSpotNodeOptions } from '../configuration';
|
|
13
|
-
import { type ZLinkMeshNodeDescriptor } from '../../contracts';
|
|
14
14
|
export interface ZLinkRouteMeshRuntimeCoordinatorOptions {
|
|
15
15
|
readonly meshNames: readonly string[];
|
|
16
16
|
readonly meshOptions: ReadonlyMap<string, ZLinkSpotNodeOptions>;
|
|
@@ -20,6 +20,7 @@ export interface ZLinkRouteMeshRuntimeCoordinatorOptions {
|
|
|
20
20
|
readonly isLocationStoreHealthy?: () => boolean;
|
|
21
21
|
readonly hostState?: () => ZLinkFrameworkRuntimeState;
|
|
22
22
|
readonly admission: ZLinkRuntimeAdmissionGate;
|
|
23
|
+
readonly activationAdmission?: ZLinkActivationAdmission;
|
|
23
24
|
readonly publishRetiring: (meshName: string, signal: AbortSignal) => Promise<void>;
|
|
24
25
|
readonly rollbackRetiring: (meshName: string, signal: AbortSignal) => Promise<void>;
|
|
25
26
|
readonly publishDraining: (meshName: string, signal: AbortSignal) => Promise<void>;
|
|
@@ -36,9 +37,6 @@ export interface ZLinkLocalPlacementCounts {
|
|
|
36
37
|
export declare class ZLinkRouteMeshRuntimeCoordinator implements ZLinkRouteMeshRuntime {
|
|
37
38
|
private readonly options;
|
|
38
39
|
private readonly states;
|
|
39
|
-
private readonly placementFingerprints;
|
|
40
|
-
private readonly peerFingerprints;
|
|
41
|
-
private readonly locationStoreHealthFingerprints;
|
|
42
40
|
private placementObserver?;
|
|
43
41
|
private hostOperation?;
|
|
44
42
|
private shutdownOperation?;
|
|
@@ -46,6 +44,7 @@ export declare class ZLinkRouteMeshRuntimeCoordinator implements ZLinkRouteMeshR
|
|
|
46
44
|
constructor(options: ZLinkRouteMeshRuntimeCoordinatorOptions);
|
|
47
45
|
markServing(): void;
|
|
48
46
|
snapshot(meshName: string): ZLinkRouteMeshStatus;
|
|
47
|
+
private buildSnapshot;
|
|
49
48
|
observe(meshName: string, capacity?: number, signal?: AbortSignal): AsyncIterable<ZLinkObservedStatus<ZLinkRouteMeshStatus>>;
|
|
50
49
|
isReady(meshName: string): boolean;
|
|
51
50
|
hostStateChanged(): void;
|
|
@@ -53,7 +52,7 @@ export declare class ZLinkRouteMeshRuntimeCoordinator implements ZLinkRouteMeshR
|
|
|
53
52
|
drain(meshName: string, deadlineMs?: number, signal?: AbortSignal): Promise<ZLinkMeshDrainResult>;
|
|
54
53
|
awaitDrained(meshName: string, signal?: AbortSignal): Promise<ZLinkMeshDrainResult>;
|
|
55
54
|
drainHost(deadlineMs?: number, signal?: AbortSignal): Promise<ZLinkMeshDrainResult>;
|
|
56
|
-
shutdownHost(deadline
|
|
55
|
+
shutdownHost(deadline: number | Date, signal: AbortSignal): Promise<ZLinkMeshDrainResult>;
|
|
57
56
|
prepareHostRetire(deadlineMs: number): Promise<'prepared' | 'store_unavailable' | 'deadline_exceeded'>;
|
|
58
57
|
/**
|
|
59
58
|
* Relocates stateful resources without closing application transport.
|
|
@@ -64,12 +63,17 @@ export declare class ZLinkRouteMeshRuntimeCoordinator implements ZLinkRouteMeshR
|
|
|
64
63
|
private performHostDrain;
|
|
65
64
|
private performHostShutdown;
|
|
66
65
|
private transition;
|
|
67
|
-
private
|
|
66
|
+
private publishCurrentStatus;
|
|
67
|
+
private publishSnapshot;
|
|
68
|
+
private publishStatus;
|
|
68
69
|
private startPlacementObserver;
|
|
69
70
|
private stopPlacementObserverIfIdle;
|
|
70
71
|
private observePlacementChanges;
|
|
71
72
|
private requireState;
|
|
72
73
|
}
|
|
74
|
+
export declare class ZLinkDrainingStatePublishError extends Error {
|
|
75
|
+
constructor(cause: unknown);
|
|
76
|
+
}
|
|
73
77
|
export declare class ZLinkRetiringRollbackError extends Error {
|
|
74
78
|
constructor();
|
|
75
79
|
}
|