@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
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ZLinkFrameworkInternalErrorKind,
|
|
3
|
+
createInternalFrameworkException,
|
|
4
|
+
internalFrameworkErrorKind
|
|
5
|
+
} from '../framework-errors-internal';
|
|
2
6
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
3
7
|
import {
|
|
4
8
|
RequestResult,
|
|
@@ -15,10 +19,7 @@ import type {
|
|
|
15
19
|
ZLinkMessageSerializer
|
|
16
20
|
} from '../../contracts';
|
|
17
21
|
import { ZLinkSpotKind } from '../../contracts';
|
|
18
|
-
import {
|
|
19
|
-
ZLinkFrameworkException,
|
|
20
|
-
ZLinkFrameworkErrorKind
|
|
21
|
-
} from '../../contracts';
|
|
22
|
+
import { ZLinkFrameworkException, ZLinkFrameworkErrorKind } from '../../contracts';
|
|
22
23
|
import {
|
|
23
24
|
requireOneWayCompletion,
|
|
24
25
|
throwAlreadySubmitted,
|
|
@@ -82,13 +83,15 @@ export interface ZLinkActorClientOptions {
|
|
|
82
83
|
) => Promise<unknown> | undefined;
|
|
83
84
|
readonly sendErrorReporter?: (error: unknown) => void;
|
|
84
85
|
readonly routeTransport?: ZLinkActorRoutedJoinTransport;
|
|
85
|
-
readonly transportDeliveryGate?: () =>
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
readonly transportDeliveryGate?: () =>
|
|
87
|
+
| {
|
|
88
|
+
waitBeforeSubmit(
|
|
89
|
+
actorId: string,
|
|
90
|
+
kind: 'oneWay' | 'request',
|
|
91
|
+
signal?: AbortSignal
|
|
92
|
+
): Promise<number | void>;
|
|
93
|
+
}
|
|
94
|
+
| undefined;
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
@@ -97,8 +100,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
97
100
|
sendToActor(actorId: string, message: unknown): ZLinkActorSendCall {
|
|
98
101
|
requireActorId(actorId);
|
|
99
102
|
return new DefaultZLinkActorSendCall(
|
|
100
|
-
(packetName, metadata, signal) =>
|
|
101
|
-
this.send(actorId, packetName, message, metadata, signal),
|
|
103
|
+
(packetName, metadata, signal) => this.send(actorId, packetName, message, metadata, signal),
|
|
102
104
|
message
|
|
103
105
|
);
|
|
104
106
|
}
|
|
@@ -127,19 +129,20 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
127
129
|
const route = await this.resolveActorRoute(actorId, signal);
|
|
128
130
|
const { meshName, actorRef: actor } = route;
|
|
129
131
|
this.throwIfKnownStale(meshName, actor);
|
|
130
|
-
const parts = this.createPacketParts(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
const parts = this.createPacketParts(
|
|
133
|
+
ZLinkStreamMessageKind.Send,
|
|
134
|
+
undefined,
|
|
135
|
+
explicitPacketName,
|
|
136
|
+
message,
|
|
137
|
+
metadata
|
|
135
138
|
);
|
|
139
|
+
const messageFollow = createActorMessageFollowContext(route, parts, false);
|
|
136
140
|
const routedActor = attachActorMessageFollowContext(actor, messageFollow);
|
|
137
141
|
try {
|
|
138
|
-
const submissionCopies =
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
) ?? 1;
|
|
142
|
+
const submissionCopies =
|
|
143
|
+
(await this.options
|
|
144
|
+
.transportDeliveryGate?.()
|
|
145
|
+
?.waitBeforeSubmit(actorId, 'oneWay', signal)) ?? 1;
|
|
143
146
|
const handoff = this.options.handoffCapture?.(
|
|
144
147
|
meshName,
|
|
145
148
|
actor.actorId,
|
|
@@ -164,8 +167,8 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
164
167
|
}
|
|
165
168
|
const node = this.requireNode(meshName);
|
|
166
169
|
if (
|
|
167
|
-
this.options.routeTransport !== undefined
|
|
168
|
-
|
|
170
|
+
this.options.routeTransport !== undefined &&
|
|
171
|
+
String(node.status().routingId) !== String(actor.nodeRid)
|
|
169
172
|
) {
|
|
170
173
|
await this.options.routeTransport.sendToSpot(
|
|
171
174
|
remoteActorRouteTarget(route),
|
|
@@ -205,20 +208,17 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
205
208
|
waitPolicy: 'async' | 'yield' = 'async'
|
|
206
209
|
): Promise<TReply> {
|
|
207
210
|
throwIfAborted(signal);
|
|
208
|
-
const sourceSpotId = currentZLinkActorExecution()?.spotId
|
|
209
|
-
?? currentZLinkSpotSerialSourceId();
|
|
211
|
+
const sourceSpotId = currentZLinkActorExecution()?.spotId ?? currentZLinkSpotSerialSourceId();
|
|
210
212
|
const effectiveTimeoutMs = timeoutMs ?? this.options.defaultRequestTimeoutMs;
|
|
211
|
-
const deadlineMs =
|
|
212
|
-
? undefined
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
? undefined
|
|
216
|
-
: Date.now() + effectiveTimeoutMs;
|
|
213
|
+
const deadlineMs =
|
|
214
|
+
effectiveTimeoutMs === undefined ? undefined : performance.now() + effectiveTimeoutMs;
|
|
215
|
+
const deadlineUnixMs =
|
|
216
|
+
effectiveTimeoutMs === undefined ? undefined : Date.now() + effectiveTimeoutMs;
|
|
217
217
|
const route = await this.resolveActorRoute(actorId, signal);
|
|
218
218
|
if (
|
|
219
|
-
waitPolicy === 'async'
|
|
220
|
-
|
|
221
|
-
|
|
219
|
+
waitPolicy === 'async' &&
|
|
220
|
+
sourceSpotId !== undefined &&
|
|
221
|
+
sameSpotRoute(sourceSpotId, route)
|
|
222
222
|
) {
|
|
223
223
|
throw createInternalFrameworkException(
|
|
224
224
|
ZLinkFrameworkInternalErrorKind.InvalidOperation,
|
|
@@ -248,11 +248,10 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
248
248
|
);
|
|
249
249
|
const routedActor = attachActorMessageFollowContext(actor, messageFollow);
|
|
250
250
|
try {
|
|
251
|
-
const submissionCopies =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
) ?? 1;
|
|
251
|
+
const submissionCopies =
|
|
252
|
+
(await this.options
|
|
253
|
+
.transportDeliveryGate?.()
|
|
254
|
+
?.waitBeforeSubmit(actorId, 'request', signal)) ?? 1;
|
|
256
255
|
const handoff = this.options.handoffCapture?.(
|
|
257
256
|
meshName,
|
|
258
257
|
actor.actorId,
|
|
@@ -349,9 +348,11 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
349
348
|
): readonly Message[] {
|
|
350
349
|
const packetName = resolveFrameworkPacketName(message, explicitPacketName, 'Actor');
|
|
351
350
|
const flags =
|
|
352
|
-
(requestSeq === undefined
|
|
353
|
-
|
|
354
|
-
|
|
351
|
+
(requestSeq === undefined
|
|
352
|
+
? ZLinkStreamHeaderFlags.None
|
|
353
|
+
: ZLinkStreamHeaderFlags.HasRequestSeq) |
|
|
354
|
+
(metadata.size === 0 ? ZLinkStreamHeaderFlags.None : ZLinkStreamHeaderFlags.HasMetadata) |
|
|
355
|
+
(correlationId === undefined
|
|
355
356
|
? ZLinkStreamHeaderFlags.None
|
|
356
357
|
: ZLinkStreamHeaderFlags.HasCorrelationId);
|
|
357
358
|
const encoded = encodeFrameworkPayload(
|
|
@@ -390,7 +391,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
390
391
|
const node = this.requireNode(meshName);
|
|
391
392
|
try {
|
|
392
393
|
return mapSubmitResult(
|
|
393
|
-
await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
394
|
+
await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
395
|
+
flags: ZLINK_BACKEND_SEND_NONE
|
|
396
|
+
}),
|
|
394
397
|
'Actor send'
|
|
395
398
|
);
|
|
396
399
|
} catch (error) {
|
|
@@ -414,9 +417,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
414
417
|
): Promise<TReply> {
|
|
415
418
|
const node = this.requireNode(meshName);
|
|
416
419
|
if (
|
|
417
|
-
this.options.routeTransport !== undefined
|
|
418
|
-
|
|
419
|
-
|
|
420
|
+
this.options.routeTransport !== undefined &&
|
|
421
|
+
String(node.status().routingId) !== String(actor.nodeRid) &&
|
|
422
|
+
route !== undefined
|
|
420
423
|
) {
|
|
421
424
|
const relay = encodeRemoteActorPacketRelayPayload({
|
|
422
425
|
actorId: actor.actorId,
|
|
@@ -453,7 +456,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
453
456
|
if (reply.ok !== true) {
|
|
454
457
|
throw createInternalFrameworkException(
|
|
455
458
|
remoteRelayErrorKind(reply.errorKind),
|
|
456
|
-
typeof reply.error === 'string'
|
|
459
|
+
typeof reply.error === 'string'
|
|
460
|
+
? reply.error
|
|
461
|
+
: `Remote Actor request failed for '${actor.actorId}'.`
|
|
457
462
|
);
|
|
458
463
|
}
|
|
459
464
|
return reply.response as TReply;
|
|
@@ -463,16 +468,16 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
463
468
|
throw routeNotConnected('Actor request requires a running MeshNode completion table.');
|
|
464
469
|
}
|
|
465
470
|
const completion = await completions.submit(
|
|
466
|
-
() =>
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
471
|
+
() =>
|
|
472
|
+
node.requestToActor(actor, toMessageLikeParts(parts), {
|
|
473
|
+
flags: ZLINK_BACKEND_SEND_NONE,
|
|
474
|
+
timeoutMs
|
|
475
|
+
}),
|
|
470
476
|
signal
|
|
471
477
|
);
|
|
472
478
|
if (completion.terminalResult !== RequestResult.Ok) {
|
|
473
479
|
closeMeshCompletion(completion);
|
|
474
|
-
throw mapRequestResult(
|
|
475
|
-
completion.terminalResult, completion.failureErrno, 'Actor request');
|
|
480
|
+
throw mapRequestResult(completion.terminalResult, completion.failureErrno, 'Actor request');
|
|
476
481
|
}
|
|
477
482
|
return decodeActorReply<TReply>(
|
|
478
483
|
completion.parts,
|
|
@@ -520,15 +525,18 @@ function createActorMessageFollowContext(
|
|
|
520
525
|
correlationId?: string,
|
|
521
526
|
operationId?: string
|
|
522
527
|
): ZLinkActorMessageFollowContext {
|
|
523
|
-
if (
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
528
|
+
if (
|
|
529
|
+
typeof route.ownerId !== 'string' ||
|
|
530
|
+
route.ownerId.length === 0 ||
|
|
531
|
+
typeof route.ownerLeaseGeneration !== 'bigint' ||
|
|
532
|
+
route.ownerLeaseGeneration <= 0n ||
|
|
533
|
+
typeof route.ownerNodeGeneration !== 'bigint' ||
|
|
534
|
+
route.ownerNodeGeneration <= 0n ||
|
|
535
|
+
typeof route.authorityOwnerGeneration !== 'bigint' ||
|
|
536
|
+
route.authorityOwnerGeneration <= 0n ||
|
|
537
|
+
typeof route.actorRef.objectGeneration !== 'bigint' ||
|
|
538
|
+
route.actorRef.objectGeneration <= 0n
|
|
539
|
+
) {
|
|
532
540
|
throw actorLocationStale(
|
|
533
541
|
route.actorRef.actorId,
|
|
534
542
|
new Error('Resolved Actor route does not contain an exact authority owner fence.')
|
|
@@ -545,12 +553,17 @@ function createActorMessageFollowContext(
|
|
|
545
553
|
}
|
|
546
554
|
|
|
547
555
|
function remoteRelayErrorKind(value: unknown): ZLinkFrameworkInternalErrorKind {
|
|
548
|
-
return Object.values(ZLinkFrameworkInternalErrorKind).includes(
|
|
549
|
-
|
|
556
|
+
return Object.values(ZLinkFrameworkInternalErrorKind).includes(
|
|
557
|
+
value as ZLinkFrameworkInternalErrorKind
|
|
558
|
+
)
|
|
559
|
+
? (value as ZLinkFrameworkInternalErrorKind)
|
|
550
560
|
: ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
551
561
|
}
|
|
552
562
|
|
|
553
|
-
function remainingActorRequestTimeout(
|
|
563
|
+
function remainingActorRequestTimeout(
|
|
564
|
+
actorId: string,
|
|
565
|
+
deadlineMs: number | undefined
|
|
566
|
+
): number | undefined {
|
|
554
567
|
if (deadlineMs === undefined) return undefined;
|
|
555
568
|
const remaining = deadlineMs - performance.now();
|
|
556
569
|
if (remaining <= 0) {
|
|
@@ -573,18 +586,21 @@ async function waitHandoffReply<TReply>(
|
|
|
573
586
|
reply: Promise<unknown>,
|
|
574
587
|
timeoutMs: number | undefined
|
|
575
588
|
): Promise<TReply> {
|
|
576
|
-
if (timeoutMs === undefined) return await reply as TReply;
|
|
589
|
+
if (timeoutMs === undefined) return (await reply) as TReply;
|
|
577
590
|
let deadline: ReturnType<typeof setTimeout> | undefined;
|
|
578
591
|
try {
|
|
579
592
|
return await Promise.race([
|
|
580
593
|
reply as Promise<TReply>,
|
|
581
594
|
new Promise<TReply>((_resolve, reject) => {
|
|
582
595
|
deadline = setTimeout(
|
|
583
|
-
() =>
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
596
|
+
() =>
|
|
597
|
+
reject(
|
|
598
|
+
createInternalFrameworkException(
|
|
599
|
+
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
600
|
+
'Actor handoff request timed out.',
|
|
601
|
+
true
|
|
602
|
+
)
|
|
603
|
+
),
|
|
588
604
|
timeoutMs
|
|
589
605
|
);
|
|
590
606
|
})
|
|
@@ -608,23 +624,27 @@ export async function forwardEncodedActorPacket(
|
|
|
608
624
|
const parts = [header, payload];
|
|
609
625
|
const packetName = decodeStreamHeader(header).name;
|
|
610
626
|
if (!returnResponse) {
|
|
611
|
-
if (
|
|
612
|
-
target,
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
) !== SubmitResult.Ok) {
|
|
627
|
+
if (
|
|
628
|
+
(await node.sendToActor(target, parts, { flags: ZLINK_BACKEND_SEND_NONE })) !==
|
|
629
|
+
SubmitResult.Ok
|
|
630
|
+
) {
|
|
616
631
|
throw routeNotConnected('Actor handoff send submit was not accepted.');
|
|
617
632
|
}
|
|
618
633
|
return undefined;
|
|
619
634
|
}
|
|
620
|
-
const completion = await completions.submit(() =>
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
635
|
+
const completion = await completions.submit(() =>
|
|
636
|
+
node.requestToActor(target, parts, {
|
|
637
|
+
flags: ZLINK_BACKEND_SEND_NONE,
|
|
638
|
+
timeoutMs
|
|
639
|
+
})
|
|
640
|
+
);
|
|
624
641
|
if (completion.terminalResult !== RequestResult.Ok) {
|
|
625
642
|
closeMeshCompletion(completion);
|
|
626
643
|
throw mapRequestResult(
|
|
627
|
-
completion.terminalResult,
|
|
644
|
+
completion.terminalResult,
|
|
645
|
+
completion.failureErrno,
|
|
646
|
+
'Actor handoff request'
|
|
647
|
+
);
|
|
628
648
|
}
|
|
629
649
|
return decodeActorReply(completion.parts, serializers, packetName);
|
|
630
650
|
}
|
|
@@ -752,17 +772,12 @@ class DefaultZLinkActorRequestCall implements ZLinkActorRequestCall {
|
|
|
752
772
|
return turn.yieldPromise(pending);
|
|
753
773
|
}
|
|
754
774
|
|
|
755
|
-
private execute<TReply>(
|
|
756
|
-
waitPolicy: 'async' | 'yield',
|
|
757
|
-
signal?: AbortSignal
|
|
758
|
-
): Promise<TReply> {
|
|
775
|
+
private execute<TReply>(waitPolicy: 'async' | 'yield', signal?: AbortSignal): Promise<TReply> {
|
|
759
776
|
ensureSingleSubmit(this.executed);
|
|
760
777
|
this.rejectSelfActorRequest();
|
|
761
778
|
this.executed = true;
|
|
762
779
|
throwIfAborted(signal);
|
|
763
|
-
const submitter = waitPolicy === 'async'
|
|
764
|
-
? this.asyncSubmitter
|
|
765
|
-
: this.yieldSubmitter;
|
|
780
|
+
const submitter = waitPolicy === 'async' ? this.asyncSubmitter : this.yieldSubmitter;
|
|
766
781
|
return submitter<TReply>(
|
|
767
782
|
this.packet ?? resolveFrameworkPacketName(this.request, undefined, 'Actor'),
|
|
768
783
|
this.timeoutMs ?? this.defaultRequestTimeoutMs,
|
|
@@ -781,13 +796,9 @@ class DefaultZLinkActorRequestCall implements ZLinkActorRequestCall {
|
|
|
781
796
|
}
|
|
782
797
|
}
|
|
783
798
|
|
|
784
|
-
function sameSpotRoute(
|
|
785
|
-
sourceSpotId: unknown,
|
|
786
|
-
route: ZLinkResolvedActorRoute
|
|
787
|
-
): boolean {
|
|
799
|
+
function sameSpotRoute(sourceSpotId: unknown, route: ZLinkResolvedActorRoute): boolean {
|
|
788
800
|
const targetSpotId = route.enclosingSpotRoute?.spotId ?? route.spotId;
|
|
789
|
-
return targetSpotId !== undefined
|
|
790
|
-
&& String(sourceSpotId) === String(targetSpotId);
|
|
801
|
+
return targetSpotId !== undefined && String(sourceSpotId) === String(targetSpotId);
|
|
791
802
|
}
|
|
792
803
|
|
|
793
804
|
function decodeActorReply<TReply>(
|
|
@@ -837,12 +848,13 @@ function decodeActorReplyPayload<TReply>(
|
|
|
837
848
|
readonly kind?: number;
|
|
838
849
|
}>(payload, serializers);
|
|
839
850
|
const wireKind = error.kind;
|
|
840
|
-
const publicKind =
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
851
|
+
const publicKind =
|
|
852
|
+
typeof wireKind === 'number' &&
|
|
853
|
+
Number.isInteger(wireKind) &&
|
|
854
|
+
wireKind >= ZLinkFrameworkErrorKind.NotFound &&
|
|
855
|
+
wireKind <= ZLinkFrameworkErrorKind.InternalFailure
|
|
856
|
+
? (wireKind as ZLinkFrameworkErrorKind)
|
|
857
|
+
: ZLinkFrameworkErrorKind.InternalFailure;
|
|
846
858
|
throw new ZLinkFrameworkException(publicKind, error.message ?? 'Actor request failed.');
|
|
847
859
|
}
|
|
848
860
|
return decodeFrameworkPayloadMessage<TReply>(
|
|
@@ -862,7 +874,10 @@ function mapSubmitError(error: unknown, operationName: string): Error {
|
|
|
862
874
|
if (isZLinkBackendResultError(error)) {
|
|
863
875
|
switch (error.result) {
|
|
864
876
|
case SubmitResult.NotConnected:
|
|
865
|
-
return routeNotConnected(
|
|
877
|
+
return routeNotConnected(
|
|
878
|
+
`${operationName} failed because the target route is not connected.`,
|
|
879
|
+
error
|
|
880
|
+
);
|
|
866
881
|
case SubmitResult.NotFound:
|
|
867
882
|
return createInternalFrameworkException(
|
|
868
883
|
ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
|
|
@@ -919,27 +934,44 @@ function submitted(): ZLinkSubmitResult {
|
|
|
919
934
|
// source-owned queue exhaustion. Backpressure never appears on this reply
|
|
920
935
|
// path. Internal kinds are preserved so the stale-actor re-resolve retry
|
|
921
936
|
// (isStaleActorError) keeps working.
|
|
922
|
-
function actorFailureCodeKind(
|
|
923
|
-
failureErrno: number
|
|
924
|
-
): ZLinkFrameworkInternalErrorKind | undefined {
|
|
937
|
+
function actorFailureCodeKind(failureErrno: number): ZLinkFrameworkInternalErrorKind | undefined {
|
|
925
938
|
switch (failureErrno) {
|
|
926
|
-
case 3:
|
|
927
|
-
|
|
928
|
-
case
|
|
929
|
-
|
|
930
|
-
case
|
|
931
|
-
|
|
939
|
+
case 3:
|
|
940
|
+
return ZLinkFrameworkInternalErrorKind.ActorAlreadyExists;
|
|
941
|
+
case 4:
|
|
942
|
+
return ZLinkFrameworkInternalErrorKind.ActorTypeMismatch;
|
|
943
|
+
case 7:
|
|
944
|
+
return ZLinkFrameworkInternalErrorKind.SpotTypeMismatch;
|
|
945
|
+
case 8:
|
|
946
|
+
return ZLinkFrameworkInternalErrorKind.ActorSessionNotBound;
|
|
947
|
+
case 9:
|
|
948
|
+
case 14:
|
|
949
|
+
return ZLinkFrameworkInternalErrorKind.RequestTargetNotFound;
|
|
950
|
+
case 12:
|
|
951
|
+
case 16:
|
|
952
|
+
return ZLinkFrameworkInternalErrorKind.RequestProtocolError;
|
|
932
953
|
// routeNotConnected(13) and a remote worker queue full(18) are Unavailable.
|
|
933
|
-
case 13:
|
|
934
|
-
case
|
|
935
|
-
|
|
936
|
-
case
|
|
937
|
-
|
|
938
|
-
case
|
|
939
|
-
|
|
940
|
-
case
|
|
941
|
-
|
|
942
|
-
|
|
954
|
+
case 13:
|
|
955
|
+
case 18:
|
|
956
|
+
return ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
957
|
+
case 15:
|
|
958
|
+
return ZLinkFrameworkInternalErrorKind.RequestRejected;
|
|
959
|
+
case 19:
|
|
960
|
+
return ZLinkFrameworkInternalErrorKind.WorkerTimedOut;
|
|
961
|
+
case 17:
|
|
962
|
+
return ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
963
|
+
case 20:
|
|
964
|
+
return ZLinkFrameworkInternalErrorKind.WorkerFailed;
|
|
965
|
+
case 21:
|
|
966
|
+
return ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
967
|
+
case 33:
|
|
968
|
+
return ZLinkFrameworkInternalErrorKind.ActorGenerationStale;
|
|
969
|
+
case 34:
|
|
970
|
+
return ZLinkFrameworkInternalErrorKind.ActorMoving;
|
|
971
|
+
case 35:
|
|
972
|
+
return ZLinkFrameworkInternalErrorKind.RelocationDataLost;
|
|
973
|
+
default:
|
|
974
|
+
return undefined;
|
|
943
975
|
}
|
|
944
976
|
}
|
|
945
977
|
|
|
@@ -967,16 +999,12 @@ function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
|
|
|
967
999
|
}
|
|
968
1000
|
}
|
|
969
1001
|
|
|
970
|
-
function mapRequestResult(
|
|
971
|
-
result: number,
|
|
972
|
-
failureErrno: number,
|
|
973
|
-
operationName: string
|
|
974
|
-
): Error {
|
|
1002
|
+
function mapRequestResult(result: number, failureErrno: number, operationName: string): Error {
|
|
975
1003
|
const kind = actorFailureCodeKind(failureErrno) ?? actorTerminalKind(result);
|
|
976
1004
|
return createInternalFrameworkException(
|
|
977
1005
|
kind,
|
|
978
|
-
`${operationName} failed with request result ${result}`
|
|
979
|
-
|
|
1006
|
+
`${operationName} failed with request result ${result}` +
|
|
1007
|
+
(failureErrno !== 0 ? ` (failure code ${failureErrno}).` : '.')
|
|
980
1008
|
);
|
|
981
1009
|
}
|
|
982
1010
|
|
|
@@ -987,7 +1015,6 @@ function mapRequestError(
|
|
|
987
1015
|
return mapRequestResult(error.result, error.failureErrno ?? 0, operationName);
|
|
988
1016
|
}
|
|
989
1017
|
|
|
990
|
-
|
|
991
1018
|
function routeNotConnected(message: string, cause?: unknown): ZLinkFrameworkException {
|
|
992
1019
|
return createInternalFrameworkException(
|
|
993
1020
|
ZLinkFrameworkInternalErrorKind.RouteNotConnected,
|
|
@@ -998,8 +1025,10 @@ function routeNotConnected(message: string, cause?: unknown): ZLinkFrameworkExce
|
|
|
998
1025
|
}
|
|
999
1026
|
|
|
1000
1027
|
function isStaleActorError(error: unknown): boolean {
|
|
1001
|
-
return
|
|
1002
|
-
|
|
1028
|
+
return (
|
|
1029
|
+
error instanceof ZLinkFrameworkException &&
|
|
1030
|
+
internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.ActorLocationStale
|
|
1031
|
+
);
|
|
1003
1032
|
}
|
|
1004
1033
|
|
|
1005
1034
|
function actorLocationStale(actorId: string, cause: unknown): ZLinkFrameworkException {
|