@zlink-systems/framework 0.21.0 → 0.23.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/ZLinkMessage.js +5 -5
- package/dist/contracts/Configuration/CodecContentType.js +5 -7
- package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
- package/dist/contracts/Configuration/EndpointNotation.js +4 -8
- package/dist/contracts/Configuration/Registration.js +14 -11
- package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
- package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
- package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
- package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
- package/dist/contracts/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
- package/dist/location-store-integration.js +16 -16
- package/dist/nest-integration.js +17 -11
- package/dist/runtime/abort.js +9 -5
- package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
- package/dist/runtime/actors/actor-authority-publication.js +18 -17
- package/dist/runtime/actors/actor-client.js +83 -63
- package/dist/runtime/actors/actor-context.js +28 -22
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
- package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
- package/dist/runtime/actors/actor-local-native-join.js +18 -19
- package/dist/runtime/actors/actor-mailbox.js +1 -1
- package/dist/runtime/actors/actor-message-follow-context.js +24 -21
- package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
- package/dist/runtime/actors/actor-remote-joiner.js +20 -17
- package/dist/runtime/actors/actor-remote-wire.js +6 -7
- package/dist/runtime/actors/actor-runtime-state.js +87 -81
- package/dist/runtime/actors/actor-transfer-registry.js +3 -5
- package/dist/runtime/actors/bound-session-wire.js +14 -9
- package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
- package/dist/runtime/actors/index.js +2 -5
- package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
- package/dist/runtime/actors/post-commit-actor-location.js +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
- package/dist/runtime/admission.js +2 -6
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
- package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
- package/dist/runtime/backend/contracts/index.d.ts +1 -0
- package/dist/runtime/backend/mesh-completion-table.js +1 -3
- package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
- package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
- package/dist/runtime/backend/runtime-message.js +3 -3
- package/dist/runtime/backend/runtime-values.d.ts +2 -2
- package/dist/runtime/backend/runtime-values.js +4 -5
- package/dist/runtime/channels/channel-clients.js +27 -24
- package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
- package/dist/runtime/channels/channel-dispatch-services.js +7 -4
- package/dist/runtime/channels/channel-dispatchers.js +9 -9
- package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
- package/dist/runtime/channels/channel-envelope.js +83 -47
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +20 -22
- package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
- package/dist/runtime/channels/channel-runtime-manager.js +18 -9
- package/dist/runtime/channels/channel-socket-registry.js +126 -123
- package/dist/runtime/channels/channel-transports.js +46 -42
- package/dist/runtime/channels/client-server-location-runtime.js +32 -40
- package/dist/runtime/channels/client-server-service-wire.js +29 -22
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
- package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
- package/dist/runtime/channels/fanout-location-runtime.js +34 -47
- package/dist/runtime/channels/fanout-service-wire.js +3 -5
- package/dist/runtime/channels/local-spot-route-transport.js +7 -1
- package/dist/runtime/channels/route-member-snapshot.js +3 -3
- package/dist/runtime/channels/source-spot-router.js +6 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
- package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
- package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
- package/dist/runtime/diagnostics/flow-context.js +2 -2
- package/dist/runtime/diagnostics/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +58 -42
- package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
- package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
- package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
- package/dist/runtime/execution/index.js +7 -6
- package/dist/runtime/execution/serial-execution-queue.js +12 -18
- package/dist/runtime/execution/state-lane.js +2 -2
- package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
- package/dist/runtime/foundation/event-loop-resources.js +4 -4
- package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
- package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
- package/dist/runtime/foundation/runtime-state-projections.js +22 -11
- package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
- package/dist/runtime/foundation/service-discovery-registry.js +35 -33
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
- package/dist/runtime/foundation/service-liveness-registry.js +16 -12
- package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
- package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
- package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
- package/dist/runtime/foundation/service-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
- package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
- package/dist/runtime/foundation/service-topology-registry.js +105 -96
- package/dist/runtime/foundation/service-weighted-selection.js +6 -11
- package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
- package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
- package/dist/runtime/framework-errors-internal.js +7 -10
- package/dist/runtime/handlers/handler-instance-scope.js +4 -5
- package/dist/runtime/handlers/index.js +3 -1
- package/dist/runtime/host/actor-packet-relay.js +74 -70
- package/dist/runtime/host/actor-placement-coordinator.js +29 -31
- package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
- package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
- package/dist/runtime/host/actor-transfer-runtime.js +176 -153
- package/dist/runtime/host/application-job-queue.js +18 -22
- package/dist/runtime/host/bound-session-relay.js +3 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
- package/dist/runtime/host/host-capacity-status.js +8 -4
- package/dist/runtime/host/index.js +245 -228
- package/dist/runtime/host/instance-activation-authority.js +93 -96
- package/dist/runtime/host/location-runtime-owner.js +16 -14
- package/dist/runtime/host/mesh-router-resolver.js +11 -13
- package/dist/runtime/host/relocation-direct-transfer.js +10 -9
- package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
- package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
- package/dist/runtime/host/remote-bound-session-relay.js +97 -73
- package/dist/runtime/host/route-mesh-runtime.js +64 -69
- package/dist/runtime/host/runtime-shutdown.js +1 -2
- package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
- package/dist/runtime/host/spot-address-transport.js +69 -71
- package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
- package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
- package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
- package/dist/runtime/locations/actor-location-claims.js +26 -20
- package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
- package/dist/runtime/locations/authority-key-codec.js +7 -7
- package/dist/runtime/locations/auto-connect-loop.js +3 -3
- package/dist/runtime/locations/auto-connect-planner.js +25 -19
- package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
- package/dist/runtime/locations/in-memory-authority-store.js +128 -118
- package/dist/runtime/locations/in-memory-location-store.js +195 -168
- package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
- package/dist/runtime/locations/key-codec.js +1 -1
- package/dist/runtime/locations/lease-tracker.js +23 -21
- package/dist/runtime/locations/lifecycle.js +4 -5
- package/dist/runtime/locations/location-store-repository.js +368 -324
- package/dist/runtime/locations/opaque-record-key.js +2 -2
- package/dist/runtime/locations/resolvers.js +73 -82
- package/dist/runtime/locations/runtime.js +68 -63
- package/dist/runtime/locations/spot-location-claims.js +39 -35
- package/dist/runtime/messaging/framework-json-v1.js +7 -7
- package/dist/runtime/messaging/packet-name.js +7 -6
- package/dist/runtime/messaging/payload-codec.js +21 -18
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
- package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
- package/dist/runtime/routing-id.js +3 -5
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
- package/dist/runtime/spots/index.js +209 -220
- package/dist/runtime/spots/spot-activation-registry.js +15 -14
- package/dist/runtime/spots/spot-activation-state.js +17 -15
- package/dist/runtime/spots/spot-activation.js +33 -16
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
- package/dist/runtime/spots/spot-actor-membership.js +1 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
- package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
- package/dist/runtime/spots/spot-closing.js +3 -7
- package/dist/runtime/spots/spot-context.js +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +13 -14
- package/dist/runtime/spots/spot-handle.js +6 -3
- package/dist/runtime/spots/spot-handler-registry.js +12 -12
- package/dist/runtime/spots/spot-manager-public.js +5 -6
- package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
- package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
- package/dist/runtime/spots/spot-outbound.js +10 -14
- package/dist/runtime/spots/spot-remote-codec.js +22 -26
- package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
- package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
- package/dist/runtime/spots/spot-route-replies.js +4 -6
- package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
- package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
- package/dist/runtime/spots/spot-serial-executor.js +5 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
- package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
- package/dist/runtime/spots/spot-timer.js +26 -30
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
- package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
- package/dist/runtime/streams/bound-session-response-target.js +8 -1
- package/dist/runtime/streams/bound-session-service.d.ts +1 -0
- package/dist/runtime/streams/bound-session-service.js +14 -12
- package/dist/runtime/streams/index.js +28 -20
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +52 -31
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.d.ts +5 -1
- package/dist/runtime/streams/protocol.js +68 -20
- package/dist/runtime/streams/session-actor-coordinator.js +37 -41
- package/dist/runtime/streams/session-context.d.ts +9 -2
- package/dist/runtime/streams/session-context.js +50 -32
- package/dist/runtime/streams/session-local-actors.d.ts +3 -1
- package/dist/runtime/streams/session-local-actors.js +17 -2
- package/dist/runtime/streams/session-provider.js +2 -2
- package/dist/runtime/streams/session-serial-executor.js +1 -2
- package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
- package/dist/runtime/streams/stream-frame-factory.js +14 -7
- package/dist/runtime/streams/stream-session-runtime.js +112 -78
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +3 -3
- package/src/contracts/Channels/RouteCalls.ts +6 -1
- package/src/contracts/Common/ZLinkMessage.ts +5 -5
- package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
- package/src/contracts/Configuration/Builders.ts +14 -14
- package/src/contracts/Configuration/CodecContentType.ts +8 -10
- package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
- package/src/contracts/Configuration/EndpointNotation.ts +11 -11
- package/src/contracts/Configuration/ObjectRoles.ts +1 -3
- package/src/contracts/Configuration/Registration.ts +46 -17
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
- package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
- package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
- package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
- package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
- package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
- package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
- package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
- package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
- package/src/contracts/Errors/index.ts +1 -4
- package/src/contracts/Handlers/Attributes.ts +15 -9
- package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
- package/src/contracts/Handlers/JsonContract.ts +53 -19
- package/src/contracts/Locations/ActorTransfer.ts +1 -5
- package/src/contracts/Locations/Authority.ts +4 -11
- package/src/contracts/Locations/Keys.ts +6 -1
- package/src/contracts/Locations/Options.ts +3 -2
- package/src/contracts/Locations/RelocationStore.ts +1 -4
- package/src/contracts/Locations/Resolvers.ts +5 -5
- package/src/contracts/Locations/RuntimeQuery.ts +6 -2
- package/src/contracts/Locations/Stores.ts +1 -2
- package/src/contracts/Locations/index.ts +2 -8
- package/src/contracts/RouteMesh/Contracts.ts +1 -7
- package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
- package/src/contracts/Spots/Contracts.ts +2 -8
- package/src/contracts/Spots/SpotKind.ts +16 -8
- package/src/contracts/Spots/ZLinkSpot.ts +8 -11
- package/src/contracts/Streams/IZLinkSession.ts +2 -2
- package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
- package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
- package/src/internal.ts +5 -4
- package/src/location-store-integration.ts +24 -16
- package/src/nest-integration.ts +40 -25
- package/src/runtime/abort.ts +10 -4
- package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
- package/src/runtime/actors/actor-authority-publication.ts +92 -77
- package/src/runtime/actors/actor-client.ts +162 -133
- package/src/runtime/actors/actor-context.ts +142 -134
- package/src/runtime/actors/actor-creation.ts +47 -44
- package/src/runtime/actors/actor-execution-context.ts +6 -4
- package/src/runtime/actors/actor-handoff.ts +269 -293
- package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
- package/src/runtime/actors/actor-local-native-join.ts +131 -159
- package/src/runtime/actors/actor-mailbox.ts +16 -19
- package/src/runtime/actors/actor-message-follow-context.ts +46 -36
- package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
- package/src/runtime/actors/actor-remote-joiner.ts +50 -54
- package/src/runtime/actors/actor-remote-wire.ts +9 -13
- package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
- package/src/runtime/actors/actor-runtime-state.ts +127 -124
- package/src/runtime/actors/actor-transfer-registry.ts +9 -14
- package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
- package/src/runtime/actors/bound-session-wire.ts +37 -17
- package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
- package/src/runtime/actors/index.ts +43 -86
- package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
- package/src/runtime/actors/post-commit-actor-location.ts +30 -23
- package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
- package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
- package/src/runtime/admission.ts +9 -9
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
- package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
- package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
- package/src/runtime/backend/contracts/index.ts +77 -52
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
- package/src/runtime/backend/mesh-completion-table.ts +6 -9
- package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
- package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
- package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
- package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
- package/src/runtime/backend/runtime-message.ts +5 -3
- package/src/runtime/backend/runtime-values.ts +10 -7
- package/src/runtime/channels/channel-autoconnect.ts +1 -4
- package/src/runtime/channels/channel-clients.ts +93 -73
- package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
- package/src/runtime/channels/channel-dispatch-services.ts +51 -49
- package/src/runtime/channels/channel-dispatchers.ts +152 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
- package/src/runtime/channels/channel-envelope.ts +256 -150
- package/src/runtime/channels/channel-multipart.ts +13 -5
- package/src/runtime/channels/channel-outbound-operations.ts +37 -41
- package/src/runtime/channels/channel-receive-loops.ts +102 -98
- package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
- package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
- package/src/runtime/channels/channel-runtime-manager.ts +63 -37
- package/src/runtime/channels/channel-socket-options.ts +3 -10
- package/src/runtime/channels/channel-socket-registry.ts +331 -273
- package/src/runtime/channels/channel-transports.ts +218 -206
- package/src/runtime/channels/client-server-location-runtime.ts +116 -100
- package/src/runtime/channels/client-server-service-wire.ts +37 -36
- package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
- package/src/runtime/channels/fanout-location-runtime.ts +91 -94
- package/src/runtime/channels/fanout-service-wire.ts +5 -12
- package/src/runtime/channels/handler-filter-scope.ts +1 -4
- package/src/runtime/channels/index.ts +1 -4
- package/src/runtime/channels/local-spot-route-transport.ts +20 -5
- package/src/runtime/channels/route-member-snapshot.ts +11 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
- package/src/runtime/channels/source-spot-router.ts +26 -22
- package/src/runtime/channels/spot-direct-envelope.ts +10 -8
- package/src/runtime/channels/spot-node-route-transport.ts +13 -16
- package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
- package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
- package/src/runtime/codecs/index.ts +3 -2
- package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
- package/src/runtime/diagnostics/flow-context.ts +18 -7
- package/src/runtime/diagnostics/index.ts +96 -61
- package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
- package/src/runtime/diagnostics/message-flow.ts +107 -79
- package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
- package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
- package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
- package/src/runtime/execution/index.ts +18 -26
- package/src/runtime/execution/serial-execution-queue.ts +31 -40
- package/src/runtime/execution/state-lane.ts +2 -2
- package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
- package/src/runtime/foundation/event-loop-resources.ts +8 -4
- package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
- package/src/runtime/foundation/operation-identity.ts +1 -2
- package/src/runtime/foundation/operation-registry.ts +8 -2
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
- package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
- package/src/runtime/foundation/runtime-state-projections.ts +24 -23
- package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
- package/src/runtime/foundation/service-discovery-registry.ts +67 -59
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
- package/src/runtime/foundation/service-liveness-registry.ts +18 -13
- package/src/runtime/foundation/service-mailbox.ts +14 -14
- package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
- package/src/runtime/foundation/service-metadata-codec.ts +2 -9
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
- package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
- package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
- package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
- package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +170 -159
- package/src/runtime/foundation/service-weighted-selection.ts +9 -15
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
- package/src/runtime/framework-errors-internal.ts +31 -30
- package/src/runtime/handlers/handler-instance-scope.ts +18 -29
- package/src/runtime/handlers/index.ts +18 -8
- package/src/runtime/host/actor-packet-relay.ts +290 -261
- package/src/runtime/host/actor-placement-coordinator.ts +165 -150
- package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
- package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
- package/src/runtime/host/actor-transfer-runtime.ts +391 -395
- package/src/runtime/host/application-job-queue.ts +32 -48
- package/src/runtime/host/bound-session-relay.ts +7 -9
- package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
- package/src/runtime/host/host-capacity-status.ts +10 -9
- package/src/runtime/host/index.ts +861 -789
- package/src/runtime/host/instance-activation-authority.ts +125 -143
- package/src/runtime/host/location-runtime-owner.ts +38 -26
- package/src/runtime/host/mesh-router-resolver.ts +30 -23
- package/src/runtime/host/relocation-direct-transfer.ts +15 -15
- package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
- package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
- package/src/runtime/host/remote-bound-session-relay.ts +274 -247
- package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
- package/src/runtime/host/route-mesh-runtime.ts +227 -181
- package/src/runtime/host/runtime-shutdown.ts +4 -3
- package/src/runtime/host/service-relocation-control.ts +14 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
- package/src/runtime/host/spot-address-transport.ts +284 -237
- package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
- package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
- package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
- package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
- package/src/runtime/locations/actor-location-claims.ts +61 -49
- package/src/runtime/locations/actor-session-route-claims.ts +1 -4
- package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
- package/src/runtime/locations/authority-key-codec.ts +13 -10
- package/src/runtime/locations/auto-connect-loop.ts +14 -11
- package/src/runtime/locations/auto-connect-planner.ts +42 -31
- package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
- package/src/runtime/locations/canonical-codec.ts +3 -1
- package/src/runtime/locations/creation-operation-id.ts +4 -3
- package/src/runtime/locations/domain-store-contract.ts +13 -7
- package/src/runtime/locations/in-memory-authority-store.ts +232 -199
- package/src/runtime/locations/in-memory-location-store.ts +432 -250
- package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
- package/src/runtime/locations/internal-store-contracts.ts +95 -38
- package/src/runtime/locations/key-codec.ts +3 -4
- package/src/runtime/locations/lease-tracker.ts +36 -27
- package/src/runtime/locations/lifecycle-runtime.ts +15 -3
- package/src/runtime/locations/lifecycle.ts +33 -28
- package/src/runtime/locations/location-store-repository.ts +1329 -1185
- package/src/runtime/locations/opaque-record-key.ts +4 -9
- package/src/runtime/locations/resolvers.ts +201 -178
- package/src/runtime/locations/runtime.ts +251 -159
- package/src/runtime/locations/spot-location-claims.ts +110 -112
- package/src/runtime/messaging/creation-payload-codec.ts +4 -1
- package/src/runtime/messaging/framework-json-v1.ts +34 -15
- package/src/runtime/messaging/packet-name.ts +8 -6
- package/src/runtime/messaging/payload-codec.ts +70 -50
- package/src/runtime/messaging/submission-result.ts +6 -9
- package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
- package/src/runtime/routing-id.ts +10 -7
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
- package/src/runtime/spots/index.ts +595 -564
- package/src/runtime/spots/spot-activation-registry.ts +38 -34
- package/src/runtime/spots/spot-activation-state.ts +43 -51
- package/src/runtime/spots/spot-activation.ts +179 -116
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
- package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
- package/src/runtime/spots/spot-actor-membership.ts +25 -27
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
- package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
- package/src/runtime/spots/spot-closing.ts +11 -12
- package/src/runtime/spots/spot-context.ts +46 -26
- package/src/runtime/spots/spot-entry-activation.ts +84 -65
- package/src/runtime/spots/spot-handle.ts +17 -15
- package/src/runtime/spots/spot-handler-registry.ts +44 -31
- package/src/runtime/spots/spot-location-claim.ts +5 -4
- package/src/runtime/spots/spot-manager-public.ts +62 -82
- package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
- package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
- package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
- package/src/runtime/spots/spot-outbound.ts +47 -59
- package/src/runtime/spots/spot-publisher-transport.ts +5 -4
- package/src/runtime/spots/spot-remote-codec.ts +66 -65
- package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
- package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
- package/src/runtime/spots/spot-route-replies.ts +23 -24
- package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
- package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
- package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
- package/src/runtime/spots/spot-routing-internal.ts +1 -4
- package/src/runtime/spots/spot-runtime-ports.ts +5 -5
- package/src/runtime/spots/spot-serial-executor.ts +5 -9
- package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
- package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
- package/src/runtime/spots/spot-timer.ts +103 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
- package/src/runtime/streams/bound-session-response-target.ts +39 -9
- package/src/runtime/streams/bound-session-service.ts +52 -42
- package/src/runtime/streams/index.ts +183 -100
- package/src/runtime/streams/managed-stream.ts +123 -90
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +115 -46
- package/src/runtime/streams/session-actor-coordinator.ts +109 -93
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +96 -51
- package/src/runtime/streams/session-local-actors.ts +19 -3
- package/src/runtime/streams/session-provider.ts +5 -7
- package/src/runtime/streams/session-serial-executor.ts +7 -6
- package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
- package/src/runtime/streams/stream-frame-factory.ts +59 -40
- package/src/runtime/streams/stream-session-runtime.ts +317 -214
- package/src/runtime/workers/index.ts +68 -29
|
@@ -16,17 +16,17 @@ const bounded_replay_map_1 = require("./bounded-replay-map");
|
|
|
16
16
|
const DEFERRED_JOIN_TERMINAL_CAPACITY = 4096;
|
|
17
17
|
/** Converts only committed actor authority evidence into a Message Follow fence. */
|
|
18
18
|
function committedActorOwnerFence(actorId, targetActorRef, authority) {
|
|
19
|
-
if (targetActorRef.actorId !== actorId
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
if (targetActorRef.actorId !== actorId ||
|
|
20
|
+
targetActorRef.objectGeneration <= 0n ||
|
|
21
|
+
authority.objectGeneration !== targetActorRef.objectGeneration ||
|
|
22
|
+
authority.allocation.state !== 'active' ||
|
|
23
|
+
authority.allocation.objectKind !== 'actor' ||
|
|
24
|
+
authority.allocation.descriptor.meshName !== targetActorRef.meshName ||
|
|
25
|
+
!(0, routing_id_1.routingIdsEqual)(authority.allocation.descriptor.rid, targetActorRef.nodeRid) ||
|
|
26
|
+
authority.ownerId.length === 0 ||
|
|
27
|
+
authority.ownerLeaseGeneration <= 0n ||
|
|
28
|
+
authority.allocation.descriptorLifecycleGeneration <= 0n ||
|
|
29
|
+
authority.authorityOwnerGeneration <= 0n) {
|
|
30
30
|
throw new Error(`Actor '${actorId}' handoff target does not match the committed authority snapshot.`);
|
|
31
31
|
}
|
|
32
32
|
return (0, actor_message_follow_context_1.ownerFence)({
|
|
@@ -47,7 +47,7 @@ function requireSourceObjectGeneration(actorId, state) {
|
|
|
47
47
|
}
|
|
48
48
|
function createHandoffReplayGate() {
|
|
49
49
|
let open;
|
|
50
|
-
const start = new Promise(resolve => {
|
|
50
|
+
const start = new Promise((resolve) => {
|
|
51
51
|
open = resolve;
|
|
52
52
|
});
|
|
53
53
|
return { start, open };
|
|
@@ -76,7 +76,7 @@ class ZLinkActorTransferRuntime {
|
|
|
76
76
|
if (manager === undefined) {
|
|
77
77
|
throw new Error(`Actor '${actorId}' same-node Join has no local Spot manager.`);
|
|
78
78
|
}
|
|
79
|
-
const admitted = this.options.actorHandoff.admitDeferredPrefix(actorId, operationId, drain => manager.admitRoutedActorPacketPrefix(target.spotId, actorId, drain), this.options.prepareApplicationJob);
|
|
79
|
+
const admitted = this.options.actorHandoff.admitDeferredPrefix(actorId, operationId, (drain) => manager.admitRoutedActorPacketPrefix(target.spotId, actorId, drain), this.options.prepareApplicationJob);
|
|
80
80
|
void this.observeHandoffReplay(admitted.terminal);
|
|
81
81
|
}
|
|
82
82
|
async cancelDeferredActorHandoff(actor, _state, operationId) {
|
|
@@ -110,7 +110,7 @@ class ZLinkActorTransferRuntime {
|
|
|
110
110
|
return await waitForOperation(active, signal);
|
|
111
111
|
const completion = this.commitAndDeliverDeferredJoinAcceptedCore(root, actor, actorRef, submitMailbox);
|
|
112
112
|
this.activeDeferredJoinTerminals.set(terminalKey, completion);
|
|
113
|
-
void completion.then(completed => {
|
|
113
|
+
void completion.then((completed) => {
|
|
114
114
|
this.deferredJoinTerminals.remember(terminalKey, completed);
|
|
115
115
|
if (this.activeDeferredJoinTerminals.get(terminalKey) === completion) {
|
|
116
116
|
this.activeDeferredJoinTerminals.delete(terminalKey);
|
|
@@ -123,9 +123,9 @@ class ZLinkActorTransferRuntime {
|
|
|
123
123
|
return await waitForOperation(completion, signal);
|
|
124
124
|
}
|
|
125
125
|
async commitAndDeliverDeferredJoinAcceptedCore(root, actor, actorRef, submitMailbox) {
|
|
126
|
-
const targetActorRef = this.options
|
|
127
|
-
|
|
128
|
-
?.nativeActorRef;
|
|
126
|
+
const targetActorRef = this.options
|
|
127
|
+
.actorManager()
|
|
128
|
+
?.getState(actor.context.actorId)?.nativeActorRef;
|
|
129
129
|
const currentActorRef = targetActorRef === undefined
|
|
130
130
|
? actorRef
|
|
131
131
|
: (0, actors_1.toFrameworkActorRef)(targetActorRef, actor.context.meshName);
|
|
@@ -143,11 +143,12 @@ class ZLinkActorTransferRuntime {
|
|
|
143
143
|
catch (error) {
|
|
144
144
|
lastError = error;
|
|
145
145
|
if (attempt < 2) {
|
|
146
|
-
await new Promise(resolve => {
|
|
146
|
+
await new Promise((resolve) => {
|
|
147
147
|
const timer = setTimeout(resolve, 10 << attempt);
|
|
148
148
|
timer.unref();
|
|
149
149
|
});
|
|
150
|
-
current =
|
|
150
|
+
current =
|
|
151
|
+
(await this.requireDeferredJoinJournal().recover(currentActorRef.actorId)) ?? current;
|
|
151
152
|
}
|
|
152
153
|
}
|
|
153
154
|
}
|
|
@@ -182,7 +183,8 @@ class ZLinkActorTransferRuntime {
|
|
|
182
183
|
await this.options.restoreEntrySpotActorJoined(actor, signal);
|
|
183
184
|
}
|
|
184
185
|
async beginSourceActorMove(actor, state, deferredOperationId) {
|
|
185
|
-
if (deferredOperationId !== undefined &&
|
|
186
|
+
if (deferredOperationId !== undefined &&
|
|
187
|
+
this.options.actorHandoff.isProvisional(actor.context.actorId)) {
|
|
186
188
|
this.promoteDeferredActorHandoff(actor, state, deferredOperationId);
|
|
187
189
|
}
|
|
188
190
|
state.beginMove();
|
|
@@ -277,7 +279,7 @@ class ZLinkActorTransferRuntime {
|
|
|
277
279
|
if (sourceSpotId === undefined || manager === undefined) {
|
|
278
280
|
return undefined;
|
|
279
281
|
}
|
|
280
|
-
return drain => manager.admitRoutedActorPacketPrefix(sourceSpotId, actor.context.actorId, drain);
|
|
282
|
+
return (drain) => manager.admitRoutedActorPacketPrefix(sourceSpotId, actor.context.actorId, drain);
|
|
281
283
|
}
|
|
282
284
|
async prepareSource(actor, state, signal, lifecycleAuthority = 'framework', deferredOperationId, relocation) {
|
|
283
285
|
await this.beginSourceActorMove(actor, state, deferredOperationId);
|
|
@@ -326,19 +328,19 @@ class ZLinkActorTransferRuntime {
|
|
|
326
328
|
},
|
|
327
329
|
observeTargetAuthority: async (target, targetActorRef, observeSignal) => {
|
|
328
330
|
const authority = this.options.authorityStore();
|
|
329
|
-
if (authority === undefined
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
331
|
+
if (authority === undefined ||
|
|
332
|
+
target.targetOwnerId === undefined ||
|
|
333
|
+
target.ownerLeaseGeneration === undefined ||
|
|
334
|
+
target.targetNodeGeneration === undefined) {
|
|
333
335
|
throw new Error(`Actor '${actor.context.actorId}' relocation target has no complete authority fence.`);
|
|
334
336
|
}
|
|
335
337
|
const committed = await authority.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)('actor', actor.context.actorId), observeSignal);
|
|
336
|
-
if (committed.kind !== 'snapshot'
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
338
|
+
if (committed.kind !== 'snapshot' ||
|
|
339
|
+
committed.ownerId !== target.targetOwnerId ||
|
|
340
|
+
committed.ownerLeaseGeneration !== target.ownerLeaseGeneration ||
|
|
341
|
+
committed.allocation.descriptorLifecycleGeneration !== target.targetNodeGeneration ||
|
|
342
|
+
!(0, routing_id_1.routingIdsEqual)(committed.allocation.descriptor.rid, target.targetNodeRid) ||
|
|
343
|
+
committed.objectGeneration !== targetActorRef.objectGeneration) {
|
|
342
344
|
throw new Error(`Actor '${actor.context.actorId}' relocation target authority was not committed exactly.`);
|
|
343
345
|
}
|
|
344
346
|
committedTargetOwnerFence = committedActorOwnerFence(actor.context.actorId, targetActorRef, committed);
|
|
@@ -366,7 +368,7 @@ class ZLinkActorTransferRuntime {
|
|
|
366
368
|
// Core sends the source leave control after the authority
|
|
367
369
|
// transition. Keep the source shell available for that
|
|
368
370
|
// callback, then release the old location and registry entry.
|
|
369
|
-
void sourceLeaveCompletion.then(() => this.scheduleSourceDeparture(actor, sourceSpotId, true), error => {
|
|
371
|
+
void sourceLeaveCompletion.then(() => this.scheduleSourceDeparture(actor, sourceSpotId, true), (error) => {
|
|
370
372
|
this.options.reportPostCommitError?.(error);
|
|
371
373
|
this.scheduleSourceDeparture(actor, sourceSpotId, true);
|
|
372
374
|
});
|
|
@@ -445,7 +447,7 @@ class ZLinkActorTransferRuntime {
|
|
|
445
447
|
target: state.remoteBoundSessionTarget,
|
|
446
448
|
handoffBacklog,
|
|
447
449
|
takeRelocationRelay: () => this.options.actorHandoff.takeRelocationRelay(actor.context.actorId),
|
|
448
|
-
setReplayResults: results => {
|
|
450
|
+
setReplayResults: (results) => {
|
|
449
451
|
if (terminal === 'prepared')
|
|
450
452
|
replayResults = [...results];
|
|
451
453
|
},
|
|
@@ -455,7 +457,8 @@ class ZLinkActorTransferRuntime {
|
|
|
455
457
|
if (terminal === 'prepared') {
|
|
456
458
|
this.options.actorHandoff.complete(actor.context.actorId, target, targetActorRef, replayResults, targetOwnerFence);
|
|
457
459
|
if (manageMembership && state.spotId !== undefined) {
|
|
458
|
-
await this.options
|
|
460
|
+
await this.options
|
|
461
|
+
.spotManager()
|
|
459
462
|
?.commitActorLeaveAfterTransfer(state.spotId, actor.context.actorId);
|
|
460
463
|
}
|
|
461
464
|
state.endMove();
|
|
@@ -570,20 +573,24 @@ class ZLinkActorTransferRuntime {
|
|
|
570
573
|
async sealBoundSessionRoute(actor, state, signal, relocation) {
|
|
571
574
|
const target = state.remoteBoundSessionTarget;
|
|
572
575
|
const actorRef = state.nativeActorRef;
|
|
573
|
-
if (target === undefined ||
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
576
|
+
if (target === undefined ||
|
|
577
|
+
actorRef === undefined ||
|
|
578
|
+
target.bindingGeneration === undefined ||
|
|
579
|
+
target.bindingGeneration <= 0n ||
|
|
580
|
+
state.locationGeneration === undefined ||
|
|
581
|
+
state.locationGeneration < 0n ||
|
|
582
|
+
state.ownerLeaseGeneration === undefined ||
|
|
583
|
+
state.ownerLeaseGeneration <= 0n) {
|
|
577
584
|
throw new Error(`Actor '${actor.context.actorId}' Session route cannot be sealed without its exact source fence.`);
|
|
578
585
|
}
|
|
579
586
|
const serviceWire = this.options.sessionRelocationWire?.();
|
|
580
587
|
const authorityStore = this.options.authorityStore();
|
|
581
588
|
const descriptors = this.options.liveDescriptors;
|
|
582
|
-
if (relocation === undefined
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
589
|
+
if (relocation === undefined ||
|
|
590
|
+
serviceWire === undefined ||
|
|
591
|
+
authorityStore === undefined ||
|
|
592
|
+
descriptors === undefined ||
|
|
593
|
+
target.sessionRid === undefined) {
|
|
587
594
|
throw new Error(`Actor '${actor.context.actorId}' Session relocation requires the command 42/43 service-wire path.`);
|
|
588
595
|
}
|
|
589
596
|
const [authority, live] = await Promise.all([
|
|
@@ -591,17 +598,17 @@ class ZLinkActorTransferRuntime {
|
|
|
591
598
|
descriptors(target.routerChannelId, signal)
|
|
592
599
|
]);
|
|
593
600
|
const local = this.options.primaryMeshNode().status();
|
|
594
|
-
const sessionOwner = live.find(value => String(value.rid) === String(target.targetNodeRid));
|
|
595
|
-
if (authority.kind !== 'snapshot'
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
601
|
+
const sessionOwner = live.find((value) => String(value.rid) === String(target.targetNodeRid));
|
|
602
|
+
if (authority.kind !== 'snapshot' ||
|
|
603
|
+
sessionOwner === undefined ||
|
|
604
|
+
String(local.routingId) !== String(actorRef.nodeRid) ||
|
|
605
|
+
authority.objectGeneration !== actorRef.generation ||
|
|
606
|
+
authority.authorityOwnerGeneration !== state.locationGeneration ||
|
|
607
|
+
authority.ownerLeaseGeneration !== state.ownerLeaseGeneration ||
|
|
608
|
+
String(authority.allocation.descriptor.rid) !== String(actorRef.nodeRid) ||
|
|
609
|
+
authority.allocation.descriptorLifecycleGeneration !== local.lifecycleGeneration ||
|
|
610
|
+
(target.sessionNodeRid !== undefined &&
|
|
611
|
+
String(target.sessionNodeRid) !== String(target.targetNodeRid))) {
|
|
605
612
|
throw new Error(`Actor '${actor.context.actorId}' Session route service-wire source fence is stale.`);
|
|
606
613
|
}
|
|
607
614
|
const coordinator = {
|
|
@@ -645,10 +652,14 @@ class ZLinkActorTransferRuntime {
|
|
|
645
652
|
};
|
|
646
653
|
}
|
|
647
654
|
async abortBoundSessionRouteSeal(actor, state, targetOverride) {
|
|
648
|
-
const target = targetOverride ??
|
|
655
|
+
const target = targetOverride ??
|
|
656
|
+
(0, actors_1.preferredRemoteBoundSessionTarget)(state.remoteBoundSessionTarget, state.boundSessionTransferTarget);
|
|
649
657
|
const actorRef = state.nativeActorRef;
|
|
650
|
-
if (target === undefined ||
|
|
651
|
-
|
|
658
|
+
if (target === undefined ||
|
|
659
|
+
actorRef === undefined ||
|
|
660
|
+
target.bindingGeneration === undefined ||
|
|
661
|
+
target.previousAuthorityOwnerGeneration === undefined ||
|
|
662
|
+
target.previousOwnerLeaseGeneration === undefined) {
|
|
652
663
|
throw new Error(`Actor '${actor.context.actorId}' Session route seal cannot be released without its exact fence.`);
|
|
653
664
|
}
|
|
654
665
|
const serviceFence = target.serviceWireRelocation;
|
|
@@ -717,8 +728,7 @@ class ZLinkActorTransferRuntime {
|
|
|
717
728
|
scheduleSourceDeparture(actor, sourceSpotId, releaseLocation) {
|
|
718
729
|
if (this.sourceDepartureTasks.has(actor.context.actorId))
|
|
719
730
|
return;
|
|
720
|
-
const task = this.finishSourceDeparture(actor, sourceSpotId, releaseLocation)
|
|
721
|
-
.finally(() => this.sourceDepartureTasks.delete(actor.context.actorId));
|
|
731
|
+
const task = this.finishSourceDeparture(actor, sourceSpotId, releaseLocation).finally(() => this.sourceDepartureTasks.delete(actor.context.actorId));
|
|
722
732
|
this.sourceDepartureTasks.set(actor.context.actorId, task);
|
|
723
733
|
}
|
|
724
734
|
async finishSourceDeparture(actor, sourceSpotId, releaseLocation) {
|
|
@@ -726,12 +736,16 @@ class ZLinkActorTransferRuntime {
|
|
|
726
736
|
while (this.options.shutdownSignal?.()?.aborted !== true) {
|
|
727
737
|
try {
|
|
728
738
|
if (sourceSpotId !== undefined) {
|
|
729
|
-
await this.options
|
|
739
|
+
await this.options
|
|
740
|
+
.spotManager()
|
|
741
|
+
?.commitActorLeaveAfterTransfer(sourceSpotId, actor.context.actorId);
|
|
730
742
|
}
|
|
731
743
|
if (releaseLocation) {
|
|
732
744
|
const state = this.options.actorManager()?.getState(actor.context.actorId);
|
|
733
745
|
if (state?.actorType !== undefined && state.ownsLocation) {
|
|
734
|
-
await this.options
|
|
746
|
+
await this.options
|
|
747
|
+
.locationLifecycle()
|
|
748
|
+
?.releaseActor(state.actorType, actor.context.actorId);
|
|
735
749
|
state.markLocationReleased();
|
|
736
750
|
}
|
|
737
751
|
// Message Follow owns the bounded stale route after the native leave.
|
|
@@ -745,7 +759,7 @@ class ZLinkActorTransferRuntime {
|
|
|
745
759
|
}
|
|
746
760
|
catch (error) {
|
|
747
761
|
this.options.reportPostCommitError?.(error);
|
|
748
|
-
if (!await retry.wait(this.options.shutdownSignal?.()))
|
|
762
|
+
if (!(await retry.wait(this.options.shutdownSignal?.())))
|
|
749
763
|
return;
|
|
750
764
|
}
|
|
751
765
|
}
|
|
@@ -799,15 +813,15 @@ class ZLinkActorTransferRuntime {
|
|
|
799
813
|
const targetActorRef = state?.nativeActorRef === undefined
|
|
800
814
|
? undefined
|
|
801
815
|
: (0, actors_1.toFrameworkActorRef)(state.nativeActorRef, actor.context.meshName);
|
|
802
|
-
if (store === undefined
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
816
|
+
if (store === undefined ||
|
|
817
|
+
owner === undefined ||
|
|
818
|
+
state === undefined ||
|
|
819
|
+
actorType === undefined ||
|
|
820
|
+
targetActorRef === undefined ||
|
|
821
|
+
local.lifecycleGeneration <= 0n ||
|
|
822
|
+
spotGeneration <= 0n ||
|
|
823
|
+
membershipEpoch <= 0n ||
|
|
824
|
+
!Number.isSafeInteger(deadlineUnixMs)) {
|
|
811
825
|
throw new Error(`Actor '${actor.context.actorId}' target authority commit has an incomplete materialization fence.`);
|
|
812
826
|
}
|
|
813
827
|
const key = (0, authority_key_codec_1.encodeAuthorityKey)('actor', actor.context.actorId);
|
|
@@ -815,15 +829,15 @@ class ZLinkActorTransferRuntime {
|
|
|
815
829
|
if (expected.kind !== 'snapshot') {
|
|
816
830
|
throw new Error(`Actor '${actor.context.actorId}' source authority is missing at the target.`);
|
|
817
831
|
}
|
|
818
|
-
const exactTarget = (value) => value.allocation.state === 'active'
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
832
|
+
const exactTarget = (value) => value.allocation.state === 'active' &&
|
|
833
|
+
value.allocation.objectKind === 'actor' &&
|
|
834
|
+
value.allocation.stableType === actorType &&
|
|
835
|
+
value.objectGeneration === targetActorRef.objectGeneration &&
|
|
836
|
+
value.ownerId === owner.ownerId &&
|
|
837
|
+
value.ownerLeaseGeneration === owner.leaseGeneration &&
|
|
838
|
+
value.allocation.descriptor.meshName === actor.context.meshName &&
|
|
839
|
+
(0, routing_id_1.routingIdsEqual)(value.allocation.descriptor.rid, local.routingId) &&
|
|
840
|
+
value.allocation.descriptorLifecycleGeneration === local.lifecycleGeneration;
|
|
827
841
|
const adopt = (value) => {
|
|
828
842
|
state.setLocationGeneration(value.authorityOwnerGeneration);
|
|
829
843
|
state.setOwnerLeaseGeneration(value.ownerLeaseGeneration);
|
|
@@ -833,12 +847,12 @@ class ZLinkActorTransferRuntime {
|
|
|
833
847
|
};
|
|
834
848
|
if (exactTarget(expected))
|
|
835
849
|
return adopt(expected);
|
|
836
|
-
if (expected.allocation.state !== 'active'
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
850
|
+
if (expected.allocation.state !== 'active' ||
|
|
851
|
+
expected.allocation.objectKind !== 'actor' ||
|
|
852
|
+
expected.allocation.stableType !== actorType ||
|
|
853
|
+
expected.objectGeneration !== sourceActorRef.objectGeneration ||
|
|
854
|
+
expected.allocation.descriptor.meshName !== sourceActorRef.meshName ||
|
|
855
|
+
!(0, routing_id_1.routingIdsEqual)(expected.allocation.descriptor.rid, sourceActorRef.nodeRid)) {
|
|
842
856
|
throw new Error(`Actor '${actor.context.actorId}' relocation source authority is stale at the target.`);
|
|
843
857
|
}
|
|
844
858
|
const membershipMutation = Buffer.from(JSON.stringify({
|
|
@@ -851,13 +865,15 @@ class ZLinkActorTransferRuntime {
|
|
|
851
865
|
const request = {
|
|
852
866
|
aggregateId: { value: transferId },
|
|
853
867
|
aggregateGeneration: local.lifecycleGeneration,
|
|
854
|
-
participants: [
|
|
868
|
+
participants: [
|
|
869
|
+
{
|
|
855
870
|
authorityKey: key,
|
|
856
871
|
expectedStoreVersion: expected.storeVersion,
|
|
857
872
|
ownerTransition: 'newOwner',
|
|
858
873
|
authorityPayload: (0, actors_1.rewriteActorAuthorityRoute)(expected.payload, targetActorRef, String(spotId), spotGeneration, contracts_1.ZLinkSpotKind.User, local.lifecycleGeneration, owner),
|
|
859
874
|
membershipMutation
|
|
860
|
-
}
|
|
875
|
+
}
|
|
876
|
+
],
|
|
861
877
|
inventoryDigest: (0, node_crypto_1.createHash)('sha256').update(membershipMutation).digest(),
|
|
862
878
|
targetDescriptor: {
|
|
863
879
|
meshName: actor.context.meshName,
|
|
@@ -882,8 +898,11 @@ class ZLinkActorTransferRuntime {
|
|
|
882
898
|
const observed = await this.readActorAuthorityForRelocation(store, key, signal);
|
|
883
899
|
if (observed !== undefined && exactTarget(observed))
|
|
884
900
|
return adopt(observed);
|
|
885
|
-
if (prepared !== undefined ||
|
|
886
|
-
|
|
901
|
+
if (prepared !== undefined ||
|
|
902
|
+
(observed !== undefined && !sameSourceActorAuthority(observed, expected))) {
|
|
903
|
+
throw new Error(`Actor '${actor.context.actorId}' target authority prepare was rejected.`, {
|
|
904
|
+
cause: firstError
|
|
905
|
+
});
|
|
887
906
|
}
|
|
888
907
|
await waitForActorAuthorityRetry(deadlineAtMs, signal, firstError);
|
|
889
908
|
}
|
|
@@ -899,9 +918,9 @@ class ZLinkActorTransferRuntime {
|
|
|
899
918
|
const observed = await this.readActorAuthorityForRelocation(store, key, signal);
|
|
900
919
|
if (observed !== undefined && exactTarget(observed))
|
|
901
920
|
return adopt(observed);
|
|
902
|
-
if (committed?.kind === 'stale'
|
|
903
|
-
|
|
904
|
-
|
|
921
|
+
if (committed?.kind === 'stale' ||
|
|
922
|
+
committed?.kind === 'generationExhausted' ||
|
|
923
|
+
(observed !== undefined && !sameSourceActorAuthority(observed, expected))) {
|
|
905
924
|
throw new Error(`Actor '${actor.context.actorId}' target authority commit did not converge.`, { cause: firstError });
|
|
906
925
|
}
|
|
907
926
|
await waitForActorAuthorityRetry(deadlineAtMs, signal, firstError);
|
|
@@ -934,11 +953,13 @@ class ZLinkActorTransferRuntime {
|
|
|
934
953
|
state?.setJoinedSpot(spotId, spot);
|
|
935
954
|
const actorRef = state?.nativeActorRef;
|
|
936
955
|
const binding = state?.boundSessionTransferTarget;
|
|
937
|
-
if (actorRef !== undefined
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
this.options
|
|
956
|
+
if (actorRef !== undefined &&
|
|
957
|
+
binding?.sessionNodeRid !== undefined &&
|
|
958
|
+
binding.sessionRid !== undefined &&
|
|
959
|
+
binding.bindingGeneration !== undefined) {
|
|
960
|
+
this.options
|
|
961
|
+
.primaryMeshNode()
|
|
962
|
+
.restoreActorSessionBinding?.(actorRef, binding.sessionNodeRid, binding.sessionRid, binding.bindingGeneration);
|
|
942
963
|
}
|
|
943
964
|
}
|
|
944
965
|
bindRoutedActorRef(actor, actorRef) {
|
|
@@ -947,9 +968,7 @@ class ZLinkActorTransferRuntime {
|
|
|
947
968
|
const targetActorRef = {
|
|
948
969
|
actorId: actorRef.actorId,
|
|
949
970
|
nodeRid: node.status().routingId,
|
|
950
|
-
generation: localActorRef.generation > 0n
|
|
951
|
-
? localActorRef.generation
|
|
952
|
-
: actorRef.objectGeneration
|
|
971
|
+
generation: localActorRef.generation > 0n ? localActorRef.generation : actorRef.objectGeneration
|
|
953
972
|
};
|
|
954
973
|
this.options.actorManager()?.getState(actor.context.actorId)?.setNativeActorRef(targetActorRef);
|
|
955
974
|
}
|
|
@@ -970,11 +989,11 @@ class ZLinkActorTransferRuntime {
|
|
|
970
989
|
// RoutingId is an opaque byte value, so the committed target is compared by
|
|
971
990
|
// value. Reference equality would reject a matching SPOT read back from the
|
|
972
991
|
// Core lookup.
|
|
973
|
-
if (joinedLocation === undefined
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
992
|
+
if (joinedLocation === undefined &&
|
|
993
|
+
(location.spotId === null ||
|
|
994
|
+
location.spotId === undefined ||
|
|
995
|
+
(0, routing_id_1.encodeRoutingIdStorageHex)(location.spotId) !==
|
|
996
|
+
(0, routing_id_1.encodeRoutingIdStorageHex)(spotId))) {
|
|
978
997
|
throw new Error(`Actor '${actor.context.actorId}' Core location does not match the committed target SPOT.`);
|
|
979
998
|
}
|
|
980
999
|
const deadline = performance.now() + 5_000;
|
|
@@ -982,11 +1001,13 @@ class ZLinkActorTransferRuntime {
|
|
|
982
1001
|
if (ownerNodeGeneration <= 0n) {
|
|
983
1002
|
throw new Error(`Actor '${actor.context.actorId}' owner MeshNode has no valid lifecycle generation.`);
|
|
984
1003
|
}
|
|
985
|
-
const authority = await this.options
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
1004
|
+
const authority = await this.options
|
|
1005
|
+
.authorityStore()
|
|
1006
|
+
?.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)('actor', actor.context.actorId));
|
|
1007
|
+
if (authority?.kind === 'snapshot' &&
|
|
1008
|
+
authority.allocation.state === 'active' &&
|
|
1009
|
+
String(authority.allocation.descriptor.rid) === String(node.status().routingId) &&
|
|
1010
|
+
authority.allocation.descriptorLifecycleGeneration === ownerNodeGeneration) {
|
|
990
1011
|
state.setLocationGeneration(authority.authorityOwnerGeneration);
|
|
991
1012
|
state.setOwnerLeaseGeneration(authority.ownerLeaseGeneration);
|
|
992
1013
|
state.setJoinedSpot(spotId, state.spot, membershipEpoch, spotGeneration);
|
|
@@ -1018,16 +1039,18 @@ class ZLinkActorTransferRuntime {
|
|
|
1018
1039
|
const target = await this.options.spotRouteResolver?.()?.resolve(spotId);
|
|
1019
1040
|
if (target === undefined || target.spotKind === 'entry')
|
|
1020
1041
|
return;
|
|
1021
|
-
if (!(0, routing_id_1.routingIdsEqual)(target.spotId, spotId)
|
|
1022
|
-
|
|
1023
|
-
|
|
1042
|
+
if (!(0, routing_id_1.routingIdsEqual)(target.spotId, spotId) ||
|
|
1043
|
+
!(0, routing_id_1.routingIdsEqual)(target.targetNodeRid, node.status().routingId) ||
|
|
1044
|
+
target.targetSpotGeneration !== spotGeneration) {
|
|
1024
1045
|
throw new Error('Committed native Actor target does not match its Ready Spot route.');
|
|
1025
1046
|
}
|
|
1026
1047
|
state.setRemoteActorPacketTarget(target);
|
|
1027
1048
|
}
|
|
1028
1049
|
async claimNativeActorLocation(actor, spotId, spotMeshName) {
|
|
1029
1050
|
const state = this.options.actorManager()?.getState(actor.context.actorId);
|
|
1030
|
-
const previousLocation = this.options
|
|
1051
|
+
const previousLocation = this.options
|
|
1052
|
+
.locationLifecycle()
|
|
1053
|
+
?.actorLocationSnapshot(actor.context.actorId);
|
|
1031
1054
|
const snapshot = {
|
|
1032
1055
|
spotId: state?.spotId,
|
|
1033
1056
|
spot: state?.spot,
|
|
@@ -1068,10 +1091,10 @@ class ZLinkActorTransferRuntime {
|
|
|
1068
1091
|
if (state?.ownsLocation !== true || actorType === undefined || lifecycle === undefined)
|
|
1069
1092
|
return;
|
|
1070
1093
|
if (snapshot.spotId === undefined) {
|
|
1071
|
-
if (snapshot.locationSpotId === undefined
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1094
|
+
if (snapshot.locationSpotId === undefined ||
|
|
1095
|
+
snapshot.spotGeneration === undefined ||
|
|
1096
|
+
snapshot.membershipEpoch === undefined ||
|
|
1097
|
+
snapshot.ownerNodeGeneration === undefined) {
|
|
1075
1098
|
throw new Error(`Actor '${actor.context.actorId}' cannot restore its Entry SPOT location without its exact generation fields.`);
|
|
1076
1099
|
}
|
|
1077
1100
|
await lifecycle.notifyActorLeftSpot(actorType, actor.context.actorId, snapshot.locationSpotId, snapshot.spotGeneration, snapshot.membershipEpoch, snapshot.ownerNodeGeneration);
|
|
@@ -1080,10 +1103,10 @@ class ZLinkActorTransferRuntime {
|
|
|
1080
1103
|
if (snapshot.actorRef === undefined) {
|
|
1081
1104
|
throw new Error(`Actor '${actor.context.actorId}' cannot restore its previous SPOT location without a native ref.`);
|
|
1082
1105
|
}
|
|
1083
|
-
if (snapshot.spotMeshName === undefined
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1106
|
+
if (snapshot.spotMeshName === undefined ||
|
|
1107
|
+
snapshot.spotGeneration === undefined ||
|
|
1108
|
+
snapshot.membershipEpoch === undefined ||
|
|
1109
|
+
snapshot.ownerNodeGeneration === undefined) {
|
|
1087
1110
|
throw new Error(`Actor '${actor.context.actorId}' cannot restore its previous SPOT location without its exact generation fields.`);
|
|
1088
1111
|
}
|
|
1089
1112
|
const restored = await lifecycle.takeoverActorJoinedSpot(actorType, actor.context.actorId, snapshot.actorRef, snapshot.spotMeshName, snapshot.spotId, snapshot.spotGeneration, snapshot.membershipEpoch, snapshot.ownerNodeGeneration, async () => state.clearAfterDestroy());
|
|
@@ -1138,29 +1161,29 @@ class ZLinkActorTransferRuntime {
|
|
|
1138
1161
|
return;
|
|
1139
1162
|
}
|
|
1140
1163
|
const serviceFence = target.serviceWireRelocation;
|
|
1141
|
-
const serviceWire = serviceFence === undefined
|
|
1142
|
-
? undefined
|
|
1143
|
-
: this.options.sessionRelocationWire?.();
|
|
1164
|
+
const serviceWire = serviceFence === undefined ? undefined : this.options.sessionRelocationWire?.();
|
|
1144
1165
|
if (serviceFence === undefined) {
|
|
1145
1166
|
throw new Error(`Actor '${actorId}' command 44 has no service-wire relocation fence.`);
|
|
1146
1167
|
}
|
|
1147
1168
|
{
|
|
1148
|
-
if (target.bindingGeneration === undefined
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1169
|
+
if (target.bindingGeneration === undefined ||
|
|
1170
|
+
target.previousAuthorityOwnerGeneration === undefined ||
|
|
1171
|
+
target.bindingGeneration <= 0n ||
|
|
1172
|
+
target.previousAuthorityOwnerGeneration < 0n ||
|
|
1173
|
+
ownershipGeneration <= target.previousAuthorityOwnerGeneration) {
|
|
1153
1174
|
throw new Error(`Actor '${actorId}' command 44 Session route fence is incomplete.`);
|
|
1154
1175
|
}
|
|
1155
1176
|
if (serviceWire === undefined) {
|
|
1156
1177
|
throw new Error(`Actor '${actorId}' command 44 service-wire bridge is unavailable.`);
|
|
1157
1178
|
}
|
|
1158
|
-
const authority = await this.options
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1179
|
+
const authority = await this.options
|
|
1180
|
+
.authorityStore()
|
|
1181
|
+
?.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)('actor', actorId), this.options.shutdownSignal?.());
|
|
1182
|
+
if (authority?.kind !== 'snapshot' ||
|
|
1183
|
+
authority.objectGeneration !== actorRef.generation ||
|
|
1184
|
+
authority.authorityOwnerGeneration !== ownershipGeneration ||
|
|
1185
|
+
authority.ownerLeaseGeneration !== targetOwnerLeaseGeneration ||
|
|
1186
|
+
String(authority.allocation.descriptor.rid) !== String(actorRef.nodeRid)) {
|
|
1164
1187
|
throw new Error(`Actor '${actorId}' command 44 target authority fence is stale.`);
|
|
1165
1188
|
}
|
|
1166
1189
|
await serviceWire.sendSessionRelocationRoute(target.routerChannelId, target.targetNodeRid, {
|
|
@@ -1192,8 +1215,8 @@ function relocationDebug(marker, detail) {
|
|
|
1192
1215
|
console.error('[zlink.runtime.relocation]', marker, detail);
|
|
1193
1216
|
}
|
|
1194
1217
|
function deferredJoinTerminalKey(root) {
|
|
1195
|
-
return `${root.actor.actorId}:${root.actor.objectGeneration.toString()}:` +
|
|
1196
|
-
(0, operation_identity_1.operationIdentityKey)(root.operationId);
|
|
1218
|
+
return (`${root.actor.actorId}:${root.actor.objectGeneration.toString()}:` +
|
|
1219
|
+
(0, operation_identity_1.operationIdentityKey)(root.operationId));
|
|
1197
1220
|
}
|
|
1198
1221
|
function waitForOperation(operation, signal) {
|
|
1199
1222
|
if (signal === undefined)
|
|
@@ -1203,28 +1226,28 @@ function waitForOperation(operation, signal) {
|
|
|
1203
1226
|
return new Promise((resolve, reject) => {
|
|
1204
1227
|
const abort = () => reject(signal.reason);
|
|
1205
1228
|
signal.addEventListener('abort', abort, { once: true });
|
|
1206
|
-
operation.then(value => {
|
|
1229
|
+
operation.then((value) => {
|
|
1207
1230
|
signal.removeEventListener('abort', abort);
|
|
1208
1231
|
resolve(value);
|
|
1209
|
-
}, error => {
|
|
1232
|
+
}, (error) => {
|
|
1210
1233
|
signal.removeEventListener('abort', abort);
|
|
1211
1234
|
reject(error);
|
|
1212
1235
|
});
|
|
1213
1236
|
});
|
|
1214
1237
|
}
|
|
1215
1238
|
function sameSourceActorAuthority(current, expected) {
|
|
1216
|
-
return current.storeVersion.value === expected.storeVersion.value
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1239
|
+
return (current.storeVersion.value === expected.storeVersion.value &&
|
|
1240
|
+
current.objectGeneration === expected.objectGeneration &&
|
|
1241
|
+
current.authorityOwnerGeneration === expected.authorityOwnerGeneration &&
|
|
1242
|
+
current.ownerId === expected.ownerId &&
|
|
1243
|
+
current.ownerLeaseGeneration === expected.ownerLeaseGeneration &&
|
|
1244
|
+
current.allocation.state === expected.allocation.state &&
|
|
1245
|
+
current.allocation.objectKind === expected.allocation.objectKind &&
|
|
1246
|
+
current.allocation.stableType === expected.allocation.stableType &&
|
|
1247
|
+
current.allocation.descriptor.meshName === expected.allocation.descriptor.meshName &&
|
|
1248
|
+
(0, routing_id_1.routingIdsEqual)(current.allocation.descriptor.rid, expected.allocation.descriptor.rid) &&
|
|
1249
|
+
current.allocation.descriptorLifecycleGeneration ===
|
|
1250
|
+
expected.allocation.descriptorLifecycleGeneration);
|
|
1228
1251
|
}
|
|
1229
1252
|
async function waitForActorAuthorityRetry(deadlineAtMs, signal, cause) {
|
|
1230
1253
|
signal?.throwIfAborted();
|