@zlink-systems/framework 0.21.0 → 0.22.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/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- 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 +24 -18
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- 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 +158 -124
- 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/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.js +116 -113
- 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 +10 -18
- 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 +43 -33
- 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.js +9 -7
- 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/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +47 -39
- 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 -23
- 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.js +136 -136
- 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-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.js +96 -95
- 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 +244 -227
- 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/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 +208 -219
- 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.js +23 -20
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -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 +74 -85
- 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 +16 -14
- 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 +1 -2
- 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 +5 -5
- package/dist/runtime/spots/spot-timer.js +25 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
- package/dist/runtime/streams/bound-session-service.js +8 -9
- package/dist/runtime/streams/index.js +20 -19
- package/dist/runtime/streams/managed-stream.js +32 -30
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.js +29 -18
- package/dist/runtime/streams/session-actor-coordinator.js +34 -37
- package/dist/runtime/streams/session-context.js +30 -28
- 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.js +11 -5
- package/dist/runtime/streams/stream-session-runtime.js +70 -66
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +2 -2
- 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 +1 -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 +0 -1
- 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 +138 -130
- 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 +5 -4
- 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 +351 -320
- 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 +73 -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 +335 -383
- 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 +40 -42
- 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 +215 -197
- 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 +11 -8
- 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/flow-context.ts +12 -3
- 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 +95 -76
- 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 -51
- 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 +312 -385
- 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 +1 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +157 -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 +1 -1
- 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 +593 -563
- 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 +184 -153
- package/src/runtime/spots/spot-actor-packet-drain.ts +54 -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 +230 -221
- 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 +128 -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 +11 -17
- 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 +56 -46
- package/src/runtime/spots/spot-timer.ts +98 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
- package/src/runtime/streams/bound-session-response-target.ts +29 -8
- package/src/runtime/streams/bound-session-service.ts +39 -39
- package/src/runtime/streams/index.ts +176 -100
- package/src/runtime/streams/managed-stream.ts +98 -87
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +73 -43
- package/src/runtime/streams/session-actor-coordinator.ts +97 -89
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +66 -48
- 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 +55 -38
- package/src/runtime/streams/stream-session-runtime.ts +268 -210
- package/src/runtime/workers/index.ts +68 -29
|
@@ -12,17 +12,25 @@ var ZLinkSpotKind;
|
|
|
12
12
|
})(ZLinkSpotKind || (exports.ZLinkSpotKind = ZLinkSpotKind = {}));
|
|
13
13
|
function zlinkSpotKindToWire(kind) {
|
|
14
14
|
switch (kind) {
|
|
15
|
-
case ZLinkSpotKind.Entry:
|
|
16
|
-
|
|
17
|
-
case ZLinkSpotKind.
|
|
18
|
-
|
|
15
|
+
case ZLinkSpotKind.Entry:
|
|
16
|
+
return 1;
|
|
17
|
+
case ZLinkSpotKind.User:
|
|
18
|
+
return 2;
|
|
19
|
+
case ZLinkSpotKind.Instance:
|
|
20
|
+
return 3;
|
|
21
|
+
default:
|
|
22
|
+
return 0;
|
|
19
23
|
}
|
|
20
24
|
}
|
|
21
25
|
function zlinkSpotKindFromWire(value) {
|
|
22
26
|
switch (value) {
|
|
23
|
-
case 1:
|
|
24
|
-
|
|
25
|
-
case
|
|
26
|
-
|
|
27
|
+
case 1:
|
|
28
|
+
return ZLinkSpotKind.Entry;
|
|
29
|
+
case 2:
|
|
30
|
+
return ZLinkSpotKind.User;
|
|
31
|
+
case 3:
|
|
32
|
+
return ZLinkSpotKind.Instance;
|
|
33
|
+
default:
|
|
34
|
+
return ZLinkSpotKind.Invalid;
|
|
27
35
|
}
|
|
28
36
|
}
|
|
@@ -6,26 +6,26 @@ exports.matchesActorLocation = matchesActorLocation;
|
|
|
6
6
|
exports.matchesRouteLocation = matchesRouteLocation;
|
|
7
7
|
const routing_id_1 = require("./runtime/routing-id");
|
|
8
8
|
function matchesPeerLocation(row, filter) {
|
|
9
|
-
return (filter.autoConnectType === undefined || row.autoConnectType === filter.autoConnectType)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
return ((filter.autoConnectType === undefined || row.autoConnectType === filter.autoConnectType) &&
|
|
10
|
+
(filter.meshName === undefined || row.meshName === filter.meshName) &&
|
|
11
|
+
(filter.role === undefined || row.role === filter.role) &&
|
|
12
|
+
(filter.nodeRid === undefined || (0, routing_id_1.routingIdsEqual)(row.nodeRid, filter.nodeRid)) &&
|
|
13
|
+
(filter.endpoint === undefined || row.endpoint === filter.endpoint));
|
|
14
14
|
}
|
|
15
15
|
function matchesSpotLocation(row, filter) {
|
|
16
|
-
return (filter.meshName === undefined || row.meshName === filter.meshName)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
return ((filter.meshName === undefined || row.meshName === filter.meshName) &&
|
|
17
|
+
(filter.spotType === undefined || row.spotType === filter.spotType) &&
|
|
18
|
+
(filter.nodeRid === undefined || (0, routing_id_1.routingIdsEqual)(row.ownerNodeRid, filter.nodeRid)) &&
|
|
19
|
+
(filter.spotKind === undefined || row.spotKind === filter.spotKind));
|
|
20
20
|
}
|
|
21
21
|
function matchesActorLocation(row, filter) {
|
|
22
|
-
return (filter.actorType === undefined || row.actorType === filter.actorType)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
return ((filter.actorType === undefined || row.actorType === filter.actorType) &&
|
|
23
|
+
(filter.nodeRid === undefined || (0, routing_id_1.routingIdsEqual)(row.ownerNodeRid, filter.nodeRid)) &&
|
|
24
|
+
(filter.spotId === undefined || row.spotId === filter.spotId) &&
|
|
25
|
+
(filter.locationKind === undefined || row.spotKind === filter.locationKind));
|
|
26
26
|
}
|
|
27
27
|
function matchesRouteLocation(row, filter) {
|
|
28
|
-
return (filter.routeKind === undefined || row.routeKind === filter.routeKind)
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
return ((filter.routeKind === undefined || row.routeKind === filter.routeKind) &&
|
|
29
|
+
(filter.ownerNodeRid === undefined || (0, routing_id_1.routingIdsEqual)(row.ownerNodeRid, filter.ownerNodeRid)) &&
|
|
30
|
+
(filter.ownerId === undefined || row.ownerId === filter.ownerId));
|
|
31
31
|
}
|
package/dist/nest-integration.js
CHANGED
|
@@ -81,7 +81,8 @@ function createIntegrationActorManager(registration, runtime, providerResolver)
|
|
|
81
81
|
const manager = new actors_1.DefaultZLinkActorManager({
|
|
82
82
|
actorFactories: registration.actorFactories,
|
|
83
83
|
...runtimeOptions,
|
|
84
|
-
boundSessionFactory: runtimeOptions.boundSessionFactory ??
|
|
84
|
+
boundSessionFactory: runtimeOptions.boundSessionFactory ??
|
|
85
|
+
host.boundSessionFactory.create.bind(host.boundSessionFactory),
|
|
85
86
|
providerResolver
|
|
86
87
|
});
|
|
87
88
|
host.setActorManager(manager);
|
|
@@ -100,16 +101,21 @@ function createIntegrationSpotManager(registration, runtime, providerResolver) {
|
|
|
100
101
|
meshName,
|
|
101
102
|
spotNode.instanceSpotIdleTimeoutMs ?? 0
|
|
102
103
|
])),
|
|
103
|
-
spotTimerHandlers: [...registration.spotNodes.values()]
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
104
|
+
spotTimerHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
|
|
105
|
+
...(spotNode.spotTimerHandlers ?? [])
|
|
106
|
+
]),
|
|
107
|
+
spotPacketHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
|
|
108
|
+
...(spotNode.spotPacketHandlers ?? [])
|
|
109
|
+
]),
|
|
110
|
+
spotSubscriptionHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
|
|
111
|
+
...(spotNode.spotSubscriptionHandlers ?? [])
|
|
112
|
+
]),
|
|
113
|
+
spotActorSendHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
|
|
114
|
+
...(spotNode.spotActorSendHandlers ?? [])
|
|
115
|
+
]),
|
|
116
|
+
spotActorRequestHandlers: [...registration.spotNodes.values()].flatMap((spotNode) => [
|
|
117
|
+
...(spotNode.spotActorRequestHandlers ?? [])
|
|
118
|
+
]),
|
|
113
119
|
...runtimeOptions,
|
|
114
120
|
spotRouteResolver: runtimeOptions.spotRouteResolver,
|
|
115
121
|
routedTransport: host.routeTransport,
|
package/dist/runtime/abort.js
CHANGED
|
@@ -26,8 +26,8 @@ function createAbortError() {
|
|
|
26
26
|
return new ZLinkAbortError();
|
|
27
27
|
}
|
|
28
28
|
function isAbortError(error) {
|
|
29
|
-
return error instanceof ZLinkAbortError
|
|
30
|
-
|
|
29
|
+
return (error instanceof ZLinkAbortError ||
|
|
30
|
+
(error instanceof DOMException && error.name === 'AbortError'));
|
|
31
31
|
}
|
|
32
32
|
function createDeadlineExceededError(message) {
|
|
33
33
|
return new ZLinkDeadlineExceededError(message);
|
|
@@ -64,8 +64,12 @@ function awaitWithAbort(operation, signal, abortOperation) {
|
|
|
64
64
|
reject(createAbortError());
|
|
65
65
|
};
|
|
66
66
|
signal.addEventListener('abort', abort, { once: true });
|
|
67
|
-
operation.then((value) => {
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
operation.then((value) => {
|
|
68
|
+
if (settle())
|
|
69
|
+
resolve(value);
|
|
70
|
+
}, (error) => {
|
|
71
|
+
if (settle())
|
|
72
|
+
reject(error);
|
|
73
|
+
});
|
|
70
74
|
});
|
|
71
75
|
}
|
|
@@ -81,9 +81,9 @@ function decodeActorAuthorityPayload(payload) {
|
|
|
81
81
|
: stateValue === 1 && operation === 0
|
|
82
82
|
? 'ready'
|
|
83
83
|
: undefined;
|
|
84
|
-
if (!actor.done
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
if (!actor.done ||
|
|
85
|
+
state === undefined ||
|
|
86
|
+
(currentSpotKind !== contracts_1.ZLinkSpotKind.Entry && currentSpotKind !== contracts_1.ZLinkSpotKind.User)) {
|
|
87
87
|
return undefined;
|
|
88
88
|
}
|
|
89
89
|
const ownerId = body.text8();
|
|
@@ -91,11 +91,7 @@ function decodeActorAuthorityPayload(payload) {
|
|
|
91
91
|
const meshName = body.text8();
|
|
92
92
|
const nodeRid = body.rid();
|
|
93
93
|
const nodeGeneration = body.nonzeroU64();
|
|
94
|
-
if (body.u8() !== 0
|
|
95
|
-
|| body.u32() !== 0
|
|
96
|
-
|| body.u8() !== 0
|
|
97
|
-
|| body.u32() !== 0
|
|
98
|
-
|| !body.done) {
|
|
94
|
+
if (body.u8() !== 0 || body.u32() !== 0 || body.u8() !== 0 || body.u32() !== 0 || !body.done) {
|
|
99
95
|
return undefined;
|
|
100
96
|
}
|
|
101
97
|
return {
|
|
@@ -155,7 +151,7 @@ function decodeActorRelocationEnvelope(payload) {
|
|
|
155
151
|
const version = reader.u16();
|
|
156
152
|
if (version !== 5 && version !== 6)
|
|
157
153
|
return undefined;
|
|
158
|
-
if (reader.take(16).every(byte => byte === 0))
|
|
154
|
+
if (reader.take(16).every((byte) => byte === 0))
|
|
159
155
|
return undefined;
|
|
160
156
|
const phase = reader.u8();
|
|
161
157
|
if (phase < 1 || phase > 4)
|
|
@@ -177,12 +173,12 @@ function decodeActorRelocationEnvelope(payload) {
|
|
|
177
173
|
reader.text16();
|
|
178
174
|
reader.u64();
|
|
179
175
|
}
|
|
180
|
-
if (bindingGeneration === 0n
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
176
|
+
if (bindingGeneration === 0n ||
|
|
177
|
+
objectGeneration === 0n ||
|
|
178
|
+
authorityOwnerGeneration === 0n ||
|
|
179
|
+
targetNodeGeneration === 0n ||
|
|
180
|
+
ownerLeaseGeneration === 0n ||
|
|
181
|
+
sessionOwnerNodeGeneration === 0n) {
|
|
186
182
|
return undefined;
|
|
187
183
|
}
|
|
188
184
|
}
|
|
@@ -242,7 +238,7 @@ function i32le(value) {
|
|
|
242
238
|
return result;
|
|
243
239
|
}
|
|
244
240
|
function concat(...parts) {
|
|
245
|
-
return Buffer.concat(parts.map(part => Buffer.from(part)));
|
|
241
|
+
return Buffer.concat(parts.map((part) => Buffer.from(part)));
|
|
246
242
|
}
|
|
247
243
|
class BigEndianReader {
|
|
248
244
|
bytes;
|
|
@@ -59,7 +59,7 @@ async function publishInitialActorAuthority(store, identity, signal) {
|
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
hasApplicationPayload: 'false'
|
|
62
|
-
}, {
|
|
62
|
+
}, {}));
|
|
63
63
|
const operationId = (0, creation_operation_id_1.randomOperationId)();
|
|
64
64
|
const completed = await store.completeCreation({
|
|
65
65
|
key: { kind: 'actor', globalId: identity.actor.actorId },
|
|
@@ -152,7 +152,7 @@ function decodeActorAuthorityIdentityCore(payload, objectGeneration, relocating)
|
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
function rewriteActorAuthorityRoute(payload, actor, spotId, spotGeneration, spotKind, ownerNodeGeneration, owner) {
|
|
155
|
-
return rewriteActorAuthorityPayload(payload, value => {
|
|
155
|
+
return rewriteActorAuthorityPayload(payload, (value) => {
|
|
156
156
|
if (value.actorId !== actor.actorId) {
|
|
157
157
|
throw new Error(`Actor '${actor.actorId}' authority identity is invalid.`);
|
|
158
158
|
}
|
|
@@ -170,7 +170,7 @@ function rewriteActorAuthorityRoute(payload, actor, spotId, spotGeneration, spot
|
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
function rewriteActorAuthorityOwner(payload, owner) {
|
|
173
|
-
return rewriteActorAuthorityPayload(payload, value => (0, actor_authority_payload_codec_1.encodeActorAuthorityPayload)({
|
|
173
|
+
return rewriteActorAuthorityPayload(payload, (value) => (0, actor_authority_payload_codec_1.encodeActorAuthorityPayload)({
|
|
174
174
|
...value,
|
|
175
175
|
ownerId: owner.ownerId,
|
|
176
176
|
ownerLeaseGeneration: owner.leaseGeneration
|
|
@@ -178,7 +178,8 @@ function rewriteActorAuthorityOwner(payload, owner) {
|
|
|
178
178
|
}
|
|
179
179
|
function isActorAuthorityPayload(payload) {
|
|
180
180
|
const outerApplication = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload);
|
|
181
|
-
return (0, actor_authority_payload_codec_1.decodeActorAuthorityPayload)((0, actor_authority_payload_codec_1.relocatingActorAuthorityApplicationPayload)(outerApplication)) !==
|
|
181
|
+
return ((0, actor_authority_payload_codec_1.decodeActorAuthorityPayload)((0, actor_authority_payload_codec_1.relocatingActorAuthorityApplicationPayload)(outerApplication)) !==
|
|
182
|
+
undefined);
|
|
182
183
|
}
|
|
183
184
|
function rewriteActorAuthorityPayload(payload, rewrite) {
|
|
184
185
|
const outerApplication = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload);
|
|
@@ -192,19 +193,19 @@ function rewriteActorAuthorityPayload(payload, rewrite) {
|
|
|
192
193
|
}
|
|
193
194
|
function requireActorAuthority(snapshot, expected) {
|
|
194
195
|
const actual = decodeActorAuthorityIdentity(snapshot.payload, snapshot.objectGeneration);
|
|
195
|
-
if (snapshot.allocation.state !== 'active'
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
196
|
+
if (snapshot.allocation.state !== 'active' ||
|
|
197
|
+
snapshot.allocation.objectKind !== 'actor' ||
|
|
198
|
+
snapshot.allocation.stableType !== expected.actorType ||
|
|
199
|
+
snapshot.allocation.descriptor.meshName !== expected.meshName ||
|
|
200
|
+
String(snapshot.allocation.descriptor.rid) !== String(expected.actor.nodeRid) ||
|
|
201
|
+
snapshot.allocation.descriptorLifecycleGeneration !== expected.ownerNodeGeneration ||
|
|
202
|
+
snapshot.ownerId !== expected.owner.ownerId ||
|
|
203
|
+
snapshot.ownerLeaseGeneration !== expected.owner.leaseGeneration ||
|
|
204
|
+
actual === undefined ||
|
|
205
|
+
actual.actorType !== expected.actorType ||
|
|
206
|
+
actual.actor.actorId !== expected.actor.actorId ||
|
|
207
|
+
actual.actor.objectGeneration !== expected.actor.objectGeneration ||
|
|
208
|
+
String(actual.actor.nodeRid) !== String(expected.actor.nodeRid)) {
|
|
208
209
|
throw new Error(`Actor '${expected.actor.actorId}' authority fence does not match its ActorRef.`);
|
|
209
210
|
}
|
|
210
211
|
}
|
|
@@ -41,7 +41,9 @@ class DefaultZLinkActorClient {
|
|
|
41
41
|
const messageFollow = createActorMessageFollowContext(route, parts, false);
|
|
42
42
|
const routedActor = (0, actor_message_follow_context_1.attachActorMessageFollowContext)(actor, messageFollow);
|
|
43
43
|
try {
|
|
44
|
-
const submissionCopies = await this.options
|
|
44
|
+
const submissionCopies = (await this.options
|
|
45
|
+
.transportDeliveryGate?.()
|
|
46
|
+
?.waitBeforeSubmit(actorId, 'oneWay', signal)) ?? 1;
|
|
45
47
|
const handoff = this.options.handoffCapture?.(meshName, actor.actorId, parts, false, routedActor);
|
|
46
48
|
if (handoff !== undefined) {
|
|
47
49
|
const submissions = [handoff];
|
|
@@ -54,8 +56,8 @@ class DefaultZLinkActorClient {
|
|
|
54
56
|
return submitted();
|
|
55
57
|
}
|
|
56
58
|
const node = this.requireNode(meshName);
|
|
57
|
-
if (this.options.routeTransport !== undefined
|
|
58
|
-
|
|
59
|
+
if (this.options.routeTransport !== undefined &&
|
|
60
|
+
String(node.status().routingId) !== String(actor.nodeRid)) {
|
|
59
61
|
await this.options.routeTransport.sendToSpot(remoteActorRouteTarget(route), (0, actor_packet_relay_wire_1.encodeRemoteActorPacketRelayPayload)({
|
|
60
62
|
actorId,
|
|
61
63
|
header: parts[0].data(),
|
|
@@ -83,19 +85,14 @@ class DefaultZLinkActorClient {
|
|
|
83
85
|
}
|
|
84
86
|
async request(actorId, explicitPacketName, request, timeoutMs, metadata, signal, waitPolicy = 'async') {
|
|
85
87
|
(0, abort_1.throwIfAborted)(signal);
|
|
86
|
-
const sourceSpotId = (0, actor_execution_context_1.currentZLinkActorExecution)()?.spotId
|
|
87
|
-
?? (0, execution_1.currentZLinkSpotSerialSourceId)();
|
|
88
|
+
const sourceSpotId = (0, actor_execution_context_1.currentZLinkActorExecution)()?.spotId ?? (0, execution_1.currentZLinkSpotSerialSourceId)();
|
|
88
89
|
const effectiveTimeoutMs = timeoutMs ?? this.options.defaultRequestTimeoutMs;
|
|
89
|
-
const deadlineMs = effectiveTimeoutMs === undefined
|
|
90
|
-
|
|
91
|
-
: performance.now() + effectiveTimeoutMs;
|
|
92
|
-
const deadlineUnixMs = effectiveTimeoutMs === undefined
|
|
93
|
-
? undefined
|
|
94
|
-
: Date.now() + effectiveTimeoutMs;
|
|
90
|
+
const deadlineMs = effectiveTimeoutMs === undefined ? undefined : performance.now() + effectiveTimeoutMs;
|
|
91
|
+
const deadlineUnixMs = effectiveTimeoutMs === undefined ? undefined : Date.now() + effectiveTimeoutMs;
|
|
95
92
|
const route = await this.resolveActorRoute(actorId, signal);
|
|
96
|
-
if (waitPolicy === 'async'
|
|
97
|
-
|
|
98
|
-
|
|
93
|
+
if (waitPolicy === 'async' &&
|
|
94
|
+
sourceSpotId !== undefined &&
|
|
95
|
+
sameSpotRoute(sourceSpotId, route)) {
|
|
99
96
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `An Actor request cannot await Actor '${actorId}' on the current Spot while holding its execution claim.`);
|
|
100
97
|
}
|
|
101
98
|
const { meshName, actorRef: actor } = route;
|
|
@@ -107,7 +104,9 @@ class DefaultZLinkActorClient {
|
|
|
107
104
|
const messageFollow = createActorMessageFollowContext(route, parts, true, deadlineUnixMs, correlationId, operationId);
|
|
108
105
|
const routedActor = (0, actor_message_follow_context_1.attachActorMessageFollowContext)(actor, messageFollow);
|
|
109
106
|
try {
|
|
110
|
-
const submissionCopies = await this.options
|
|
107
|
+
const submissionCopies = (await this.options
|
|
108
|
+
.transportDeliveryGate?.()
|
|
109
|
+
?.waitBeforeSubmit(actorId, 'request', signal)) ?? 1;
|
|
111
110
|
const handoff = this.options.handoffCapture?.(meshName, actor.actorId, parts, true, routedActor, deadlineUnixMs);
|
|
112
111
|
if (handoff !== undefined) {
|
|
113
112
|
const submissions = [handoff];
|
|
@@ -159,9 +158,11 @@ class DefaultZLinkActorClient {
|
|
|
159
158
|
}
|
|
160
159
|
createPacketParts(kind, requestSeq, explicitPacketName, message, metadata, correlationId) {
|
|
161
160
|
const packetName = (0, packet_name_1.resolveFrameworkPacketName)(message, explicitPacketName, 'Actor');
|
|
162
|
-
const flags = (requestSeq === undefined
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
const flags = (requestSeq === undefined
|
|
162
|
+
? protocol_1.ZLinkStreamHeaderFlags.None
|
|
163
|
+
: protocol_1.ZLinkStreamHeaderFlags.HasRequestSeq) |
|
|
164
|
+
(metadata.size === 0 ? protocol_1.ZLinkStreamHeaderFlags.None : protocol_1.ZLinkStreamHeaderFlags.HasMetadata) |
|
|
165
|
+
(correlationId === undefined
|
|
165
166
|
? protocol_1.ZLinkStreamHeaderFlags.None
|
|
166
167
|
: protocol_1.ZLinkStreamHeaderFlags.HasCorrelationId);
|
|
167
168
|
const encoded = (0, payload_codec_1.encodeFrameworkPayload)(message, this.options.messageSerializers, packetName, 'payload');
|
|
@@ -190,7 +191,9 @@ class DefaultZLinkActorClient {
|
|
|
190
191
|
async submitActorSend(meshName, actor, parts) {
|
|
191
192
|
const node = this.requireNode(meshName);
|
|
192
193
|
try {
|
|
193
|
-
return mapSubmitResult(await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
194
|
+
return mapSubmitResult(await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
195
|
+
flags: runtime_values_1.ZLINK_BACKEND_SEND_NONE
|
|
196
|
+
}), 'Actor send');
|
|
194
197
|
}
|
|
195
198
|
catch (error) {
|
|
196
199
|
if ((0, runtime_values_1.isZLinkBackendResultError)(error)) {
|
|
@@ -203,9 +206,9 @@ class DefaultZLinkActorClient {
|
|
|
203
206
|
}
|
|
204
207
|
async submitActorRequest(meshName, actor, parts, timeoutMs, signal, route, messageFollowContext) {
|
|
205
208
|
const node = this.requireNode(meshName);
|
|
206
|
-
if (this.options.routeTransport !== undefined
|
|
207
|
-
|
|
208
|
-
|
|
209
|
+
if (this.options.routeTransport !== undefined &&
|
|
210
|
+
String(node.status().routingId) !== String(actor.nodeRid) &&
|
|
211
|
+
route !== undefined) {
|
|
209
212
|
const relay = (0, actor_packet_relay_wire_1.encodeRemoteActorPacketRelayPayload)({
|
|
210
213
|
actorId: actor.actorId,
|
|
211
214
|
header: parts[0].data(),
|
|
@@ -227,7 +230,9 @@ class DefaultZLinkActorClient {
|
|
|
227
230
|
});
|
|
228
231
|
const reply = await (0, actor_routed_json_request_1.requestRoutedJsonReply)(this.options.routeTransport, remoteActorRouteTarget(route), relay, { timeoutMs, signal }, `Remote Actor request is not available for '${actor.actorId}'.`, (replyParts) => JSON.parse(replyParts[0]?.getString('utf8') ?? '{}'));
|
|
229
232
|
if (reply.ok !== true) {
|
|
230
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(remoteRelayErrorKind(reply.errorKind), typeof reply.error === 'string'
|
|
233
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(remoteRelayErrorKind(reply.errorKind), typeof reply.error === 'string'
|
|
234
|
+
? reply.error
|
|
235
|
+
: `Remote Actor request failed for '${actor.actorId}'.`);
|
|
231
236
|
}
|
|
232
237
|
return reply.response;
|
|
233
238
|
}
|
|
@@ -272,15 +277,16 @@ function remoteActorRouteTarget(route) {
|
|
|
272
277
|
};
|
|
273
278
|
}
|
|
274
279
|
function createActorMessageFollowContext(route, parts, request, deadlineUnixMs, correlationId, operationId) {
|
|
275
|
-
if (typeof route.ownerId !== 'string' ||
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
if (typeof route.ownerId !== 'string' ||
|
|
281
|
+
route.ownerId.length === 0 ||
|
|
282
|
+
typeof route.ownerLeaseGeneration !== 'bigint' ||
|
|
283
|
+
route.ownerLeaseGeneration <= 0n ||
|
|
284
|
+
typeof route.ownerNodeGeneration !== 'bigint' ||
|
|
285
|
+
route.ownerNodeGeneration <= 0n ||
|
|
286
|
+
typeof route.authorityOwnerGeneration !== 'bigint' ||
|
|
287
|
+
route.authorityOwnerGeneration <= 0n ||
|
|
288
|
+
typeof route.actorRef.objectGeneration !== 'bigint' ||
|
|
289
|
+
route.actorRef.objectGeneration <= 0n) {
|
|
284
290
|
throw actorLocationStale(route.actorRef.actorId, new Error('Resolved Actor route does not contain an exact authority owner fence.'));
|
|
285
291
|
}
|
|
286
292
|
return (0, actor_message_follow_context_1.createInitialActorMessageFollowContext)(route, parts, request, deadlineUnixMs, correlationId, operationId);
|
|
@@ -307,7 +313,7 @@ function requireActorId(actorId) {
|
|
|
307
313
|
}
|
|
308
314
|
async function waitHandoffReply(reply, timeoutMs) {
|
|
309
315
|
if (timeoutMs === undefined)
|
|
310
|
-
return await reply;
|
|
316
|
+
return (await reply);
|
|
311
317
|
let deadline;
|
|
312
318
|
try {
|
|
313
319
|
return await Promise.race([
|
|
@@ -327,7 +333,8 @@ async function forwardEncodedActorPacket(node, completions, actor, header, paylo
|
|
|
327
333
|
const parts = [header, payload];
|
|
328
334
|
const packetName = (0, protocol_1.decodeStreamHeader)(header).name;
|
|
329
335
|
if (!returnResponse) {
|
|
330
|
-
if (await node.sendToActor(target, parts, { flags: runtime_values_1.ZLINK_BACKEND_SEND_NONE }) !==
|
|
336
|
+
if ((await node.sendToActor(target, parts, { flags: runtime_values_1.ZLINK_BACKEND_SEND_NONE })) !==
|
|
337
|
+
runtime_values_1.SubmitResult.Ok) {
|
|
331
338
|
throw routeNotConnected('Actor handoff send submit was not accepted.');
|
|
332
339
|
}
|
|
333
340
|
return undefined;
|
|
@@ -437,9 +444,7 @@ class DefaultZLinkActorRequestCall {
|
|
|
437
444
|
this.rejectSelfActorRequest();
|
|
438
445
|
this.executed = true;
|
|
439
446
|
(0, abort_1.throwIfAborted)(signal);
|
|
440
|
-
const submitter = waitPolicy === 'async'
|
|
441
|
-
? this.asyncSubmitter
|
|
442
|
-
: this.yieldSubmitter;
|
|
447
|
+
const submitter = waitPolicy === 'async' ? this.asyncSubmitter : this.yieldSubmitter;
|
|
443
448
|
return submitter(this.packet ?? (0, packet_name_1.resolveFrameworkPacketName)(this.request, undefined, 'Actor'), this.timeoutMs ?? this.defaultRequestTimeoutMs, this.selectedMetadata, signal);
|
|
444
449
|
}
|
|
445
450
|
rejectSelfActorRequest() {
|
|
@@ -451,8 +456,7 @@ class DefaultZLinkActorRequestCall {
|
|
|
451
456
|
}
|
|
452
457
|
function sameSpotRoute(sourceSpotId, route) {
|
|
453
458
|
const targetSpotId = route.enclosingSpotRoute?.spotId ?? route.spotId;
|
|
454
|
-
return targetSpotId !== undefined
|
|
455
|
-
&& String(sourceSpotId) === String(targetSpotId);
|
|
459
|
+
return targetSpotId !== undefined && String(sourceSpotId) === String(targetSpotId);
|
|
456
460
|
}
|
|
457
461
|
function decodeActorReply(reply, serializers, packetName) {
|
|
458
462
|
try {
|
|
@@ -487,10 +491,10 @@ function decodeActorReplyPayload(kind, payload, serializers, packetName) {
|
|
|
487
491
|
if (kind === protocol_1.ZLinkStreamMessageKind.Error) {
|
|
488
492
|
const error = (0, payload_codec_1.decodeFrameworkPayloadMessage)(payload, serializers);
|
|
489
493
|
const wireKind = error.kind;
|
|
490
|
-
const publicKind = typeof wireKind === 'number'
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
+
const publicKind = typeof wireKind === 'number' &&
|
|
495
|
+
Number.isInteger(wireKind) &&
|
|
496
|
+
wireKind >= contracts_2.ZLinkFrameworkErrorKind.NotFound &&
|
|
497
|
+
wireKind <= contracts_2.ZLinkFrameworkErrorKind.InternalFailure
|
|
494
498
|
? wireKind
|
|
495
499
|
: contracts_2.ZLinkFrameworkErrorKind.InternalFailure;
|
|
496
500
|
throw new contracts_2.ZLinkFrameworkException(publicKind, error.message ?? 'Actor request failed.');
|
|
@@ -542,26 +546,42 @@ function submitted() {
|
|
|
542
546
|
// (isStaleActorError) keeps working.
|
|
543
547
|
function actorFailureCodeKind(failureErrno) {
|
|
544
548
|
switch (failureErrno) {
|
|
545
|
-
case 3:
|
|
546
|
-
|
|
547
|
-
case
|
|
548
|
-
|
|
549
|
+
case 3:
|
|
550
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorAlreadyExists;
|
|
551
|
+
case 4:
|
|
552
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorTypeMismatch;
|
|
553
|
+
case 7:
|
|
554
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotTypeMismatch;
|
|
555
|
+
case 8:
|
|
556
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorSessionNotBound;
|
|
549
557
|
case 9:
|
|
550
|
-
case 14:
|
|
558
|
+
case 14:
|
|
559
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound;
|
|
551
560
|
case 12:
|
|
552
|
-
case 16:
|
|
561
|
+
case 16:
|
|
562
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestProtocolError;
|
|
553
563
|
// routeNotConnected(13) and a remote worker queue full(18) are Unavailable.
|
|
554
564
|
case 13:
|
|
555
|
-
case 18:
|
|
556
|
-
|
|
557
|
-
case
|
|
558
|
-
|
|
559
|
-
case
|
|
560
|
-
|
|
561
|
-
case
|
|
562
|
-
|
|
563
|
-
case
|
|
564
|
-
|
|
565
|
+
case 18:
|
|
566
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
567
|
+
case 15:
|
|
568
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestRejected;
|
|
569
|
+
case 19:
|
|
570
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.WorkerTimedOut;
|
|
571
|
+
case 17:
|
|
572
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
573
|
+
case 20:
|
|
574
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.WorkerFailed;
|
|
575
|
+
case 21:
|
|
576
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
577
|
+
case 33:
|
|
578
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale;
|
|
579
|
+
case 34:
|
|
580
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving;
|
|
581
|
+
case 35:
|
|
582
|
+
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RelocationDataLost;
|
|
583
|
+
default:
|
|
584
|
+
return undefined;
|
|
565
585
|
}
|
|
566
586
|
}
|
|
567
587
|
function actorTerminalKind(result) {
|
|
@@ -589,8 +609,8 @@ function actorTerminalKind(result) {
|
|
|
589
609
|
}
|
|
590
610
|
function mapRequestResult(result, failureErrno, operationName) {
|
|
591
611
|
const kind = actorFailureCodeKind(failureErrno) ?? actorTerminalKind(result);
|
|
592
|
-
return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `${operationName} failed with request result ${result}`
|
|
593
|
-
|
|
612
|
+
return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `${operationName} failed with request result ${result}` +
|
|
613
|
+
(failureErrno !== 0 ? ` (failure code ${failureErrno}).` : '.'));
|
|
594
614
|
}
|
|
595
615
|
function mapRequestError(error, operationName) {
|
|
596
616
|
return mapRequestResult(error.result, error.failureErrno ?? 0, operationName);
|
|
@@ -599,8 +619,8 @@ function routeNotConnected(message, cause) {
|
|
|
599
619
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, message, true, cause);
|
|
600
620
|
}
|
|
601
621
|
function isStaleActorError(error) {
|
|
602
|
-
return error instanceof contracts_2.ZLinkFrameworkException
|
|
603
|
-
|
|
622
|
+
return (error instanceof contracts_2.ZLinkFrameworkException &&
|
|
623
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
|
|
604
624
|
}
|
|
605
625
|
function actorLocationStale(actorId, cause) {
|
|
606
626
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale, `Actor route '${actorId}' is stale after re-resolve.`, true, cause);
|
|
@@ -179,14 +179,17 @@ class DefaultZLinkActorJoinSpotCall {
|
|
|
179
179
|
execute: async () => {
|
|
180
180
|
let result;
|
|
181
181
|
try {
|
|
182
|
-
const pending = pendingJoin ??
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
182
|
+
const pending = pendingJoin ??
|
|
183
|
+
this.coordinator.joinSpot(this.actor, this.state, this.spotId, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
|
|
184
|
+
result =
|
|
185
|
+
this.turn === undefined
|
|
186
|
+
? await pending
|
|
187
|
+
: await this.turn.yieldFrameworkPromise(pending);
|
|
186
188
|
}
|
|
187
189
|
catch (error) {
|
|
188
190
|
this.state.endDeferredJoin();
|
|
189
|
-
await this.coordinator
|
|
191
|
+
await this.coordinator
|
|
192
|
+
.abortDeferredJoin?.(this.actor, this.state, operationId)
|
|
190
193
|
.catch(() => undefined);
|
|
191
194
|
await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
|
|
192
195
|
return;
|
|
@@ -195,10 +198,10 @@ class DefaultZLinkActorJoinSpotCall {
|
|
|
195
198
|
deadline.close();
|
|
196
199
|
requestMessage.close();
|
|
197
200
|
}
|
|
198
|
-
if (!result.accepted
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
if (!result.accepted ||
|
|
202
|
+
sourceNodeRid === undefined ||
|
|
203
|
+
result.actor === undefined ||
|
|
204
|
+
String(sourceNodeRid) === String(result.actor.nodeRid)) {
|
|
202
205
|
await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
|
|
203
206
|
}
|
|
204
207
|
else {
|
|
@@ -299,14 +302,17 @@ class DefaultZLinkActorJoinEntrySpotCall {
|
|
|
299
302
|
execute: async () => {
|
|
300
303
|
let result;
|
|
301
304
|
try {
|
|
302
|
-
const pending = pendingJoin ??
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
305
|
+
const pending = pendingJoin ??
|
|
306
|
+
this.coordinator.joinEntrySpot(this.actor, this.state, undefined, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
|
|
307
|
+
result =
|
|
308
|
+
this.turn === undefined
|
|
309
|
+
? await pending
|
|
310
|
+
: await this.turn.yieldFrameworkPromise(pending);
|
|
306
311
|
}
|
|
307
312
|
catch (error) {
|
|
308
313
|
this.state.endDeferredJoin();
|
|
309
|
-
await this.coordinator
|
|
314
|
+
await this.coordinator
|
|
315
|
+
.abortDeferredJoin?.(this.actor, this.state, operationId)
|
|
310
316
|
.catch(() => undefined);
|
|
311
317
|
await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
|
|
312
318
|
return;
|
|
@@ -315,10 +321,10 @@ class DefaultZLinkActorJoinEntrySpotCall {
|
|
|
315
321
|
deadline.close();
|
|
316
322
|
requestMessage.close();
|
|
317
323
|
}
|
|
318
|
-
if (!result.accepted
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
324
|
+
if (!result.accepted ||
|
|
325
|
+
sourceNodeRid === undefined ||
|
|
326
|
+
result.actor === undefined ||
|
|
327
|
+
String(sourceNodeRid) === String(result.actor.nodeRid)) {
|
|
322
328
|
await notifyJoinCompletion(this.actor, operationId, result, this.messageSerializers);
|
|
323
329
|
}
|
|
324
330
|
else {
|