@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,22 +12,12 @@ import {
|
|
|
12
12
|
isZLinkBackendResultError,
|
|
13
13
|
type ZLinkBackendMessageLike as MessageLike
|
|
14
14
|
} from '../backend/runtime-values';
|
|
15
|
-
import type {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} from '../backend/contracts';
|
|
19
|
-
import type {
|
|
20
|
-
ZLinkFrameworkInternalErrorKind as ZLinkFrameworkInternalErrorKindType
|
|
21
|
-
} from '../framework-errors-internal';
|
|
22
|
-
import {
|
|
23
|
-
ZLinkFrameworkException
|
|
24
|
-
} from '../../contracts';
|
|
15
|
+
import type { ZLinkBackendMeshNode, ZLinkBackendSpot } from '../backend/contracts';
|
|
16
|
+
import type { ZLinkFrameworkInternalErrorKind as ZLinkFrameworkInternalErrorKindType } from '../framework-errors-internal';
|
|
17
|
+
import { ZLinkFrameworkException } from '../../contracts';
|
|
25
18
|
import type { ZLinkFanoutListenerStatus } from '../../contracts';
|
|
26
19
|
import type { Message } from '../../contracts/Common/Message';
|
|
27
|
-
import {
|
|
28
|
-
ZLinkSubmitStatus,
|
|
29
|
-
type ZLinkSubmitResult
|
|
30
|
-
} from '../messaging/submission-result';
|
|
20
|
+
import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
31
21
|
import { ZLinkConfigurationException } from '../configuration';
|
|
32
22
|
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
33
23
|
import { ZLinkSpotKind } from '../../contracts/Spots';
|
|
@@ -87,8 +77,7 @@ export interface ZLinkChannelClientTransport {
|
|
|
87
77
|
}
|
|
88
78
|
|
|
89
79
|
export type ZLinkChannelClientTransportSource =
|
|
90
|
-
| ZLinkChannelClientTransport
|
|
91
|
-
| (() => ZLinkChannelClientTransport | undefined);
|
|
80
|
+
ZLinkChannelClientTransport | (() => ZLinkChannelClientTransport | undefined);
|
|
92
81
|
|
|
93
82
|
export interface ZLinkSpotPublisherClientTransport {
|
|
94
83
|
tryPublish(
|
|
@@ -269,13 +258,23 @@ interface ZLinkChannelTransportRuntime {
|
|
|
269
258
|
export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
270
259
|
constructor(
|
|
271
260
|
private readonly manager: () => ZLinkChannelTransportRuntime | undefined,
|
|
272
|
-
private readonly routeChannelPredicate:
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
261
|
+
private readonly routeChannelPredicate:
|
|
262
|
+
((routerChannelId: string) => boolean) | undefined = undefined,
|
|
263
|
+
private readonly meshRuntime:
|
|
264
|
+
| (() =>
|
|
265
|
+
| {
|
|
266
|
+
readonly meshNode: (meshName: string) => ZLinkBackendMeshNode | undefined;
|
|
267
|
+
readonly meshCompletionTable: (
|
|
268
|
+
meshName: string
|
|
269
|
+
) => ZLinkMeshCompletionTable | undefined;
|
|
270
|
+
}
|
|
271
|
+
| undefined)
|
|
272
|
+
| undefined = undefined,
|
|
277
273
|
private readonly codecs?: ZLinkChannelEnvelopeCodecRegistry,
|
|
278
|
-
private readonly manualNodeTarget?: (
|
|
274
|
+
private readonly manualNodeTarget?: (
|
|
275
|
+
meshName: string,
|
|
276
|
+
targetNodeRid: string
|
|
277
|
+
) => boolean | undefined,
|
|
279
278
|
private readonly localNodeSubmit?: (
|
|
280
279
|
meshName: string,
|
|
281
280
|
sourceNodeRid: string,
|
|
@@ -294,9 +293,11 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
294
293
|
}
|
|
295
294
|
|
|
296
295
|
canRoutePacketChannel(routerChannelId: string): boolean {
|
|
297
|
-
return
|
|
298
|
-
|
|
299
|
-
??
|
|
296
|
+
return (
|
|
297
|
+
this.manager()?.canRoutePacketChannel(routerChannelId) ??
|
|
298
|
+
this.routeChannelPredicate?.(routerChannelId) ??
|
|
299
|
+
false
|
|
300
|
+
);
|
|
300
301
|
}
|
|
301
302
|
|
|
302
303
|
async submit(
|
|
@@ -309,15 +310,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
309
310
|
): Promise<ZLinkSubmitResult> {
|
|
310
311
|
// Call-scoped flow (spec 27 §4): the envelope flow pair lives only for
|
|
311
312
|
// the duration of this outbound call, never in the caller's context.
|
|
312
|
-
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
313
|
-
meshName,
|
|
314
|
-
|
|
315
|
-
packetName,
|
|
316
|
-
message,
|
|
317
|
-
signal,
|
|
318
|
-
metadata,
|
|
319
|
-
false
|
|
320
|
-
));
|
|
313
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
314
|
+
this.submitNode(meshName, targetNodeRid, packetName, message, signal, metadata, false)
|
|
315
|
+
);
|
|
321
316
|
}
|
|
322
317
|
|
|
323
318
|
async submitInfrastructure(
|
|
@@ -328,15 +323,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
328
323
|
signal?: AbortSignal,
|
|
329
324
|
metadata?: ReadonlyMap<string, string>
|
|
330
325
|
): Promise<ZLinkSubmitResult> {
|
|
331
|
-
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
332
|
-
meshName,
|
|
333
|
-
|
|
334
|
-
packetName,
|
|
335
|
-
message,
|
|
336
|
-
signal,
|
|
337
|
-
metadata,
|
|
338
|
-
true
|
|
339
|
-
));
|
|
326
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
327
|
+
this.submitNode(meshName, targetNodeRid, packetName, message, signal, metadata, true)
|
|
328
|
+
);
|
|
340
329
|
}
|
|
341
330
|
|
|
342
331
|
private async submitNode(
|
|
@@ -360,8 +349,10 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
360
349
|
);
|
|
361
350
|
}
|
|
362
351
|
throwIfAborted(signal);
|
|
363
|
-
if (
|
|
364
|
-
&&
|
|
352
|
+
if (
|
|
353
|
+
!allowObjectClientTarget &&
|
|
354
|
+
node.isObjectClientNodeDirectTarget?.(toBackendRoutingId(targetNodeRid)) === true
|
|
355
|
+
) {
|
|
365
356
|
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
366
357
|
}
|
|
367
358
|
const parts = this.encodeMessage(
|
|
@@ -376,16 +367,16 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
376
367
|
if (this.isSelfNode(node, targetNodeRid)) {
|
|
377
368
|
return this.submitLocalNode(meshName, String(node.status().routingId), parts);
|
|
378
369
|
}
|
|
379
|
-
if (
|
|
380
|
-
|
|
370
|
+
if (
|
|
371
|
+
!this.isKnownBackendPeer(node, targetNodeRid) &&
|
|
372
|
+
this.manualNodeTarget?.(meshName, targetNodeRid) === false
|
|
373
|
+
) {
|
|
381
374
|
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
382
375
|
}
|
|
383
376
|
try {
|
|
384
|
-
return mapMeshSubmitResult(
|
|
385
|
-
toBackendRoutingId(targetNodeRid),
|
|
386
|
-
|
|
387
|
-
{ flags: 1 }
|
|
388
|
-
));
|
|
377
|
+
return mapMeshSubmitResult(
|
|
378
|
+
await node.sendToNode(toBackendRoutingId(targetNodeRid), parts, { flags: 1 })
|
|
379
|
+
);
|
|
389
380
|
} catch (error) {
|
|
390
381
|
throw mapMeshSubmissionError(error, operation);
|
|
391
382
|
}
|
|
@@ -400,15 +391,17 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
400
391
|
signal?: AbortSignal,
|
|
401
392
|
metadata?: ReadonlyMap<string, string>
|
|
402
393
|
): Promise<TReply> {
|
|
403
|
-
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
394
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
395
|
+
this.requestScoped<TReply>(
|
|
396
|
+
meshName,
|
|
397
|
+
targetNodeRid,
|
|
398
|
+
packetName,
|
|
399
|
+
request,
|
|
400
|
+
timeoutMs,
|
|
401
|
+
signal,
|
|
402
|
+
metadata
|
|
403
|
+
)
|
|
404
|
+
);
|
|
412
405
|
}
|
|
413
406
|
|
|
414
407
|
private async requestScoped<TReply>(
|
|
@@ -452,11 +445,11 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
452
445
|
timeoutMs,
|
|
453
446
|
signal,
|
|
454
447
|
`MeshNode '${meshName}' request to node '${targetNodeRid}'`,
|
|
455
|
-
(remainingTimeoutMs) =>
|
|
456
|
-
toBackendRoutingId(targetNodeRid),
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
448
|
+
(remainingTimeoutMs) =>
|
|
449
|
+
node.requestToNode(toBackendRoutingId(targetNodeRid), parts, {
|
|
450
|
+
flags: 1,
|
|
451
|
+
timeoutMs: remainingTimeoutMs
|
|
452
|
+
})
|
|
460
453
|
);
|
|
461
454
|
return this.decodeMeshReply(meshName, completion);
|
|
462
455
|
}
|
|
@@ -469,14 +462,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
469
462
|
signal?: AbortSignal,
|
|
470
463
|
metadata?: ReadonlyMap<string, string>
|
|
471
464
|
): Promise<ZLinkSubmitResult> {
|
|
472
|
-
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
473
|
-
meshName,
|
|
474
|
-
|
|
475
|
-
packetName,
|
|
476
|
-
message,
|
|
477
|
-
signal,
|
|
478
|
-
metadata
|
|
479
|
-
));
|
|
465
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
466
|
+
this.submitToChannelScoped(meshName, channelName, packetName, message, signal, metadata)
|
|
467
|
+
);
|
|
480
468
|
}
|
|
481
469
|
|
|
482
470
|
private async submitToChannelScoped(
|
|
@@ -499,11 +487,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
499
487
|
);
|
|
500
488
|
const operation = `MeshNode '${meshName}' send to channel '${channelName}'`;
|
|
501
489
|
try {
|
|
502
|
-
const result = mapMeshSubmitResult(
|
|
503
|
-
channelName,
|
|
504
|
-
|
|
505
|
-
{ flags: 1 }
|
|
506
|
-
));
|
|
490
|
+
const result = mapMeshSubmitResult(
|
|
491
|
+
await node.sendToChannel(channelName, parts, { flags: 1 })
|
|
492
|
+
);
|
|
507
493
|
if (result.status === ZLinkSubmitStatus.TargetNotFound) {
|
|
508
494
|
this.metrics?.recordChannelSelectionFailure(meshName, channelName, 'no_ready_target');
|
|
509
495
|
}
|
|
@@ -522,15 +508,17 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
522
508
|
signal?: AbortSignal,
|
|
523
509
|
metadata?: ReadonlyMap<string, string>
|
|
524
510
|
): Promise<TReply> {
|
|
525
|
-
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
511
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
512
|
+
this.requestToChannelScoped<TReply>(
|
|
513
|
+
meshName,
|
|
514
|
+
channelName,
|
|
515
|
+
packetName,
|
|
516
|
+
request,
|
|
517
|
+
timeoutMs,
|
|
518
|
+
signal,
|
|
519
|
+
metadata
|
|
520
|
+
)
|
|
521
|
+
);
|
|
534
522
|
}
|
|
535
523
|
|
|
536
524
|
private async requestToChannelScoped<TReply>(
|
|
@@ -559,11 +547,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
559
547
|
timeoutMs,
|
|
560
548
|
signal,
|
|
561
549
|
`MeshNode '${meshName}' request to channel '${channelName}'`,
|
|
562
|
-
(remainingTimeoutMs) =>
|
|
563
|
-
channelName,
|
|
564
|
-
parts,
|
|
565
|
-
{ flags: 1, timeoutMs: remainingTimeoutMs }
|
|
566
|
-
)
|
|
550
|
+
(remainingTimeoutMs) =>
|
|
551
|
+
node.requestToChannel(channelName, parts, { flags: 1, timeoutMs: remainingTimeoutMs })
|
|
567
552
|
);
|
|
568
553
|
const reply = this.decodeMeshReply<TReply>(meshName, completion);
|
|
569
554
|
metric?.complete('completed');
|
|
@@ -615,9 +600,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
615
600
|
readonly metadata?: ReadonlyMap<string, string>;
|
|
616
601
|
}
|
|
617
602
|
): Promise<ZLinkSubmitResult> {
|
|
618
|
-
return runWithOutboundFlow(
|
|
619
|
-
this.
|
|
620
|
-
() => this.sendToSpotScoped(spotRouteTarget, message, options)
|
|
603
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
604
|
+
this.sendToSpotScoped(spotRouteTarget, message, options)
|
|
621
605
|
);
|
|
622
606
|
}
|
|
623
607
|
|
|
@@ -660,24 +644,30 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
660
644
|
options.metadata
|
|
661
645
|
);
|
|
662
646
|
if (spotRouteTarget.spotKind === ZLinkSpotKind.Instance) {
|
|
663
|
-
return mapMeshSubmitResult(
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
647
|
+
return mapMeshSubmitResult(
|
|
648
|
+
await node.sendToInstanceSpot(
|
|
649
|
+
instanceSpotRouteFence(spotRouteTarget),
|
|
650
|
+
encoded,
|
|
651
|
+
undefined,
|
|
652
|
+
options.metadata
|
|
653
|
+
)
|
|
654
|
+
);
|
|
669
655
|
}
|
|
670
|
-
return mapMeshSubmitResult(
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
656
|
+
return mapMeshSubmitResult(
|
|
657
|
+
await node
|
|
658
|
+
.entrySpot()
|
|
659
|
+
.sendToSpot(
|
|
660
|
+
toBackendRoutingId(spotRouteTarget.targetNodeRid),
|
|
661
|
+
toBackendRoutingId(spotRouteTarget.spotId),
|
|
662
|
+
spotRouteTarget.targetSpotGeneration ?? 0n,
|
|
663
|
+
encoded,
|
|
664
|
+
{
|
|
665
|
+
flags: 1,
|
|
666
|
+
routeFence: directSpotRouteFence(spotRouteTarget),
|
|
667
|
+
entrySpot: spotRouteTarget.spotKind === ZLinkSpotKind.Entry
|
|
668
|
+
}
|
|
669
|
+
)
|
|
670
|
+
);
|
|
681
671
|
} catch (error) {
|
|
682
672
|
throw mapMeshSubmissionError(error, operation);
|
|
683
673
|
}
|
|
@@ -716,9 +706,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
716
706
|
readonly metadata?: ReadonlyMap<string, string>;
|
|
717
707
|
}
|
|
718
708
|
): Promise<TReply> {
|
|
719
|
-
return runWithOutboundFlow(
|
|
720
|
-
this.
|
|
721
|
-
() => this.requestToSpotScoped<TReply>(spotRouteTarget, request, options)
|
|
709
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
710
|
+
this.requestToSpotScoped<TReply>(spotRouteTarget, request, options)
|
|
722
711
|
);
|
|
723
712
|
}
|
|
724
713
|
|
|
@@ -760,27 +749,32 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
760
749
|
options.timeoutMs,
|
|
761
750
|
options.metadata
|
|
762
751
|
);
|
|
763
|
-
completionPromise = this.completionTable(meshName).submit(
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
752
|
+
completionPromise = this.completionTable(meshName).submit(
|
|
753
|
+
() =>
|
|
754
|
+
spotRouteTarget.spotKind === ZLinkSpotKind.Instance
|
|
755
|
+
? node.requestInstanceSpot(
|
|
756
|
+
instanceSpotRouteFence(spotRouteTarget),
|
|
757
|
+
encoded,
|
|
758
|
+
options.timeoutMs,
|
|
759
|
+
undefined,
|
|
760
|
+
options.metadata
|
|
761
|
+
)
|
|
762
|
+
: node
|
|
763
|
+
.entrySpot()
|
|
764
|
+
.requestToSpot(
|
|
765
|
+
toBackendRoutingId(spotRouteTarget.targetNodeRid),
|
|
766
|
+
toBackendRoutingId(spotRouteTarget.spotId),
|
|
767
|
+
spotRouteTarget.targetSpotGeneration ?? 0n,
|
|
768
|
+
encoded,
|
|
769
|
+
{
|
|
770
|
+
flags: 1,
|
|
771
|
+
timeoutMs: options.timeoutMs,
|
|
772
|
+
routeFence: directSpotRouteFence(spotRouteTarget),
|
|
773
|
+
entrySpot: spotRouteTarget.spotKind === ZLinkSpotKind.Entry
|
|
774
|
+
}
|
|
775
|
+
),
|
|
776
|
+
options.signal
|
|
777
|
+
);
|
|
784
778
|
} catch (error) {
|
|
785
779
|
throw mapMeshSubmissionError(
|
|
786
780
|
error,
|
|
@@ -794,7 +788,11 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
794
788
|
sourceSpot: ZLinkBackendSpot,
|
|
795
789
|
spotRouteTarget: ZLinkSpotRouteTarget,
|
|
796
790
|
request: unknown,
|
|
797
|
-
options: {
|
|
791
|
+
options: {
|
|
792
|
+
readonly packetName?: string;
|
|
793
|
+
readonly timeoutMs?: number;
|
|
794
|
+
readonly signal?: AbortSignal;
|
|
795
|
+
}
|
|
798
796
|
): Promise<TReply> {
|
|
799
797
|
return this.requireManager().routeRequestFromSpotToSpot<TReply>(
|
|
800
798
|
sourceSpot,
|
|
@@ -826,9 +824,8 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
826
824
|
request: Message,
|
|
827
825
|
options: { readonly timeoutMs?: number; readonly signal?: AbortSignal }
|
|
828
826
|
): Promise<readonly Message[]> {
|
|
829
|
-
return runWithOutboundFlow(
|
|
830
|
-
this.
|
|
831
|
-
() => this.requestRawToSpotScoped(spotRouteTarget, request, options)
|
|
827
|
+
return runWithOutboundFlow(this.flowCreationEnabled(), () =>
|
|
828
|
+
this.requestRawToSpotScoped(spotRouteTarget, request, options)
|
|
832
829
|
);
|
|
833
830
|
}
|
|
834
831
|
|
|
@@ -842,9 +839,7 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
842
839
|
if (node !== undefined) {
|
|
843
840
|
throwIfAborted(options.signal);
|
|
844
841
|
const payload = JSON.parse(request.getString('utf8')) as Record<string, unknown>;
|
|
845
|
-
const packetName = typeof payload.packetName === 'string'
|
|
846
|
-
? payload.packetName
|
|
847
|
-
: undefined;
|
|
842
|
+
const packetName = typeof payload.packetName === 'string' ? payload.packetName : undefined;
|
|
848
843
|
const parts = this.encodeMessage(
|
|
849
844
|
ZLinkChannelMessageKind.Request,
|
|
850
845
|
meshName,
|
|
@@ -855,18 +850,21 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
855
850
|
let completionPromise: Promise<ZLinkMeshCompletion>;
|
|
856
851
|
try {
|
|
857
852
|
completionPromise = this.completionTable(meshName).submit(
|
|
858
|
-
() =>
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
853
|
+
() =>
|
|
854
|
+
node
|
|
855
|
+
.entrySpot()
|
|
856
|
+
.requestToSpot(
|
|
857
|
+
toBackendRoutingId(spotRouteTarget.targetNodeRid),
|
|
858
|
+
toBackendRoutingId(spotRouteTarget.spotId),
|
|
859
|
+
spotRouteTarget.targetSpotGeneration ?? 0n,
|
|
860
|
+
parts,
|
|
861
|
+
{
|
|
862
|
+
flags: 1,
|
|
863
|
+
timeoutMs: options.timeoutMs,
|
|
864
|
+
routeFence: directSpotRouteFence(spotRouteTarget),
|
|
865
|
+
entrySpot: spotRouteTarget.spotKind === ZLinkSpotKind.Entry
|
|
866
|
+
}
|
|
867
|
+
),
|
|
870
868
|
options.signal
|
|
871
869
|
);
|
|
872
870
|
} catch (error) {
|
|
@@ -909,9 +907,11 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
909
907
|
private meshNode(meshName: string): ZLinkBackendMeshNode | undefined {
|
|
910
908
|
const runtime = this.meshRuntime?.();
|
|
911
909
|
return (
|
|
912
|
-
runtime as unknown as
|
|
913
|
-
|
|
914
|
-
|
|
910
|
+
runtime as unknown as
|
|
911
|
+
| {
|
|
912
|
+
meshNode?: (meshName: string) => ZLinkBackendMeshNode | undefined;
|
|
913
|
+
}
|
|
914
|
+
| undefined
|
|
915
915
|
)?.meshNode?.(meshName);
|
|
916
916
|
}
|
|
917
917
|
|
|
@@ -923,10 +923,16 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
923
923
|
}
|
|
924
924
|
|
|
925
925
|
private isKnownBackendPeer(node: ZLinkBackendMeshNode, targetNodeRid: string): boolean {
|
|
926
|
-
return node
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
926
|
+
return node
|
|
927
|
+
.peers()
|
|
928
|
+
.some(
|
|
929
|
+
(peer) =>
|
|
930
|
+
peer.routingId !== null &&
|
|
931
|
+
routingIdsEqual(
|
|
932
|
+
peer.routingId as unknown as import('../../contracts').RoutingId,
|
|
933
|
+
targetNodeRid
|
|
934
|
+
)
|
|
935
|
+
);
|
|
930
936
|
}
|
|
931
937
|
|
|
932
938
|
private submitLocalNode(
|
|
@@ -951,7 +957,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
951
957
|
private completionTable(meshName: string): ZLinkMeshCompletionTable {
|
|
952
958
|
const table = this.meshRuntime?.()?.meshCompletionTable(meshName);
|
|
953
959
|
if (table === undefined) {
|
|
954
|
-
throw new ZLinkConfigurationException(
|
|
960
|
+
throw new ZLinkConfigurationException(
|
|
961
|
+
`MeshNode '${meshName}' completion runtime is not started.`
|
|
962
|
+
);
|
|
955
963
|
}
|
|
956
964
|
return table;
|
|
957
965
|
}
|
|
@@ -998,7 +1006,9 @@ export class ZLinkRuntimeRouteTransport implements ZLinkRouteClientTransport {
|
|
|
998
1006
|
}
|
|
999
1007
|
}
|
|
1000
1008
|
|
|
1001
|
-
function directSpotRouteFence(
|
|
1009
|
+
function directSpotRouteFence(
|
|
1010
|
+
target: ZLinkSpotRouteTarget
|
|
1011
|
+
): ServiceDirectSpotRouteFence | undefined {
|
|
1002
1012
|
// Entry Spots are addressed by their owning MeshNode. They have no
|
|
1003
1013
|
// Location Store authority row, so only User and Instance Spots carry the
|
|
1004
1014
|
// exact Ready authority fence required by direct Spot submission.
|
|
@@ -1006,12 +1016,12 @@ function directSpotRouteFence(target: ZLinkSpotRouteTarget): ServiceDirectSpotRo
|
|
|
1006
1016
|
return undefined;
|
|
1007
1017
|
}
|
|
1008
1018
|
if (
|
|
1009
|
-
target.targetSpotGeneration === undefined
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1019
|
+
target.targetSpotGeneration === undefined ||
|
|
1020
|
+
target.targetNodeGeneration === undefined ||
|
|
1021
|
+
target.authorityOwnerGeneration === undefined ||
|
|
1022
|
+
target.targetOwnerId === undefined ||
|
|
1023
|
+
target.ownerLeaseGeneration === undefined ||
|
|
1024
|
+
target.authorityStoreVersion === undefined
|
|
1015
1025
|
) {
|
|
1016
1026
|
throw createInternalFrameworkException(
|
|
1017
1027
|
ZLinkFrameworkInternalErrorKind.SpotRouteNotFound,
|
|
@@ -1033,12 +1043,12 @@ function directSpotRouteFence(target: ZLinkSpotRouteTarget): ServiceDirectSpotRo
|
|
|
1033
1043
|
|
|
1034
1044
|
function instanceSpotRouteFence(target: ZLinkSpotRouteTarget): ServiceInstanceRouteFence {
|
|
1035
1045
|
if (
|
|
1036
|
-
target.targetSpotGeneration === undefined
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1046
|
+
target.targetSpotGeneration === undefined ||
|
|
1047
|
+
target.targetNodeGeneration === undefined ||
|
|
1048
|
+
target.authorityOwnerGeneration === undefined ||
|
|
1049
|
+
target.targetOwnerId === undefined ||
|
|
1050
|
+
target.ownerLeaseGeneration === undefined ||
|
|
1051
|
+
target.authorityStoreVersion === undefined
|
|
1042
1052
|
) {
|
|
1043
1053
|
throw createInternalFrameworkException(
|
|
1044
1054
|
ZLinkFrameworkInternalErrorKind.SpotRouteNotFound,
|
|
@@ -1097,10 +1107,11 @@ function mapMeshSubmissionError(error: unknown, operation: string): Error {
|
|
|
1097
1107
|
}
|
|
1098
1108
|
if (isZLinkBackendResultError(error)) {
|
|
1099
1109
|
const notFound = error.result === SubmitResult.NotFound || error.result === 102;
|
|
1100
|
-
const retriable =
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1110
|
+
const retriable =
|
|
1111
|
+
error.result === SubmitResult.Backpressured ||
|
|
1112
|
+
error.result === SubmitResult.NotConnected ||
|
|
1113
|
+
error.result === 109 ||
|
|
1114
|
+
error.result === 113;
|
|
1104
1115
|
return createInternalFrameworkException(
|
|
1105
1116
|
notFound
|
|
1106
1117
|
? ZLinkFrameworkInternalErrorKind.RequestTargetNotFound
|
|
@@ -1120,7 +1131,11 @@ function mapMeshSubmissionError(error: unknown, operation: string): Error {
|
|
|
1120
1131
|
);
|
|
1121
1132
|
}
|
|
1122
1133
|
|
|
1123
|
-
export function meshRequestFailure(
|
|
1134
|
+
export function meshRequestFailure(
|
|
1135
|
+
meshName: string,
|
|
1136
|
+
result: number,
|
|
1137
|
+
nativeErrno: number
|
|
1138
|
+
): ZLinkFrameworkException {
|
|
1124
1139
|
const canonical = isCanonicalWireReplyTerminal(result, nativeErrno);
|
|
1125
1140
|
const wireKind = canonical
|
|
1126
1141
|
? internalFrameworkErrorKindFromWireReply(result, nativeErrno)
|
|
@@ -1135,18 +1150,18 @@ export function meshRequestFailure(meshName: string, result: number, nativeErrno
|
|
|
1135
1150
|
const kind: ZLinkFrameworkInternalErrorKindType = noEligibleMember
|
|
1136
1151
|
? ZLinkFrameworkInternalErrorKind.RouteNotConnected
|
|
1137
1152
|
: !canonical
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1153
|
+
? ZLinkFrameworkInternalErrorKind.RequestProtocolError
|
|
1154
|
+
: result === RequestResult.NotFound
|
|
1155
|
+
? ZLinkFrameworkInternalErrorKind.RequestTargetNotFound
|
|
1156
|
+
: result === RequestResult.TimedOut
|
|
1157
|
+
? ZLinkFrameworkInternalErrorKind.DeadlineExceeded
|
|
1158
|
+
: result === RequestResult.Terminated
|
|
1159
|
+
? ZLinkFrameworkInternalErrorKind.RuntimeShutdown
|
|
1160
|
+
: result === RequestResult.Conflict || result === RequestResult.InternalError
|
|
1161
|
+
? (wireKind ?? ZLinkFrameworkInternalErrorKind.RequestProtocolError)
|
|
1162
|
+
: result === RequestResult.NotConnected || result === RequestResult.Backpressured
|
|
1163
|
+
? ZLinkFrameworkInternalErrorKind.RouteNotConnected
|
|
1164
|
+
: (wireKind ?? ZLinkFrameworkInternalErrorKind.RequestFailed);
|
|
1150
1165
|
const error = createInternalFrameworkException(
|
|
1151
1166
|
kind,
|
|
1152
1167
|
`MeshNode '${meshName}' request failed with result ${result} and errno ${nativeErrno}.`,
|
|
@@ -1165,9 +1180,12 @@ export function meshRequestFailure(meshName: string, result: number, nativeErrno
|
|
|
1165
1180
|
|
|
1166
1181
|
function requestMetricOutcome(error: unknown): string {
|
|
1167
1182
|
if (error instanceof ZLinkFrameworkException) {
|
|
1168
|
-
if (internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RequestTargetNotFound)
|
|
1169
|
-
|
|
1170
|
-
if (internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.
|
|
1183
|
+
if (internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RequestTargetNotFound)
|
|
1184
|
+
return 'target_not_found';
|
|
1185
|
+
if (internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.DeadlineExceeded)
|
|
1186
|
+
return 'timed_out';
|
|
1187
|
+
if (internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RuntimeShutdown)
|
|
1188
|
+
return 'shutdown';
|
|
1171
1189
|
}
|
|
1172
1190
|
return 'failed';
|
|
1173
1191
|
}
|