@zlink-systems/framework 0.26.0 → 0.28.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/Actors/ZLinkActorClient.d.ts +1 -1
- package/dist/contracts/Channels/Calls.d.ts +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/Builders.d.ts +0 -1
- package/dist/contracts/Configuration/Configs.d.ts +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +2 -2
- package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
- package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +49 -153
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
- package/dist/runtime/actors/actor-request-deadline.js +6 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +7 -27
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +73 -59
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.d.ts +1 -1
- package/dist/runtime/channels/channel-envelope.js +51 -39
- package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
- package/dist/runtime/channels/channel-outbound-operations.js +25 -42
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
- package/dist/runtime/channels/channel-runtime-manager.js +13 -10
- package/dist/runtime/channels/channel-socket-options.js +3 -12
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +240 -177
- package/dist/runtime/channels/channel-transports.d.ts +21 -31
- package/dist/runtime/channels/channel-transports.js +80 -62
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +1 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
- package/dist/runtime/channels/source-spot-router.d.ts +1 -1
- package/dist/runtime/channels/source-spot-router.js +2 -4
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-node-route-transport.js +5 -5
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
- package/dist/runtime/host/actor-packet-relay.js +54 -99
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -171
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +15 -28
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +3 -12
- package/dist/runtime/host/spot-address-transport.js +78 -220
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +309 -336
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/request-deadline.d.ts +3 -0
- package/dist/runtime/messaging/request-deadline.js +39 -0
- package/dist/runtime/messaging/submission-result.d.ts +4 -0
- package/dist/runtime/messaging/submission-result.js +56 -1
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +7 -8
- package/dist/runtime/spots/spot-outbound.js +21 -23
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -2
- package/dist/runtime/streams/index.d.ts +16 -17
- package/dist/runtime/streams/index.js +22 -23
- package/dist/runtime/streams/managed-stream.d.ts +5 -2
- package/dist/runtime/streams/managed-stream.js +20 -13
- package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +6 -8
- package/dist/runtime/streams/session-calls.js +6 -22
- package/dist/runtime/streams/session-context.d.ts +10 -10
- package/dist/runtime/streams/session-context.js +25 -10
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
- package/src/contracts/Channels/Calls.ts +1 -1
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/Builders.ts +0 -1
- package/src/contracts/Configuration/Configs.ts +0 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +2 -2
- package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
- package/src/contracts/Streams/IZLinkSession.ts +2 -3
- package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +85 -218
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +4 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +14 -37
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +139 -102
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +74 -57
- package/src/runtime/channels/channel-outbound-operations.ts +40 -55
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +12 -30
- package/src/runtime/channels/channel-socket-options.ts +8 -15
- package/src/runtime/channels/channel-socket-registry.ts +291 -196
- package/src/runtime/channels/channel-transports.ts +168 -145
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/local-spot-route-transport.ts +1 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
- package/src/runtime/channels/source-spot-router.ts +2 -9
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +7 -9
- package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +63 -160
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -320
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +16 -57
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +175 -356
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +457 -482
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/request-deadline.ts +58 -0
- package/src/runtime/messaging/submission-result.ts +72 -2
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +59 -47
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
- package/src/runtime/streams/bound-session-service.ts +22 -2
- package/src/runtime/streams/index.ts +78 -68
- package/src/runtime/streams/managed-stream.ts +32 -23
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +11 -36
- package/src/runtime/streams/session-context.ts +60 -25
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,24 +1,10 @@
|
|
|
1
|
+
import { ZLinkFrameworkException, ZLinkSpotKind, type RoutingId } from '../../contracts';
|
|
1
2
|
import {
|
|
2
|
-
ZLinkFrameworkInternalErrorKind,
|
|
3
|
-
createInternalFrameworkException,
|
|
4
|
-
internalFrameworkErrorKind,
|
|
5
|
-
internalFrameworkErrorKindFromWireReply,
|
|
6
|
-
isCanonicalWireReplyTerminal
|
|
7
|
-
} from '../framework-errors-internal';
|
|
8
|
-
import {
|
|
9
|
-
RequestResult,
|
|
10
|
-
SubmitResult,
|
|
11
|
-
type ZLinkBackendMessageLike as MessageLike
|
|
12
|
-
} from '../backend/runtime-values';
|
|
13
|
-
import { ZLinkFrameworkException, type RoutingId } from '../../contracts';
|
|
14
|
-
import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
15
|
-
import { ZLinkSpotKind } from '../../contracts';
|
|
16
|
-
import {
|
|
17
|
-
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
|
|
18
3
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
19
4
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
20
5
|
ZLinkDispatchErrorSurface,
|
|
21
|
-
ZLinkDispatchMessageKind
|
|
6
|
+
ZLinkDispatchMessageKind,
|
|
7
|
+
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome
|
|
22
8
|
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
23
9
|
import { awaitWithAbort } from '../abort';
|
|
24
10
|
import type { ZLinkBackendMeshNode } from '../backend/contracts';
|
|
@@ -27,16 +13,32 @@ import {
|
|
|
27
13
|
type ZLinkMeshCompletionTable
|
|
28
14
|
} from '../backend/mesh-completion-table';
|
|
29
15
|
import {
|
|
16
|
+
RequestResult,
|
|
17
|
+
type ZLinkBackendMessageLike as MessageLike
|
|
18
|
+
} from '../backend/runtime-values';
|
|
19
|
+
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
20
|
+
import {
|
|
21
|
+
ZLinkChannelMessageKind,
|
|
30
22
|
decodeChannelReply,
|
|
31
23
|
encodeChannelEnvelopeParts,
|
|
32
24
|
encodeChannelEnvelopePartsAtDeadline,
|
|
33
|
-
type ZLinkChannelEnvelopeCodecRegistry
|
|
34
|
-
ZLinkChannelMessageKind
|
|
25
|
+
type ZLinkChannelEnvelopeCodecRegistry
|
|
35
26
|
} from '../channels/channel-envelope';
|
|
36
|
-
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
37
27
|
import { flowIfEnabled } from '../diagnostics';
|
|
38
28
|
import { runWithOutboundFlow } from '../diagnostics/flow-context';
|
|
29
|
+
import {
|
|
30
|
+
ZLinkFrameworkInternalErrorKind,
|
|
31
|
+
createInternalFrameworkException,
|
|
32
|
+
internalFrameworkErrorKind,
|
|
33
|
+
internalFrameworkErrorKindFromWireReply,
|
|
34
|
+
isCanonicalWireReplyTerminal
|
|
35
|
+
} from '../framework-errors-internal';
|
|
39
36
|
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
37
|
+
import {
|
|
38
|
+
ZLinkSubmitStatus,
|
|
39
|
+
classifySubmitResult,
|
|
40
|
+
type ZLinkSubmitResult
|
|
41
|
+
} from '../messaging/submission-result';
|
|
40
42
|
import type {
|
|
41
43
|
ZLinkSpotAddressCallOptions,
|
|
42
44
|
ZLinkSpotAddressTransport,
|
|
@@ -53,12 +55,6 @@ export interface ZLinkHostSpotAddressTransportOptions {
|
|
|
53
55
|
readonly completions: (meshName: string) => ZLinkMeshCompletionTable | undefined;
|
|
54
56
|
readonly codecs?: ZLinkChannelEnvelopeCodecRegistry;
|
|
55
57
|
readonly defaultRequestTimeoutMs: number;
|
|
56
|
-
/** Internal one-way deadline policy; public calls do not expose this option. */
|
|
57
|
-
readonly defaultSendTimeoutMs?: number;
|
|
58
|
-
/** Resolves the send timeout for a configured Spot Mesh. */
|
|
59
|
-
readonly sendTimeoutMsForMesh?: (meshName: string) => number;
|
|
60
|
-
/** Resolves the send timeout for a resolved Spot route channel. */
|
|
61
|
-
readonly sendTimeoutMsForRouteChannel?: (routeChannelId: string) => number;
|
|
62
58
|
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
63
59
|
}
|
|
64
60
|
|
|
@@ -84,11 +80,6 @@ type MissingTargetSelection =
|
|
|
84
80
|
| { readonly kind: 'capacity' }
|
|
85
81
|
| { readonly kind: 'unavailable' };
|
|
86
82
|
|
|
87
|
-
// Only a synchronous target-admission rejection is safe to retry. A
|
|
88
|
-
// completion with the same public error kind may already represent an
|
|
89
|
-
// admitted application operation, so it must not enter the retry loop.
|
|
90
|
-
const PRE_ADMISSION_MISSING_INSTANCE_ERRORS = new WeakSet<ZLinkFrameworkException>();
|
|
91
|
-
|
|
92
83
|
/** Owns global Spot authority lookup and Missing Instance placement. */
|
|
93
84
|
export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport {
|
|
94
85
|
constructor(private readonly options: ZLinkHostSpotAddressTransportOptions) {}
|
|
@@ -96,7 +87,7 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
96
87
|
sendToSpotAddress(
|
|
97
88
|
spotId: RoutingId,
|
|
98
89
|
message: unknown,
|
|
99
|
-
call: ZLinkSpotAddressCallOptions
|
|
90
|
+
call: Omit<ZLinkSpotAddressCallOptions, 'timeoutMs' | 'signal'>
|
|
100
91
|
): Promise<ZLinkSubmitResult> {
|
|
101
92
|
// Call-scoped flow (spec 27 §4): the envelope encoders and the
|
|
102
93
|
// traceInstanceAddress points share one ambient flow that does not
|
|
@@ -110,155 +101,136 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
110
101
|
private async sendToSpotAddressScoped(
|
|
111
102
|
spotId: RoutingId,
|
|
112
103
|
message: unknown,
|
|
113
|
-
call: ZLinkSpotAddressCallOptions
|
|
104
|
+
call: Omit<ZLinkSpotAddressCallOptions, 'timeoutMs' | 'signal'>
|
|
114
105
|
): Promise<ZLinkSubmitResult> {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
106
|
+
const activationDeadlineUnixMs = BigInt(
|
|
107
|
+
Math.round(Date.now() + this.options.defaultRequestTimeoutMs)
|
|
108
|
+
);
|
|
109
|
+
const existing = await this.resolveExisting(spotId);
|
|
110
|
+
if (existing !== undefined) {
|
|
111
|
+
this.validateExisting(existing, call);
|
|
112
|
+
try {
|
|
113
|
+
const result = await this.options.routed.sendToSpot(existing, message, {
|
|
114
|
+
instanceSpot: call.instanceSpot,
|
|
115
|
+
metadata: call.metadata
|
|
116
|
+
});
|
|
117
|
+
if (result.status === ZLinkSubmitStatus.Submitted) {
|
|
118
|
+
this.traceInstanceAddress(
|
|
119
|
+
ZLinkMessageFlowOutcome.Sent,
|
|
120
|
+
ZLinkDispatchMessageKind.Send,
|
|
121
|
+
spotId,
|
|
122
|
+
message,
|
|
123
|
+
existing.routerChannelId,
|
|
124
|
+
existing.stableType,
|
|
125
|
+
existing.targetNodeRid
|
|
131
126
|
);
|
|
132
|
-
|
|
133
|
-
this.traceInstanceAddress(
|
|
134
|
-
ZLinkMessageFlowOutcome.Sent,
|
|
135
|
-
ZLinkDispatchMessageKind.Send,
|
|
136
|
-
spotId,
|
|
137
|
-
message,
|
|
138
|
-
existing.routerChannelId,
|
|
139
|
-
existing.stableType,
|
|
140
|
-
existing.targetNodeRid
|
|
141
|
-
);
|
|
142
|
-
} else {
|
|
143
|
-
this.traceInstanceAddress(
|
|
144
|
-
submitResultFlowOutcome(result.status),
|
|
145
|
-
ZLinkDispatchMessageKind.Send,
|
|
146
|
-
spotId,
|
|
147
|
-
message,
|
|
148
|
-
existing.routerChannelId,
|
|
149
|
-
existing.stableType,
|
|
150
|
-
existing.targetNodeRid,
|
|
151
|
-
submitResultReason(result.status)
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
if (
|
|
155
|
-
result.status === ZLinkSubmitStatus.TargetNotFound ||
|
|
156
|
-
result.status === ZLinkSubmitStatus.RouteNotConnected
|
|
157
|
-
) {
|
|
158
|
-
this.options.resolver()?.invalidate?.(spotId);
|
|
159
|
-
}
|
|
160
|
-
return result;
|
|
161
|
-
} catch (error) {
|
|
162
|
-
if (isSpotRouteRefreshError(error)) {
|
|
163
|
-
this.options.resolver()?.invalidate?.(spotId);
|
|
164
|
-
}
|
|
165
|
-
const reason = addressedInstanceErrorReason(error);
|
|
127
|
+
} else {
|
|
166
128
|
this.traceInstanceAddress(
|
|
167
|
-
|
|
168
|
-
? ZLinkMessageFlowOutcome.Backpressured
|
|
169
|
-
: ZLinkMessageFlowOutcome.Dropped,
|
|
129
|
+
submitResultFlowOutcome(result.status),
|
|
170
130
|
ZLinkDispatchMessageKind.Send,
|
|
171
131
|
spotId,
|
|
172
132
|
message,
|
|
173
133
|
existing.routerChannelId,
|
|
174
134
|
existing.stableType,
|
|
175
135
|
existing.targetNodeRid,
|
|
176
|
-
|
|
136
|
+
submitResultReason(result.status)
|
|
177
137
|
);
|
|
178
|
-
throw error;
|
|
179
138
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
spotId
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
call.instanceSpotType,
|
|
193
|
-
undefined,
|
|
194
|
-
ZLinkDispatchErrorReason.StaleTarget
|
|
195
|
-
);
|
|
196
|
-
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
197
|
-
}
|
|
198
|
-
if (selected.kind === 'capacity') {
|
|
199
|
-
const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
|
|
139
|
+
if (
|
|
140
|
+
result.status === ZLinkSubmitStatus.TargetNotFound ||
|
|
141
|
+
result.status === ZLinkSubmitStatus.RouteNotConnected
|
|
142
|
+
) {
|
|
143
|
+
this.options.resolver()?.invalidate?.(spotId);
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
} catch (error) {
|
|
147
|
+
if (isSpotRouteRefreshError(error)) {
|
|
148
|
+
this.options.resolver()?.invalidate?.(spotId);
|
|
149
|
+
}
|
|
150
|
+
const reason = addressedInstanceErrorReason(error);
|
|
200
151
|
this.traceInstanceAddress(
|
|
201
|
-
|
|
152
|
+
reason === ZLinkDispatchErrorReason.Backpressure
|
|
153
|
+
? ZLinkMessageFlowOutcome.Backpressured
|
|
154
|
+
: ZLinkMessageFlowOutcome.Dropped,
|
|
202
155
|
ZLinkDispatchMessageKind.Send,
|
|
203
156
|
spotId,
|
|
204
157
|
message,
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
158
|
+
existing.routerChannelId,
|
|
159
|
+
existing.stableType,
|
|
160
|
+
existing.targetNodeRid,
|
|
161
|
+
reason
|
|
209
162
|
);
|
|
210
163
|
throw error;
|
|
211
164
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
const sourceSpotId =
|
|
228
|
-
call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
|
|
229
|
-
const mapped = mapSubmitResult(
|
|
230
|
-
await awaitWithAbort(
|
|
231
|
-
selected.node.sendToMissingInstanceSpot(
|
|
232
|
-
selected.target,
|
|
233
|
-
encoded,
|
|
234
|
-
BigInt(deadline.deadlineUnixMs),
|
|
235
|
-
sourceSpotId,
|
|
236
|
-
call.metadata
|
|
237
|
-
),
|
|
238
|
-
deadline.signal
|
|
239
|
-
)
|
|
165
|
+
}
|
|
166
|
+
if (!call.instanceSpot) {
|
|
167
|
+
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
168
|
+
}
|
|
169
|
+
const selected = this.selectMissingTarget(spotId, call);
|
|
170
|
+
if (selected.kind === 'unsupported') {
|
|
171
|
+
this.traceInstanceAddress(
|
|
172
|
+
ZLinkMessageFlowOutcome.Dropped,
|
|
173
|
+
ZLinkDispatchMessageKind.Send,
|
|
174
|
+
spotId,
|
|
175
|
+
message,
|
|
176
|
+
call.initialMeshName,
|
|
177
|
+
call.instanceSpotType,
|
|
178
|
+
undefined,
|
|
179
|
+
ZLinkDispatchErrorReason.StaleTarget
|
|
240
180
|
);
|
|
181
|
+
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
182
|
+
}
|
|
183
|
+
if (selected.kind === 'capacity') {
|
|
184
|
+
const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
|
|
241
185
|
this.traceInstanceAddress(
|
|
242
|
-
|
|
186
|
+
ZLinkMessageFlowOutcome.Backpressured,
|
|
243
187
|
ZLinkDispatchMessageKind.Send,
|
|
244
188
|
spotId,
|
|
245
189
|
message,
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
? undefined
|
|
251
|
-
: submitResultReason(mapped.status)
|
|
190
|
+
call.initialMeshName,
|
|
191
|
+
call.instanceSpotType,
|
|
192
|
+
undefined,
|
|
193
|
+
ZLinkDispatchErrorReason.Backpressure
|
|
252
194
|
);
|
|
253
|
-
return mapped;
|
|
254
|
-
} catch (error) {
|
|
255
|
-
if (deadline.expired()) {
|
|
256
|
-
return { status: ZLinkSubmitStatus.TimedOut };
|
|
257
|
-
}
|
|
258
195
|
throw error;
|
|
259
|
-
} finally {
|
|
260
|
-
deadline.close();
|
|
261
196
|
}
|
|
197
|
+
if (selected.kind === 'unavailable') {
|
|
198
|
+
this.traceInstanceAddress(
|
|
199
|
+
ZLinkMessageFlowOutcome.Dropped,
|
|
200
|
+
ZLinkDispatchMessageKind.Send,
|
|
201
|
+
spotId,
|
|
202
|
+
message,
|
|
203
|
+
call.initialMeshName,
|
|
204
|
+
call.instanceSpotType,
|
|
205
|
+
undefined,
|
|
206
|
+
ZLinkDispatchErrorReason.StaleTarget
|
|
207
|
+
);
|
|
208
|
+
return { status: ZLinkSubmitStatus.RouteNotConnected };
|
|
209
|
+
}
|
|
210
|
+
const encoded = this.encode(ZLinkChannelMessageKind.Command, selected.meshName, message);
|
|
211
|
+
const sourceSpotId =
|
|
212
|
+
call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
|
|
213
|
+
const mapped = classifySubmitResult(
|
|
214
|
+
await selected.node.sendToMissingInstanceSpot(
|
|
215
|
+
selected.target,
|
|
216
|
+
encoded,
|
|
217
|
+
activationDeadlineUnixMs,
|
|
218
|
+
sourceSpotId,
|
|
219
|
+
call.metadata
|
|
220
|
+
),
|
|
221
|
+
'Instance Spot submission'
|
|
222
|
+
);
|
|
223
|
+
this.traceInstanceAddress(
|
|
224
|
+
submitResultFlowOutcome(mapped.status),
|
|
225
|
+
ZLinkDispatchMessageKind.Send,
|
|
226
|
+
spotId,
|
|
227
|
+
message,
|
|
228
|
+
selected.meshName,
|
|
229
|
+
selected.target.stableType,
|
|
230
|
+
selected.target.targetNodeRid,
|
|
231
|
+
mapped.status === ZLinkSubmitStatus.Submitted ? undefined : submitResultReason(mapped.status)
|
|
232
|
+
);
|
|
233
|
+
return mapped;
|
|
262
234
|
}
|
|
263
235
|
|
|
264
236
|
requestToSpotAddress<TReply = unknown>(
|
|
@@ -280,57 +252,41 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
280
252
|
const timeoutMs = call.timeoutMs ?? this.options.defaultRequestTimeoutMs;
|
|
281
253
|
const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
|
|
282
254
|
try {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
const recovery = await this.recoverStaleInstanceRoute(
|
|
296
|
-
spotId,
|
|
297
|
-
call,
|
|
298
|
-
deadline,
|
|
299
|
-
error,
|
|
300
|
-
existing
|
|
301
|
-
);
|
|
302
|
-
if (recovery.kind === 'route') {
|
|
303
|
-
// Retry only after the resolver exposes a different route. The
|
|
304
|
-
// stale target cannot have admitted the application operation.
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
if (recovery.kind !== 'cold') {
|
|
308
|
-
this.reportInstanceRequestError(
|
|
309
|
-
spotId,
|
|
310
|
-
request,
|
|
311
|
-
error,
|
|
312
|
-
existing.routerChannelId,
|
|
313
|
-
existing.targetNodeRid,
|
|
314
|
-
existing.stableType,
|
|
315
|
-
addressedInstanceErrorReason(error)
|
|
316
|
-
);
|
|
317
|
-
throw error;
|
|
318
|
-
}
|
|
319
|
-
// The logical authority is no longer Ready, so the Instance
|
|
320
|
-
// intent path below may submit the original operation once.
|
|
321
|
-
}
|
|
255
|
+
const existing = await this.resolveExisting(spotId, deadline.signal);
|
|
256
|
+
deadline.requireRemaining();
|
|
257
|
+
if (existing === undefined) {
|
|
258
|
+
return await this.requestToMissingInstance(spotId, request, call, deadline);
|
|
259
|
+
}
|
|
260
|
+
this.validateExisting(existing, call);
|
|
261
|
+
try {
|
|
262
|
+
return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
|
|
263
|
+
} catch (error) {
|
|
264
|
+
if (isSpotRouteRefreshError(error)) {
|
|
265
|
+
this.options.resolver()?.invalidate?.(spotId);
|
|
322
266
|
}
|
|
323
|
-
|
|
324
|
-
|
|
267
|
+
// Failover policy §4.4: SpotMoving is the owner's Ready owner-fence
|
|
268
|
+
// refusal, made before admission. With Instance intent, one authority
|
|
269
|
+
// read under the same deadline decides: Missing means Close released
|
|
270
|
+
// the incarnation, so the request activates a new one. Any other
|
|
271
|
+
// answer, and any message the owner admitted, keeps this terminal.
|
|
272
|
+
if (
|
|
273
|
+
call.instanceSpot &&
|
|
274
|
+
isOwnerFenceRefusal(error) &&
|
|
275
|
+
(await this.resolveExisting(spotId, deadline.signal)) === undefined
|
|
276
|
+
) {
|
|
277
|
+
deadline.requireRemaining();
|
|
325
278
|
return await this.requestToMissingInstance(spotId, request, call, deadline);
|
|
326
|
-
} catch (error) {
|
|
327
|
-
if (!isMissingInstanceRetryError(error)) throw error;
|
|
328
|
-
// A placement node can finish cleanup before its stale native result
|
|
329
|
-
// reaches this process. Refresh authority and select again under the
|
|
330
|
-
// same end-to-end deadline; the old envelope was not admitted.
|
|
331
|
-
this.options.resolver()?.invalidate?.(spotId);
|
|
332
|
-
await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
|
|
333
279
|
}
|
|
280
|
+
this.reportInstanceRequestError(
|
|
281
|
+
spotId,
|
|
282
|
+
request,
|
|
283
|
+
error,
|
|
284
|
+
existing.routerChannelId,
|
|
285
|
+
existing.targetNodeRid,
|
|
286
|
+
existing.stableType,
|
|
287
|
+
addressedInstanceErrorReason(error)
|
|
288
|
+
);
|
|
289
|
+
throw error;
|
|
334
290
|
}
|
|
335
291
|
} catch (error) {
|
|
336
292
|
if (
|
|
@@ -372,6 +328,7 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
372
328
|
);
|
|
373
329
|
const reply = await awaitWithAbort(
|
|
374
330
|
this.options.routed.requestToSpot<TReply>(existing, request, {
|
|
331
|
+
instanceSpot: call.instanceSpot,
|
|
375
332
|
timeoutMs: deadline.requireRemaining(),
|
|
376
333
|
signal: deadline.signal,
|
|
377
334
|
metadata: call.metadata
|
|
@@ -446,28 +403,17 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
446
403
|
const table = this.options.completions(selected.meshName);
|
|
447
404
|
if (table === undefined)
|
|
448
405
|
throw new Error(`MeshNode '${selected.meshName}' completion table is not started.`);
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
deadline.signal
|
|
461
|
-
);
|
|
462
|
-
} catch (error) {
|
|
463
|
-
if (
|
|
464
|
-
error instanceof ZLinkFrameworkException &&
|
|
465
|
-
internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RequestTargetNotFound
|
|
466
|
-
) {
|
|
467
|
-
PRE_ADMISSION_MISSING_INSTANCE_ERRORS.add(error);
|
|
468
|
-
}
|
|
469
|
-
throw error;
|
|
470
|
-
}
|
|
406
|
+
const completionPromise = table.submit(
|
|
407
|
+
() =>
|
|
408
|
+
selected.node.requestToMissingInstanceSpot(
|
|
409
|
+
selected.target,
|
|
410
|
+
encoded,
|
|
411
|
+
deadlineUnixMs,
|
|
412
|
+
call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId),
|
|
413
|
+
call.metadata
|
|
414
|
+
),
|
|
415
|
+
deadline.signal
|
|
416
|
+
);
|
|
471
417
|
this.traceInstanceAddress(
|
|
472
418
|
ZLinkMessageFlowOutcome.Sent,
|
|
473
419
|
ZLinkDispatchMessageKind.Request,
|
|
@@ -580,35 +526,6 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
580
526
|
}
|
|
581
527
|
}
|
|
582
528
|
|
|
583
|
-
private async recoverStaleInstanceRoute(
|
|
584
|
-
spotId: RoutingId,
|
|
585
|
-
call: ZLinkSpotAddressCallOptions,
|
|
586
|
-
deadline: ZLinkSpotAddressDeadline,
|
|
587
|
-
error: unknown,
|
|
588
|
-
staleRoute: ZLinkSpotRouteTarget
|
|
589
|
-
): Promise<
|
|
590
|
-
| { readonly kind: 'route'; readonly route: ZLinkSpotRouteTarget }
|
|
591
|
-
| { readonly kind: 'cold' }
|
|
592
|
-
| { readonly kind: 'fail' }
|
|
593
|
-
> {
|
|
594
|
-
if (
|
|
595
|
-
!call.instanceSpot ||
|
|
596
|
-
!(error instanceof ZLinkFrameworkException) ||
|
|
597
|
-
!isInstanceRouteStaleError(error)
|
|
598
|
-
) {
|
|
599
|
-
return { kind: 'fail' };
|
|
600
|
-
}
|
|
601
|
-
for (;;) {
|
|
602
|
-
deadline.requireRemaining();
|
|
603
|
-
const current = await this.resolveExisting(spotId, deadline.signal);
|
|
604
|
-
if (current === undefined) return { kind: 'cold' };
|
|
605
|
-
if (!sameSpotRouteSnapshot(current, staleRoute)) {
|
|
606
|
-
return { kind: 'route', route: current };
|
|
607
|
-
}
|
|
608
|
-
await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
|
|
612
529
|
private selectMissingTarget(
|
|
613
530
|
spotId: RoutingId,
|
|
614
531
|
call: ZLinkSpotAddressCallOptions
|
|
@@ -698,22 +615,6 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
698
615
|
return { kind: 'unavailable' };
|
|
699
616
|
}
|
|
700
617
|
|
|
701
|
-
private sendTimeoutMsForMesh(meshName: string): number {
|
|
702
|
-
return (
|
|
703
|
-
this.options.sendTimeoutMsForMesh?.(meshName) ??
|
|
704
|
-
this.options.defaultSendTimeoutMs ??
|
|
705
|
-
this.options.defaultRequestTimeoutMs
|
|
706
|
-
);
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
private sendTimeoutMsForRouteChannel(routeChannelId: string): number {
|
|
710
|
-
return (
|
|
711
|
-
this.options.sendTimeoutMsForRouteChannel?.(routeChannelId) ??
|
|
712
|
-
this.options.defaultSendTimeoutMs ??
|
|
713
|
-
this.options.defaultRequestTimeoutMs
|
|
714
|
-
);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
618
|
private validateExisting(
|
|
718
619
|
target: import('../spots/spot-routing-internal').ZLinkSpotRouteTarget,
|
|
719
620
|
call: ZLinkSpotAddressCallOptions
|
|
@@ -771,25 +672,6 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
|
|
|
771
672
|
}
|
|
772
673
|
}
|
|
773
674
|
|
|
774
|
-
function isInstanceRouteStaleError(error: unknown): error is ZLinkFrameworkException {
|
|
775
|
-
if (!(error instanceof ZLinkFrameworkException)) return false;
|
|
776
|
-
const kind = internalFrameworkErrorKind(error);
|
|
777
|
-
// RequestTargetNotFound from an existing route is a pre-admission route
|
|
778
|
-
// lookup failure. A stale owner result is terminal for this application
|
|
779
|
-
// operation: the routed request may already have crossed the transport
|
|
780
|
-
// boundary, so refreshing the route and resubmitting it could execute the
|
|
781
|
-
// same operation twice. Instance cold activation is selected only when the
|
|
782
|
-
// authority resolver itself reports that the Ready route is absent.
|
|
783
|
-
if (kind === ZLinkFrameworkInternalErrorKind.RequestTargetNotFound) return true;
|
|
784
|
-
return false;
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
function isMissingInstanceRetryError(error: unknown): error is ZLinkFrameworkException {
|
|
788
|
-
return (
|
|
789
|
-
error instanceof ZLinkFrameworkException && PRE_ADMISSION_MISSING_INSTANCE_ERRORS.has(error)
|
|
790
|
-
);
|
|
791
|
-
}
|
|
792
|
-
|
|
793
675
|
function missingInstanceRequestFailure(
|
|
794
676
|
result: number,
|
|
795
677
|
nativeErrno: number
|
|
@@ -819,27 +701,6 @@ function missingInstanceRequestFailure(
|
|
|
819
701
|
);
|
|
820
702
|
}
|
|
821
703
|
|
|
822
|
-
function mapSubmitResult(result: number): ZLinkSubmitResult {
|
|
823
|
-
switch (result) {
|
|
824
|
-
case SubmitResult.Ok:
|
|
825
|
-
return { status: ZLinkSubmitStatus.Submitted };
|
|
826
|
-
case SubmitResult.Backpressured:
|
|
827
|
-
case SubmitResult.NotAdmitted:
|
|
828
|
-
return { status: ZLinkSubmitStatus.Backpressured };
|
|
829
|
-
case SubmitResult.NotFound:
|
|
830
|
-
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
831
|
-
case SubmitResult.NotConnected:
|
|
832
|
-
return { status: ZLinkSubmitStatus.RouteNotConnected };
|
|
833
|
-
case SubmitResult.Terminated:
|
|
834
|
-
return { status: ZLinkSubmitStatus.Shutdown };
|
|
835
|
-
default:
|
|
836
|
-
throw createInternalFrameworkException(
|
|
837
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
838
|
-
`Instance Spot submission failed with result ${result}.`
|
|
839
|
-
);
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
|
-
|
|
843
704
|
function missingInstancePlacementCapacity(
|
|
844
705
|
spotId: RoutingId,
|
|
845
706
|
stableType: string | undefined
|
|
@@ -877,39 +738,13 @@ function isSpotRouteRefreshError(error: unknown): error is ZLinkFrameworkExcepti
|
|
|
877
738
|
);
|
|
878
739
|
}
|
|
879
740
|
|
|
880
|
-
function
|
|
741
|
+
function isOwnerFenceRefusal(error: unknown): boolean {
|
|
881
742
|
return (
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
left.routerChannelId === right.routerChannelId &&
|
|
885
|
-
left.spotKind === right.spotKind &&
|
|
886
|
-
left.stableType === right.stableType &&
|
|
887
|
-
left.targetSpotGeneration === right.targetSpotGeneration &&
|
|
888
|
-
left.targetNodeGeneration === right.targetNodeGeneration &&
|
|
889
|
-
left.authorityOwnerGeneration === right.authorityOwnerGeneration &&
|
|
890
|
-
left.targetOwnerId === right.targetOwnerId &&
|
|
891
|
-
left.ownerLeaseGeneration === right.ownerLeaseGeneration &&
|
|
892
|
-
left.authorityStoreVersion === right.authorityStoreVersion
|
|
743
|
+
error instanceof ZLinkFrameworkException &&
|
|
744
|
+
internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.SpotMoving
|
|
893
745
|
);
|
|
894
746
|
}
|
|
895
747
|
|
|
896
|
-
function waitForSpotRouteRefresh(delayMs: number, signal: AbortSignal): Promise<void> {
|
|
897
|
-
return new Promise((resolve, reject) => {
|
|
898
|
-
const finish = () => {
|
|
899
|
-
signal.removeEventListener('abort', abort);
|
|
900
|
-
resolve();
|
|
901
|
-
};
|
|
902
|
-
const abort = () => {
|
|
903
|
-
clearTimeout(timer);
|
|
904
|
-
signal.removeEventListener('abort', abort);
|
|
905
|
-
reject(signal.reason);
|
|
906
|
-
};
|
|
907
|
-
const timer = setTimeout(finish, delayMs);
|
|
908
|
-
signal.addEventListener('abort', abort, { once: true });
|
|
909
|
-
if (signal.aborted) abort();
|
|
910
|
-
});
|
|
911
|
-
}
|
|
912
|
-
|
|
913
748
|
function submitResultReason(status: ZLinkSubmitStatus): ZLinkDispatchErrorReason {
|
|
914
749
|
switch (status) {
|
|
915
750
|
case ZLinkSubmitStatus.Backpressured:
|
|
@@ -967,21 +802,9 @@ function addressedInstanceErrorReason(error: unknown): ZLinkDispatchErrorReason
|
|
|
967
802
|
return ZLinkDispatchErrorReason.HandlerException;
|
|
968
803
|
}
|
|
969
804
|
|
|
970
|
-
function initialSendTimeoutMs(
|
|
971
|
-
options: ZLinkHostSpotAddressTransportOptions,
|
|
972
|
-
call: ZLinkSpotAddressCallOptions
|
|
973
|
-
): number {
|
|
974
|
-
return call.initialMeshName === undefined
|
|
975
|
-
? (options.defaultSendTimeoutMs ?? options.defaultRequestTimeoutMs)
|
|
976
|
-
: (options.sendTimeoutMsForMesh?.(call.initialMeshName) ??
|
|
977
|
-
options.defaultSendTimeoutMs ??
|
|
978
|
-
options.defaultRequestTimeoutMs);
|
|
979
|
-
}
|
|
980
|
-
|
|
981
805
|
interface ZLinkSpotAddressDeadline {
|
|
982
806
|
readonly deadlineUnixMs: number;
|
|
983
807
|
readonly signal: AbortSignal;
|
|
984
|
-
setOwnerTimeout(timeoutMs: number): void;
|
|
985
808
|
requireRemaining(): number;
|
|
986
809
|
expired(): boolean;
|
|
987
810
|
close(): void;
|
|
@@ -993,7 +816,7 @@ function createSpotAddressDeadline(
|
|
|
993
816
|
): ZLinkSpotAddressDeadline {
|
|
994
817
|
const startedAtMs = performance.now();
|
|
995
818
|
const startedAtUnixMs = Date.now();
|
|
996
|
-
|
|
819
|
+
const deadlineMs = startedAtMs + Math.max(0, timeoutMs);
|
|
997
820
|
const controller = new AbortController();
|
|
998
821
|
let expired = false;
|
|
999
822
|
let timeout: ReturnType<typeof setTimeout> | undefined;
|
|
@@ -1019,10 +842,6 @@ function createSpotAddressDeadline(
|
|
|
1019
842
|
return Math.round(startedAtUnixMs + (deadlineMs - startedAtMs));
|
|
1020
843
|
},
|
|
1021
844
|
signal: controller.signal,
|
|
1022
|
-
setOwnerTimeout(ownerTimeoutMs: number) {
|
|
1023
|
-
deadlineMs = startedAtMs + Math.max(0, ownerTimeoutMs);
|
|
1024
|
-
arm();
|
|
1025
|
-
},
|
|
1026
845
|
requireRemaining() {
|
|
1027
846
|
const remainingMs = deadlineMs - performance.now();
|
|
1028
847
|
if (remainingMs <= 0) {
|