@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
|
@@ -18,9 +18,7 @@ class DefaultZLinkSpotHandlerRegistry {
|
|
|
18
18
|
if (metadata === undefined || resolvedPacketName === undefined) {
|
|
19
19
|
throw new configuration_1.ZLinkConfigurationException(`Actor packet handler '${handlerType.name}' must declare a packet name.`);
|
|
20
20
|
}
|
|
21
|
-
return this.addActorPacketRegistration(metadata.kind === 'spotActorSend'
|
|
22
|
-
? actors_1.ZLinkActorPacketKind.Send
|
|
23
|
-
: actors_1.ZLinkActorPacketKind.Request, handlerType, Object, resolvedPacketName);
|
|
21
|
+
return this.addActorPacketRegistration(metadata.kind === 'spotActorSend' ? actors_1.ZLinkActorPacketKind.Send : actors_1.ZLinkActorPacketKind.Request, handlerType, Object, resolvedPacketName);
|
|
24
22
|
}
|
|
25
23
|
addActorPacket(handlerType, actorType) {
|
|
26
24
|
const metadata = (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType).find((entry) => entry.kind === 'spotActorSend' || entry.kind === 'spotActorRequest');
|
|
@@ -30,9 +28,12 @@ class DefaultZLinkSpotHandlerRegistry {
|
|
|
30
28
|
return this.addActorPacketRegistration(metadata.kind === 'spotActorSend' ? actors_1.ZLinkActorPacketKind.Send : actors_1.ZLinkActorPacketKind.Request, handlerType, actorType, metadata.packetName);
|
|
31
29
|
}
|
|
32
30
|
addPacket(handlerType, packetName) {
|
|
33
|
-
const declared = (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType)
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
const declared = (0, Attributes_1.readZLinkDecoratorMetadata)(handlerType).find((entry) => entry.kind === 'packet')?.packetName;
|
|
32
|
+
this.entries.push({
|
|
33
|
+
kind: 'packet',
|
|
34
|
+
handlerType,
|
|
35
|
+
packetName: packetName ?? declared ?? handlerType.name
|
|
36
|
+
});
|
|
36
37
|
return this;
|
|
37
38
|
}
|
|
38
39
|
packet(packetName, handlerType) {
|
|
@@ -66,10 +67,10 @@ class DefaultZLinkSpotHandlerRegistry {
|
|
|
66
67
|
if (topic.trim().length === 0) {
|
|
67
68
|
throw new configuration_1.ZLinkConfigurationException('SPOT subscribe topic must not be empty.');
|
|
68
69
|
}
|
|
69
|
-
if (this.entries.some((entry) => entry.kind === 'subscribe'
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
if (this.entries.some((entry) => entry.kind === 'subscribe' &&
|
|
71
|
+
entry.handlerType === handlerType &&
|
|
72
|
+
entry.channelName === channelName &&
|
|
73
|
+
entry.topic === topic)) {
|
|
73
74
|
return this;
|
|
74
75
|
}
|
|
75
76
|
this.entries.push({ kind: 'subscribe', handlerType, channelName, topic });
|
|
@@ -150,6 +151,5 @@ function applySpotHandlerRegistrations(registry, spotType, registrations) {
|
|
|
150
151
|
}
|
|
151
152
|
}
|
|
152
153
|
function isSpotImplementation(registeredType, implementation) {
|
|
153
|
-
return registeredType === implementation
|
|
154
|
-
|| implementation.prototype instanceof registeredType;
|
|
154
|
+
return registeredType === implementation || implementation.prototype instanceof registeredType;
|
|
155
155
|
}
|
|
@@ -38,8 +38,8 @@ class ZLinkPublicSpotManager {
|
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
catch (error) {
|
|
41
|
-
if (error instanceof contracts_1.ZLinkFrameworkException
|
|
42
|
-
|
|
41
|
+
if (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
42
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotRouteNotFound) {
|
|
43
43
|
return undefined;
|
|
44
44
|
}
|
|
45
45
|
throw error;
|
|
@@ -74,8 +74,7 @@ class ZLinkPublicSpotManager {
|
|
|
74
74
|
},
|
|
75
75
|
deadlineUnixMs: BigInt(Date.now() + timeoutMs)
|
|
76
76
|
}, timeoutMs);
|
|
77
|
-
if (result.terminalResult !== 0
|
|
78
|
-
|| result.tail?.kind !== 'userSpotClose') {
|
|
77
|
+
if (result.terminalResult !== 0 || result.tail?.kind !== 'userSpotClose') {
|
|
79
78
|
const message = `Remote User Spot close failed. terminalResult=${result.terminalResult}, failureCode=${result.failureCode}.`;
|
|
80
79
|
// Route the close terminal through the shared ownership-aware translator
|
|
81
80
|
// (spec 32-framework-error-model:81-118, 99-108) instead of an ad-hoc
|
|
@@ -170,8 +169,8 @@ class ZLinkPublicSpotManager {
|
|
|
170
169
|
throw error;
|
|
171
170
|
}
|
|
172
171
|
}, async (cleanupSignal) => {
|
|
173
|
-
const meshName = state.meshName ??
|
|
174
|
-
.find(([, byType]) => byType.has(stableType))?.[0];
|
|
172
|
+
const meshName = state.meshName ??
|
|
173
|
+
[...this.options.factories].find(([, byType]) => byType.has(stableType))?.[0];
|
|
175
174
|
if (meshName !== undefined) {
|
|
176
175
|
await this.options.local.close(meshName, spotId, cleanupSignal);
|
|
177
176
|
}
|
|
@@ -29,9 +29,10 @@ class ZLinkSpotNativeActorJoinAdmission {
|
|
|
29
29
|
? { accepted: this.options.defaultAccept }
|
|
30
30
|
: target.onActorJoin(actorId, joinPayload));
|
|
31
31
|
accepted = response.accepted;
|
|
32
|
-
reply =
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
reply =
|
|
33
|
+
response.reply === undefined
|
|
34
|
+
? undefined
|
|
35
|
+
: (0, payload_codec_1.encodeFrameworkPayloadMessage)(response.reply, this.options.messageSerializers);
|
|
35
36
|
if (accepted) {
|
|
36
37
|
acceptedActor = actor;
|
|
37
38
|
}
|
|
@@ -42,8 +42,7 @@ function spotNodeAutoConnectCapability(spotNodeName, spotNode, node) {
|
|
|
42
42
|
nodeRid: String(status.routingId),
|
|
43
43
|
endpoint,
|
|
44
44
|
objectRole: spotNode.objectRole ?? 'none',
|
|
45
|
-
hasRouteMeshServerChannel: Object.values(spotNode.meshChannels ?? {})
|
|
46
|
-
.some((channel) => channel.server === true)
|
|
45
|
+
hasRouteMeshServerChannel: Object.values(spotNode.meshChannels ?? {}).some((channel) => channel.server === true)
|
|
47
46
|
};
|
|
48
47
|
const manualConnections = hasManualRouterConnections(spotNode);
|
|
49
48
|
return {
|
|
@@ -54,11 +53,10 @@ function spotNodeAutoConnectCapability(spotNodeName, spotNode, node) {
|
|
|
54
53
|
function meshDescriptorPeerResolver(runtime) {
|
|
55
54
|
return {
|
|
56
55
|
async listLivePeers(filter, signal) {
|
|
57
|
-
if (filter.meshName === undefined
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
&& filter.role !== contracts_1.ZLinkLocationRole.Router)) {
|
|
56
|
+
if (filter.meshName === undefined ||
|
|
57
|
+
(filter.autoConnectType !== undefined &&
|
|
58
|
+
filter.autoConnectType !== Values_1.ZLinkLocationAutoConnectType.RouteMesh) ||
|
|
59
|
+
(filter.role !== undefined && filter.role !== contracts_1.ZLinkLocationRole.Router)) {
|
|
62
60
|
return [];
|
|
63
61
|
}
|
|
64
62
|
const descriptors = await runtime.listLiveMeshNodes(filter.meshName, signal);
|
|
@@ -82,14 +80,14 @@ function meshDescriptorPeerResolver(runtime) {
|
|
|
82
80
|
securityIdentity: descriptor.securityIdentity
|
|
83
81
|
}
|
|
84
82
|
}))
|
|
85
|
-
.filter(peer => (filter.nodeRid === undefined || String(peer.nodeRid) === String(filter.nodeRid))
|
|
86
|
-
|
|
83
|
+
.filter((peer) => (filter.nodeRid === undefined || String(peer.nodeRid) === String(filter.nodeRid)) &&
|
|
84
|
+
(filter.endpoint === undefined || peer.endpoint === filter.endpoint));
|
|
87
85
|
}
|
|
88
86
|
};
|
|
89
87
|
}
|
|
90
88
|
function hasManualRouterConnections(spotNode) {
|
|
91
|
-
return (spotNode.router?.manualConnections?.length ?? 0) > 0
|
|
92
|
-
|
|
89
|
+
return ((spotNode.router?.manualConnections?.length ?? 0) > 0 ||
|
|
90
|
+
(spotNode.router?.manualPeerConnections?.length ?? 0) > 0);
|
|
93
91
|
}
|
|
94
92
|
const detachedSpotNodeAutoConnectResource = new node_async_hooks_1.AsyncResource('zlink:spot-node-autoconnect');
|
|
95
93
|
class ZLinkSpotNodeAutoConnectExecutor {
|
|
@@ -129,8 +127,7 @@ class ZLinkSpotNodeAutoConnectExecutor {
|
|
|
129
127
|
if (peer.routingId === null)
|
|
130
128
|
continue;
|
|
131
129
|
const target = current.get(String(peer.routingId));
|
|
132
|
-
if (target !== undefined
|
|
133
|
-
&& peer.endpoint === target.endpoint) {
|
|
130
|
+
if (target !== undefined && peer.endpoint === target.endpoint) {
|
|
134
131
|
continue;
|
|
135
132
|
}
|
|
136
133
|
this.node.disconnectPeer(peer.routingId, peer.lifecycleGeneration);
|
|
@@ -142,7 +139,9 @@ class ZLinkSpotNodeAutoConnectExecutor {
|
|
|
142
139
|
// it can treat the automatic route as disconnected.
|
|
143
140
|
if (this.connectionIntents.has(connectionKey(target)))
|
|
144
141
|
return false;
|
|
145
|
-
return !this.node
|
|
142
|
+
return !this.node
|
|
143
|
+
.peers()
|
|
144
|
+
.some((peer) => peer.routingId !== null &&
|
|
146
145
|
peer.endpoint === target.endpoint &&
|
|
147
146
|
(target.nodeRid === undefined || String(peer.routingId) === String(target.nodeRid)) &&
|
|
148
147
|
peer.lifecycleGeneration === target.lifecycleGeneration &&
|
|
@@ -151,7 +150,7 @@ class ZLinkSpotNodeAutoConnectExecutor {
|
|
|
151
150
|
replaceNotRequired(targets) {
|
|
152
151
|
this.node.replaceDiscoveredNotRequiredPeers?.(targets
|
|
153
152
|
.filter((target) => target.nodeRid !== undefined)
|
|
154
|
-
.map(target => ({
|
|
153
|
+
.map((target) => ({
|
|
155
154
|
nodeRoutingId: String(target.nodeRid),
|
|
156
155
|
lifecycleGeneration: target.lifecycleGeneration,
|
|
157
156
|
descriptorRevision: target.descriptorRevision ?? 1n,
|
|
@@ -181,9 +180,7 @@ class ZLinkSpotNodeAutoConnectExecutor {
|
|
|
181
180
|
try {
|
|
182
181
|
const connectionIntentId = await this.node.connectPeer({
|
|
183
182
|
endpoint: target.endpoint,
|
|
184
|
-
expectedRid: target.nodeRid === undefined
|
|
185
|
-
? undefined
|
|
186
|
-
: (0, routing_id_1.toBackendRoutingId)(target.nodeRid),
|
|
183
|
+
expectedRid: target.nodeRid === undefined ? undefined : (0, routing_id_1.toBackendRoutingId)(target.nodeRid),
|
|
187
184
|
expectedSecurityIdentity: toAdmissionSecurityIdentity(target.metadata?.securityIdentity),
|
|
188
185
|
expectedLifecycleGeneration: target.lifecycleGeneration
|
|
189
186
|
});
|
|
@@ -51,8 +51,9 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
51
51
|
applicationJobQueue;
|
|
52
52
|
constructor(options) {
|
|
53
53
|
this.options = options;
|
|
54
|
-
this.applicationJobQueue =
|
|
55
|
-
|
|
54
|
+
this.applicationJobQueue =
|
|
55
|
+
options.applicationJobQueue ??
|
|
56
|
+
new application_job_queue_1.ApplicationJobQueue((0, application_job_queue_1.resolveApplicationJobQueueConfiguration)());
|
|
56
57
|
}
|
|
57
58
|
createReceived() {
|
|
58
59
|
return this.options.backendAdapterFactory.createReceived();
|
|
@@ -126,10 +127,10 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
126
127
|
}
|
|
127
128
|
const meshAdapter = this.options.backendAdapterFactory.createMeshAdapter();
|
|
128
129
|
for (const [spotNodeName, spotNode] of this.options.registration.spotNodes.entries()) {
|
|
129
|
-
const routingId = spotNode.routingId
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
const routingId = spotNode.routingId ??
|
|
131
|
+
spotNode.router?.routingId ??
|
|
132
|
+
spotNode.pubSub?.routingId ??
|
|
133
|
+
`${spotNode.routingIdPrefix ?? spotNodeName}-${(0, node_crypto_1.randomUUID)()}`;
|
|
133
134
|
const bind = spotNode.router?.bind;
|
|
134
135
|
if (bind === undefined) {
|
|
135
136
|
throw new configuration_1.ZLinkConfigurationException(`MeshNode '${spotNodeName}' requires a routing id and ROUTER bind endpoint.`);
|
|
@@ -161,8 +162,8 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
161
162
|
: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
|
|
162
163
|
channelName: spotNodeName,
|
|
163
164
|
sourceRid: record.sourceNodeRid,
|
|
164
|
-
error: new Error(`MeshNode '${spotNodeName}' rejected an invalid service wire record from '${record.sourceNodeRid}'`
|
|
165
|
-
|
|
165
|
+
error: new Error(`MeshNode '${spotNodeName}' rejected an invalid service wire record from '${record.sourceNodeRid}'` +
|
|
166
|
+
(record.command === undefined ? '.' : ` (command ${record.command}).`))
|
|
166
167
|
}));
|
|
167
168
|
let pump;
|
|
168
169
|
const completions = new mesh_completion_table_1.ZLinkMeshCompletionTable();
|
|
@@ -177,20 +178,19 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
177
178
|
...Object.keys(spotNode.actorFactoryRegistrations ?? {})
|
|
178
179
|
];
|
|
179
180
|
const instanceSpotTypes = Object.keys(spotNode.instanceSpotFactoryRegistrations ?? {});
|
|
180
|
-
const hasLegacyObjectFactories = (spotNode.spotFactories?.length ?? 0) > 0
|
|
181
|
-
|
|
182
|
-
|
|
181
|
+
const hasLegacyObjectFactories = (spotNode.spotFactories?.length ?? 0) > 0 ||
|
|
182
|
+
Object.keys(spotNode.instanceSpotFactories ?? {}).length > 0 ||
|
|
183
|
+
(spotNode.actorFactories instanceof Map
|
|
183
184
|
? spotNode.actorFactories.size
|
|
184
185
|
: Object.keys(spotNode.actorFactories ?? {}).length) > 0;
|
|
185
186
|
node.configureObjectPlacement({
|
|
186
|
-
role: spotNode.objectRole
|
|
187
|
-
?? (hasLegacyObjectFactories ? 'server' : 'none'),
|
|
187
|
+
role: spotNode.objectRole ?? (hasLegacyObjectFactories ? 'server' : 'none'),
|
|
188
188
|
placementWeight: spotNode.placementWeight ?? 100,
|
|
189
189
|
activeCapacityLimit: aggregatePlacementCapacity(spotNode.actorLimit ?? 0, spotNode.spotLimit ?? 0),
|
|
190
190
|
pendingCapacityLimit: spotNode.activationConcurrencyLimit ?? 128,
|
|
191
191
|
objectCapabilities: [
|
|
192
|
-
...stableTypes.map(type => `object-type:${type}`),
|
|
193
|
-
...instanceSpotTypes.map(type => `instance-spot-type:${type}`)
|
|
192
|
+
...stableTypes.map((type) => `object-type:${type}`),
|
|
193
|
+
...instanceSpotTypes.map((type) => `instance-spot-type:${type}`)
|
|
194
194
|
],
|
|
195
195
|
...(this.options.registration.maintenanceWave === undefined
|
|
196
196
|
? {}
|
|
@@ -251,7 +251,9 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
251
251
|
async publishMeshNodeState(state, signal, selectedMeshName) {
|
|
252
252
|
const previous = this.statePublication;
|
|
253
253
|
let release;
|
|
254
|
-
this.statePublication = new Promise((resolve) => {
|
|
254
|
+
this.statePublication = new Promise((resolve) => {
|
|
255
|
+
release = resolve;
|
|
256
|
+
});
|
|
255
257
|
await previous;
|
|
256
258
|
try {
|
|
257
259
|
await this.publishMeshNodeStateCore(state, signal, selectedMeshName);
|
|
@@ -265,8 +267,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
265
267
|
const owner = location?.runtime.currentOwnerToken;
|
|
266
268
|
if (location === undefined || owner === undefined)
|
|
267
269
|
return;
|
|
268
|
-
const ownerChanged = this.publishedOwnerToken !== undefined
|
|
269
|
-
&& !sameOwnerToken(this.publishedOwnerToken, owner);
|
|
270
|
+
const ownerChanged = this.publishedOwnerToken !== undefined && !sameOwnerToken(this.publishedOwnerToken, owner);
|
|
270
271
|
if (ownerChanged) {
|
|
271
272
|
// A new owner token can refer to an empty or replaced Store. The cached
|
|
272
273
|
// descriptor was written under the previous lease and must not force a
|
|
@@ -289,9 +290,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
289
290
|
...actors.map(([stableType, factory]) => objectCapability('actor', stableType, factory))
|
|
290
291
|
].sort((left, right) => {
|
|
291
292
|
const kindOrder = left.objectKind.localeCompare(right.objectKind);
|
|
292
|
-
return kindOrder !== 0
|
|
293
|
-
? kindOrder
|
|
294
|
-
: left.stableType.localeCompare(right.stableType);
|
|
293
|
+
return kindOrder !== 0 ? kindOrder : left.stableType.localeCompare(right.stableType);
|
|
295
294
|
});
|
|
296
295
|
const current = this.publishedMeshNodeDescriptors.get(meshName);
|
|
297
296
|
const previousRevision = this.descriptorRevisionByMesh.get(meshName) ?? 0n;
|
|
@@ -318,10 +317,10 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
318
317
|
limit: registration.spotLimit ?? 0
|
|
319
318
|
},
|
|
320
319
|
spotTypes: capabilities
|
|
321
|
-
.filter(capability => capability.objectKind !== 'actor')
|
|
322
|
-
.map(capability => {
|
|
323
|
-
const previous = current?.populationCapacity.spotTypes.find(candidate => candidate.objectKind === capability.objectKind
|
|
324
|
-
|
|
320
|
+
.filter((capability) => capability.objectKind !== 'actor')
|
|
321
|
+
.map((capability) => {
|
|
322
|
+
const previous = current?.populationCapacity.spotTypes.find((candidate) => candidate.objectKind === capability.objectKind &&
|
|
323
|
+
candidate.stableType === capability.stableType);
|
|
325
324
|
return {
|
|
326
325
|
objectKind: capability.objectKind,
|
|
327
326
|
stableType: capability.stableType,
|
|
@@ -332,15 +331,14 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
332
331
|
})
|
|
333
332
|
},
|
|
334
333
|
activationConcurrency: {
|
|
335
|
-
active: this.options.instanceActivationConcurrencyProvider?.(meshName).active
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
limit: this.options.instanceActivationConcurrencyProvider?.(meshName).limit
|
|
339
|
-
|
|
340
|
-
|
|
334
|
+
active: this.options.instanceActivationConcurrencyProvider?.(meshName).active ??
|
|
335
|
+
current?.activationConcurrency.active ??
|
|
336
|
+
0,
|
|
337
|
+
limit: this.options.instanceActivationConcurrencyProvider?.(meshName).limit ??
|
|
338
|
+
registration.activationConcurrencyLimit ??
|
|
339
|
+
128
|
|
341
340
|
},
|
|
342
|
-
channelWeights: Object.fromEntries(this.serverChannels(meshName)
|
|
343
|
-
.map(([channelName, channel]) => [
|
|
341
|
+
channelWeights: Object.fromEntries(this.serverChannels(meshName).map(([channelName, channel]) => [
|
|
344
342
|
channelName,
|
|
345
343
|
state === contracts_1.ZLinkFrameworkRuntimeState.Draining
|
|
346
344
|
? 0
|
|
@@ -351,14 +349,11 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
351
349
|
spotTypes: [
|
|
352
350
|
...userSpots.map(([stableType]) => stableType),
|
|
353
351
|
...instanceSpots.map(([stableType]) => stableType),
|
|
354
|
-
...(registration.entrySpotType === undefined
|
|
355
|
-
|
|
356
|
-
: [registration.entrySpotType.name])
|
|
357
|
-
]
|
|
358
|
-
.sort(),
|
|
352
|
+
...(registration.entrySpotType === undefined ? [] : [registration.entrySpotType.name])
|
|
353
|
+
].sort(),
|
|
359
354
|
objectCapabilities: capabilities,
|
|
360
355
|
state,
|
|
361
|
-
securityIdentity: 'default'
|
|
356
|
+
securityIdentity: 'default'
|
|
362
357
|
};
|
|
363
358
|
const result = await location.runtime.writeMeshNode(descriptor, ownerChanged
|
|
364
359
|
? Locations_1.ZLinkLocationWriteIntent.Renew
|
|
@@ -387,11 +382,10 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
387
382
|
const owner = location.runtime.currentOwnerToken;
|
|
388
383
|
if (owner === undefined)
|
|
389
384
|
return;
|
|
390
|
-
const current = (await location.runtime.listLiveMeshNodes(meshName, signal))
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
&& descriptor.leaseGeneration === owner.leaseGeneration);
|
|
385
|
+
const current = (await location.runtime.listLiveMeshNodes(meshName, signal)).find((descriptor) => String(descriptor.rid) === String(status.routingId) &&
|
|
386
|
+
descriptor.lifecycleGeneration === status.lifecycleGeneration &&
|
|
387
|
+
descriptor.ownerId === owner.ownerId &&
|
|
388
|
+
descriptor.leaseGeneration === owner.leaseGeneration);
|
|
395
389
|
if (current !== undefined) {
|
|
396
390
|
this.publishedMeshNodeDescriptors.set(meshName, current);
|
|
397
391
|
this.descriptorRevisionByMesh.set(meshName, maxBigInt(this.descriptorRevisionByMesh.get(meshName) ?? 0n, current.descriptorRevision));
|
|
@@ -429,9 +423,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
429
423
|
}
|
|
430
424
|
entrySpotIdForMesh(meshName) {
|
|
431
425
|
const registration = this.options.registration.spotNodes.get(meshName);
|
|
432
|
-
return registration === undefined
|
|
433
|
-
? undefined
|
|
434
|
-
: this.entrySpotId(meshName, registration);
|
|
426
|
+
return registration === undefined ? undefined : this.entrySpotId(meshName, registration);
|
|
435
427
|
}
|
|
436
428
|
meshNodeDescriptor(meshName) {
|
|
437
429
|
return this.publishedMeshNodeDescriptors.get(meshName);
|
|
@@ -441,9 +433,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
441
433
|
if (registration === undefined) {
|
|
442
434
|
throw new configuration_1.ZLinkConfigurationException(`Mesh '${meshName}' is not registered.`);
|
|
443
435
|
}
|
|
444
|
-
return this.runtimePlacementWeights.get(meshName)
|
|
445
|
-
?? registration.placementWeight
|
|
446
|
-
?? 100;
|
|
436
|
+
return this.runtimePlacementWeights.get(meshName) ?? registration.placementWeight ?? 100;
|
|
447
437
|
}
|
|
448
438
|
channelWeight(channelName) {
|
|
449
439
|
const match = this.resolveChannel(channelName);
|
|
@@ -496,12 +486,9 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
496
486
|
return this.runtimeChannelWeights.get(meshName)?.get(channelName) ?? configuredWeight;
|
|
497
487
|
}
|
|
498
488
|
resolveChannel(channelName) {
|
|
499
|
-
const matches = [...this.options.registration.spotNodes]
|
|
500
|
-
.flatMap(([meshName, registration]) => {
|
|
489
|
+
const matches = [...this.options.registration.spotNodes].flatMap(([meshName, registration]) => {
|
|
501
490
|
const channel = registration.meshChannels?.[channelName];
|
|
502
|
-
return channel === undefined
|
|
503
|
-
? []
|
|
504
|
-
: [{ meshName, configuredWeight: channel.weight ?? 100 }];
|
|
491
|
+
return channel === undefined ? [] : [{ meshName, configuredWeight: channel.weight ?? 100 }];
|
|
505
492
|
});
|
|
506
493
|
if (matches.length === 0) {
|
|
507
494
|
throw new configuration_1.ZLinkConfigurationException(`RouteMesh channel '${channelName}' is not registered.`);
|
|
@@ -512,10 +499,12 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
512
499
|
return matches[0];
|
|
513
500
|
}
|
|
514
501
|
scheduleRuntimeWeightPublication(meshName, applyWeight) {
|
|
515
|
-
const publish = this.runtimeWeightPublication
|
|
502
|
+
const publish = this.runtimeWeightPublication
|
|
503
|
+
.catch(() => undefined)
|
|
504
|
+
.then(async () => {
|
|
516
505
|
await applyWeight();
|
|
517
|
-
const state = this.publishedMeshNodeDescriptors.get(meshName)?.state
|
|
518
|
-
|
|
506
|
+
const state = this.publishedMeshNodeDescriptors.get(meshName)?.state ??
|
|
507
|
+
contracts_1.ZLinkFrameworkRuntimeState.Serving;
|
|
519
508
|
await this.publishMeshNodeState(state, undefined, meshName);
|
|
520
509
|
});
|
|
521
510
|
this.runtimeWeightPublication = publish;
|
|
@@ -551,7 +540,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
551
540
|
}
|
|
552
541
|
notifyPrimaryEntrySpotActorLeft(actor, signal, actorRef, membershipEpoch) {
|
|
553
542
|
const activation = this.primaryEntryActivation();
|
|
554
|
-
return activation?.notifyLeaveActor(actor, signal, actorRef, membershipEpoch) ?? Promise.resolve();
|
|
543
|
+
return (activation?.notifyLeaveActor(actor, signal, actorRef, membershipEpoch) ?? Promise.resolve());
|
|
555
544
|
}
|
|
556
545
|
notifyPrimaryEntrySpotActorDisconnected(actor, signal) {
|
|
557
546
|
const activation = this.primaryEntryActivation();
|
|
@@ -562,8 +551,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
562
551
|
await this.entryActivations.get(meshName)?.notifyDisconnectActor(actor, signal);
|
|
563
552
|
}
|
|
564
553
|
serverChannels(meshName) {
|
|
565
|
-
return Object.entries(this.options.registration.spotNodes.get(meshName)?.meshChannels ?? {})
|
|
566
|
-
.filter(([, channel]) => channel.server === true);
|
|
554
|
+
return Object.entries(this.options.registration.spotNodes.get(meshName)?.meshChannels ?? {}).filter(([, channel]) => channel.server === true);
|
|
567
555
|
}
|
|
568
556
|
async dispose(signal, deadline) {
|
|
569
557
|
this.disposed = true;
|
|
@@ -614,13 +602,15 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
614
602
|
return;
|
|
615
603
|
}
|
|
616
604
|
const node = this.meshNodes.get(meshName);
|
|
617
|
-
const targetsEntrySpot = owner.spotId === null
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
605
|
+
const targetsEntrySpot = owner.spotId === null ||
|
|
606
|
+
(node !== undefined &&
|
|
607
|
+
(0, routing_id_1.routingIdsEqual)(owner.spotId, String(node.status().routingId)));
|
|
608
|
+
if (targetsEntrySpot &&
|
|
609
|
+
(record.kind === service_runtime_contracts_1.ReceiveKind.ActorSend ||
|
|
610
|
+
record.kind === service_runtime_contracts_1.ReceiveKind.ActorRequest ||
|
|
611
|
+
record.kind === service_runtime_contracts_1.ReceiveKind.SpotSend ||
|
|
612
|
+
record.kind === service_runtime_contracts_1.ReceiveKind.SpotRequest ||
|
|
613
|
+
record.kind === service_runtime_contracts_1.ReceiveKind.SpotMulticast)) {
|
|
624
614
|
await this.ensureEntryActivation(meshName);
|
|
625
615
|
}
|
|
626
616
|
const dispatcher = this.options.meshRecordDispatcher;
|
|
@@ -630,16 +620,14 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
630
620
|
await dispatcher(meshName, owner, record);
|
|
631
621
|
}
|
|
632
622
|
async dispatchEntrySpotRecord(meshName, owner, record) {
|
|
633
|
-
if (record.kind !== service_runtime_contracts_1.ReceiveKind.SpotSend
|
|
634
|
-
|
|
635
|
-
|
|
623
|
+
if (record.kind !== service_runtime_contracts_1.ReceiveKind.SpotSend &&
|
|
624
|
+
record.kind !== service_runtime_contracts_1.ReceiveKind.SpotRequest &&
|
|
625
|
+
record.kind !== service_runtime_contracts_1.ReceiveKind.SpotMulticast) {
|
|
636
626
|
return false;
|
|
637
627
|
}
|
|
638
628
|
await this.ensureEntryActivation(meshName);
|
|
639
629
|
const activation = this.entryActivations.get(meshName);
|
|
640
|
-
if (activation === undefined
|
|
641
|
-
|| owner.spotId === null
|
|
642
|
-
|| activation.spotId !== owner.spotId) {
|
|
630
|
+
if (activation === undefined || owner.spotId === null || activation.spotId !== owner.spotId) {
|
|
643
631
|
return false;
|
|
644
632
|
}
|
|
645
633
|
if (record.kind === service_runtime_contracts_1.ReceiveKind.SpotMulticast) {
|
|
@@ -752,7 +740,12 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
752
740
|
if (activation === undefined) {
|
|
753
741
|
const candidates = this.options.primaryMeshName === undefined
|
|
754
742
|
? this.options.registration.spotNodes
|
|
755
|
-
: new Map([
|
|
743
|
+
: new Map([
|
|
744
|
+
[
|
|
745
|
+
this.options.primaryMeshName,
|
|
746
|
+
this.options.registration.spotNodes.get(this.options.primaryMeshName)
|
|
747
|
+
]
|
|
748
|
+
]);
|
|
756
749
|
for (const [spotNodeName, spotNode] of candidates) {
|
|
757
750
|
if (spotNode === undefined) {
|
|
758
751
|
continue;
|
|
@@ -880,8 +873,7 @@ function requirePublicRuntimeWeight(value, label) {
|
|
|
880
873
|
}
|
|
881
874
|
function effectiveUserSpotRegistrations(registration) {
|
|
882
875
|
const registrations = new Map(Object.entries(registration.spotFactoryRegistrations ?? {}));
|
|
883
|
-
const explicitImplementations = new Set(Object.values(registration.spotFactoryRegistrations ?? {})
|
|
884
|
-
.map(({ implementation }) => implementation));
|
|
876
|
+
const explicitImplementations = new Set(Object.values(registration.spotFactoryRegistrations ?? {}).map(({ implementation }) => implementation));
|
|
885
877
|
for (const implementation of registration.spotFactories ?? []) {
|
|
886
878
|
// `spotFactories` is also retained as the runtime implementation set.
|
|
887
879
|
// When the caller supplied an explicit stable type, the implementation
|
|
@@ -918,9 +910,9 @@ function effectiveObjectRole(registration) {
|
|
|
918
910
|
return contracts_1.ZLinkObjectRole.Server;
|
|
919
911
|
if (registration.objectRole === 'client')
|
|
920
912
|
return contracts_1.ZLinkObjectRole.Client;
|
|
921
|
-
return effectiveUserSpotRegistrations(registration).length > 0
|
|
922
|
-
|
|
923
|
-
|
|
913
|
+
return effectiveUserSpotRegistrations(registration).length > 0 ||
|
|
914
|
+
effectiveInstanceSpotRegistrations(registration).length > 0 ||
|
|
915
|
+
effectiveActorRegistrations(registration).length > 0
|
|
924
916
|
? contracts_1.ZLinkObjectRole.Server
|
|
925
917
|
: contracts_1.ZLinkObjectRole.None;
|
|
926
918
|
}
|
|
@@ -931,9 +923,7 @@ function objectCapability(objectKind, stableType, factory) {
|
|
|
931
923
|
stableType,
|
|
932
924
|
policy,
|
|
933
925
|
hasSnapshotAdapter: policy === 'snapshot',
|
|
934
|
-
limit: objectKind === 'actor'
|
|
935
|
-
? 0
|
|
936
|
-
: factory.options?.stableTypeLimit ?? 0
|
|
926
|
+
limit: objectKind === 'actor' ? 0 : (factory.options?.stableTypeLimit ?? 0)
|
|
937
927
|
};
|
|
938
928
|
}
|
|
939
929
|
function aggregatePlacementCapacity(actorLimit, spotLimit) {
|
|
@@ -946,6 +936,5 @@ function maxBigInt(left, right) {
|
|
|
946
936
|
return left > right ? left : right;
|
|
947
937
|
}
|
|
948
938
|
function sameOwnerToken(left, right) {
|
|
949
|
-
return left.ownerId === right.ownerId
|
|
950
|
-
&& left.leaseGeneration === right.leaseGeneration;
|
|
939
|
+
return left.ownerId === right.ownerId && left.leaseGeneration === right.leaseGeneration;
|
|
951
940
|
}
|
|
@@ -27,8 +27,8 @@ class DefaultZLinkSpotOutbound {
|
|
|
27
27
|
this.channelClient = options.channelClient;
|
|
28
28
|
this.spotPublisherClient = options.spotPublisherClient;
|
|
29
29
|
this.routedTransport = options.routedTransport;
|
|
30
|
-
this.spotRouterChannelIdForMesh =
|
|
31
|
-
?? ((meshName) => meshName);
|
|
30
|
+
this.spotRouterChannelIdForMesh =
|
|
31
|
+
options.spotRouterChannelIdForMesh ?? ((meshName) => meshName);
|
|
32
32
|
this.sourceSpotProvider = options.sourceSpotProvider;
|
|
33
33
|
this.meshName = options.meshName;
|
|
34
34
|
this.addressTransport = options.addressTransport;
|
|
@@ -194,8 +194,8 @@ function markSubmitted(options) {
|
|
|
194
194
|
if (options.submitted) {
|
|
195
195
|
(0, submission_result_1.throwAlreadySubmitted)('Spot call');
|
|
196
196
|
}
|
|
197
|
-
if (!options.instanceSpot &&
|
|
198
|
-
|| options.initialMeshName !== undefined)) {
|
|
197
|
+
if (!options.instanceSpot &&
|
|
198
|
+
(options.instanceSpotType !== undefined || options.initialMeshName !== undefined)) {
|
|
199
199
|
throw new configuration_1.ZLinkConfigurationException('Mesh selection requires an Instance Spot intent.');
|
|
200
200
|
}
|
|
201
201
|
options.submitted = true;
|
|
@@ -279,17 +279,14 @@ function wrapRequestCall(serial, inner) {
|
|
|
279
279
|
* otherwise the start is enqueued as its own serial turn.
|
|
280
280
|
*/
|
|
281
281
|
function startRequestOnSerial(serial, begin) {
|
|
282
|
-
return runInternalTransportStart(serial, begin)
|
|
283
|
-
.then((startedRequest) => startedRequest.pending);
|
|
282
|
+
return runInternalTransportStart(serial, begin).then((startedRequest) => startedRequest.pending);
|
|
284
283
|
}
|
|
285
284
|
/**
|
|
286
285
|
* Synthesizes only the transport start in the current turn. This is not a
|
|
287
286
|
* nested public operation: public same-owner waits are rejected or use Yield.
|
|
288
287
|
*/
|
|
289
288
|
function runInternalTransportStart(serial, begin) {
|
|
290
|
-
return serial.isCurrentTurn
|
|
291
|
-
? Promise.resolve().then(begin)
|
|
292
|
-
: serial.post(begin);
|
|
289
|
+
return serial.isCurrentTurn ? Promise.resolve().then(begin) : serial.post(begin);
|
|
293
290
|
}
|
|
294
291
|
function wrapRoutedSpotSendCall(serial, transport, spot, message, spotRouterChannelIdForMesh, sourceSpotProvider) {
|
|
295
292
|
const metadata = new Map();
|
|
@@ -447,13 +444,12 @@ function spotRefToSpotRouteTarget(spot, spotRouterChannelIdForMesh = (meshName)
|
|
|
447
444
|
};
|
|
448
445
|
}
|
|
449
446
|
function shouldRefreshAfterRouteDisconnect(target, error) {
|
|
450
|
-
return target.targetNodeState === contracts_1.ZLinkFrameworkRuntimeState.Serving
|
|
451
|
-
|
|
452
|
-
|
|
447
|
+
return (target.targetNodeState === contracts_1.ZLinkFrameworkRuntimeState.Serving &&
|
|
448
|
+
error instanceof Errors_1.ZLinkFrameworkException &&
|
|
449
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
|
|
453
450
|
}
|
|
454
451
|
function isShutdownTargetState(state) {
|
|
455
|
-
return state === contracts_1.ZLinkFrameworkRuntimeState.Draining
|
|
456
|
-
|| state === contracts_1.ZLinkFrameworkRuntimeState.Stopped;
|
|
452
|
+
return (state === contracts_1.ZLinkFrameworkRuntimeState.Draining || state === contracts_1.ZLinkFrameworkRuntimeState.Stopped);
|
|
457
453
|
}
|
|
458
454
|
function normalizeSpotRefRoutingId(routingId) {
|
|
459
455
|
return (0, routing_id_1.normalizeOpaqueRoutingId)(routingId);
|