@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,9 +1,9 @@
|
|
|
1
1
|
import { type RoutingId } from '../../contracts';
|
|
2
|
-
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
3
2
|
import type { ZLinkBackendMeshNode } from '../backend/contracts';
|
|
4
3
|
import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
5
|
-
import { type ZLinkChannelEnvelopeCodecRegistry } from '../channels/channel-envelope';
|
|
6
4
|
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
5
|
+
import { type ZLinkChannelEnvelopeCodecRegistry } from '../channels/channel-envelope';
|
|
6
|
+
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
7
7
|
import type { ZLinkSpotAddressCallOptions, ZLinkSpotAddressTransport, ZLinkSpotRoutedTransport } from '../spots/spot-outbound';
|
|
8
8
|
import type { ZLinkSpotRouteResolver } from '../spots/spot-routing-internal';
|
|
9
9
|
export interface ZLinkHostSpotAddressTransportOptions {
|
|
@@ -15,12 +15,6 @@ export interface ZLinkHostSpotAddressTransportOptions {
|
|
|
15
15
|
readonly completions: (meshName: string) => ZLinkMeshCompletionTable | undefined;
|
|
16
16
|
readonly codecs?: ZLinkChannelEnvelopeCodecRegistry;
|
|
17
17
|
readonly defaultRequestTimeoutMs: number;
|
|
18
|
-
/** Internal one-way deadline policy; public calls do not expose this option. */
|
|
19
|
-
readonly defaultSendTimeoutMs?: number;
|
|
20
|
-
/** Resolves the send timeout for a configured Spot Mesh. */
|
|
21
|
-
readonly sendTimeoutMsForMesh?: (meshName: string) => number;
|
|
22
|
-
/** Resolves the send timeout for a resolved Spot route channel. */
|
|
23
|
-
readonly sendTimeoutMsForRouteChannel?: (routeChannelId: string) => number;
|
|
24
18
|
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
25
19
|
}
|
|
26
20
|
export declare function hasObjectClientCapability(role: 'none' | 'client' | 'server' | undefined): boolean;
|
|
@@ -28,7 +22,7 @@ export declare function hasObjectClientCapability(role: 'none' | 'client' | 'ser
|
|
|
28
22
|
export declare class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport {
|
|
29
23
|
private readonly options;
|
|
30
24
|
constructor(options: ZLinkHostSpotAddressTransportOptions);
|
|
31
|
-
sendToSpotAddress(spotId: RoutingId, message: unknown, call: ZLinkSpotAddressCallOptions): Promise<ZLinkSubmitResult>;
|
|
25
|
+
sendToSpotAddress(spotId: RoutingId, message: unknown, call: Omit<ZLinkSpotAddressCallOptions, 'timeoutMs' | 'signal'>): Promise<ZLinkSubmitResult>;
|
|
32
26
|
private sendToSpotAddressScoped;
|
|
33
27
|
requestToSpotAddress<TReply = unknown>(spotId: RoutingId, request: unknown, call: ZLinkSpotAddressCallOptions): Promise<TReply>;
|
|
34
28
|
private requestToSpotAddressScoped;
|
|
@@ -37,10 +31,7 @@ export declare class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTr
|
|
|
37
31
|
private reportInstanceRequestError;
|
|
38
32
|
private traceInstanceAddress;
|
|
39
33
|
private resolveExisting;
|
|
40
|
-
private recoverStaleInstanceRoute;
|
|
41
34
|
private selectMissingTarget;
|
|
42
|
-
private sendTimeoutMsForMesh;
|
|
43
|
-
private sendTimeoutMsForRouteChannel;
|
|
44
35
|
private validateExisting;
|
|
45
36
|
private encode;
|
|
46
37
|
private encodeAtDeadline;
|
|
@@ -2,25 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkHostSpotAddressTransport = void 0;
|
|
4
4
|
exports.hasObjectClientCapability = hasObjectClientCapability;
|
|
5
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
6
|
-
const runtime_values_1 = require("../backend/runtime-values");
|
|
7
5
|
const contracts_1 = require("../../contracts");
|
|
8
|
-
const submission_result_1 = require("../messaging/submission-result");
|
|
9
|
-
const contracts_2 = require("../../contracts");
|
|
10
6
|
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
11
7
|
const abort_1 = require("../abort");
|
|
12
8
|
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
9
|
+
const runtime_values_1 = require("../backend/runtime-values");
|
|
13
10
|
const channel_envelope_1 = require("../channels/channel-envelope");
|
|
14
11
|
const diagnostics_1 = require("../diagnostics");
|
|
15
12
|
const flow_context_1 = require("../diagnostics/flow-context");
|
|
13
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
16
14
|
const packet_name_1 = require("../messaging/packet-name");
|
|
15
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
17
16
|
function hasObjectClientCapability(role) {
|
|
18
17
|
return role === 'client' || role === 'server';
|
|
19
18
|
}
|
|
20
|
-
// Only a synchronous target-admission rejection is safe to retry. A
|
|
21
|
-
// completion with the same public error kind may already represent an
|
|
22
|
-
// admitted application operation, so it must not enter the retry loop.
|
|
23
|
-
const PRE_ADMISSION_MISSING_INSTANCE_ERRORS = new WeakSet();
|
|
24
19
|
/** Owns global Spot authority lookup and Missing Instance placement. */
|
|
25
20
|
class ZLinkHostSpotAddressTransport {
|
|
26
21
|
options;
|
|
@@ -34,78 +29,60 @@ class ZLinkHostSpotAddressTransport {
|
|
|
34
29
|
return (0, flow_context_1.runWithOutboundFlow)(this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true, () => this.sendToSpotAddressScoped(spotId, message, call));
|
|
35
30
|
}
|
|
36
31
|
async sendToSpotAddressScoped(spotId, message, call) {
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
signal: deadline.signal,
|
|
49
|
-
metadata: call.metadata
|
|
50
|
-
}), deadline.signal);
|
|
51
|
-
if (result.status === submission_result_1.ZLinkSubmitStatus.Submitted) {
|
|
52
|
-
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.traceInstanceAddress(submitResultFlowOutcome(result.status), ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, submitResultReason(result.status));
|
|
56
|
-
}
|
|
57
|
-
if (result.status === submission_result_1.ZLinkSubmitStatus.TargetNotFound ||
|
|
58
|
-
result.status === submission_result_1.ZLinkSubmitStatus.RouteNotConnected) {
|
|
59
|
-
this.options.resolver()?.invalidate?.(spotId);
|
|
60
|
-
}
|
|
61
|
-
return result;
|
|
32
|
+
const activationDeadlineUnixMs = BigInt(Math.round(Date.now() + this.options.defaultRequestTimeoutMs));
|
|
33
|
+
const existing = await this.resolveExisting(spotId);
|
|
34
|
+
if (existing !== undefined) {
|
|
35
|
+
this.validateExisting(existing, call);
|
|
36
|
+
try {
|
|
37
|
+
const result = await this.options.routed.sendToSpot(existing, message, {
|
|
38
|
+
instanceSpot: call.instanceSpot,
|
|
39
|
+
metadata: call.metadata
|
|
40
|
+
});
|
|
41
|
+
if (result.status === submission_result_1.ZLinkSubmitStatus.Submitted) {
|
|
42
|
+
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
|
|
62
43
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.options.resolver()?.invalidate?.(spotId);
|
|
66
|
-
}
|
|
67
|
-
const reason = addressedInstanceErrorReason(error);
|
|
68
|
-
this.traceInstanceAddress(reason === ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
|
|
69
|
-
? ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured
|
|
70
|
-
: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, reason);
|
|
71
|
-
throw error;
|
|
44
|
+
else {
|
|
45
|
+
this.traceInstanceAddress(submitResultFlowOutcome(result.status), ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, submitResultReason(result.status));
|
|
72
46
|
}
|
|
47
|
+
if (result.status === submission_result_1.ZLinkSubmitStatus.TargetNotFound ||
|
|
48
|
+
result.status === submission_result_1.ZLinkSubmitStatus.RouteNotConnected) {
|
|
49
|
+
this.options.resolver()?.invalidate?.(spotId);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
73
52
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
this.traceInstanceAddress(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (selected.kind === 'capacity') {
|
|
83
|
-
const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
|
|
84
|
-
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure);
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (isSpotRouteRefreshError(error)) {
|
|
55
|
+
this.options.resolver()?.invalidate?.(spotId);
|
|
56
|
+
}
|
|
57
|
+
const reason = addressedInstanceErrorReason(error);
|
|
58
|
+
this.traceInstanceAddress(reason === ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure
|
|
59
|
+
? ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured
|
|
60
|
+
: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, existing.routerChannelId, existing.stableType, existing.targetNodeRid, reason);
|
|
85
61
|
throw error;
|
|
86
62
|
}
|
|
87
|
-
if (selected.kind === 'unavailable') {
|
|
88
|
-
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget);
|
|
89
|
-
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
90
|
-
}
|
|
91
|
-
deadline.setOwnerTimeout(this.sendTimeoutMsForMesh(selected.meshName));
|
|
92
|
-
const encoded = this.encode(3 /* ZLinkChannelMessageKind.Command */, selected.meshName, message);
|
|
93
|
-
const sourceSpotId = call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
|
|
94
|
-
const mapped = mapSubmitResult(await (0, abort_1.awaitWithAbort)(selected.node.sendToMissingInstanceSpot(selected.target, encoded, BigInt(deadline.deadlineUnixMs), sourceSpotId, call.metadata), deadline.signal));
|
|
95
|
-
this.traceInstanceAddress(submitResultFlowOutcome(mapped.status), ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, selected.meshName, selected.target.stableType, selected.target.targetNodeRid, mapped.status === submission_result_1.ZLinkSubmitStatus.Submitted
|
|
96
|
-
? undefined
|
|
97
|
-
: submitResultReason(mapped.status));
|
|
98
|
-
return mapped;
|
|
99
63
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
64
|
+
if (!call.instanceSpot) {
|
|
65
|
+
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
66
|
+
}
|
|
67
|
+
const selected = this.selectMissingTarget(spotId, call);
|
|
68
|
+
if (selected.kind === 'unsupported') {
|
|
69
|
+
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget);
|
|
70
|
+
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
71
|
+
}
|
|
72
|
+
if (selected.kind === 'capacity') {
|
|
73
|
+
const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
|
|
74
|
+
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.Backpressure);
|
|
104
75
|
throw error;
|
|
105
76
|
}
|
|
106
|
-
|
|
107
|
-
|
|
77
|
+
if (selected.kind === 'unavailable') {
|
|
78
|
+
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, call.initialMeshName, call.instanceSpotType, undefined, ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget);
|
|
79
|
+
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
108
80
|
}
|
|
81
|
+
const encoded = this.encode(3 /* ZLinkChannelMessageKind.Command */, selected.meshName, message);
|
|
82
|
+
const sourceSpotId = call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
|
|
83
|
+
const mapped = (0, submission_result_1.classifySubmitResult)(await selected.node.sendToMissingInstanceSpot(selected.target, encoded, activationDeadlineUnixMs, sourceSpotId, call.metadata), 'Instance Spot submission');
|
|
84
|
+
this.traceInstanceAddress(submitResultFlowOutcome(mapped.status), ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send, spotId, message, selected.meshName, selected.target.stableType, selected.target.targetNodeRid, mapped.status === submission_result_1.ZLinkSubmitStatus.Submitted ? undefined : submitResultReason(mapped.status));
|
|
85
|
+
return mapped;
|
|
109
86
|
}
|
|
110
87
|
requestToSpotAddress(spotId, request, call) {
|
|
111
88
|
return (0, flow_context_1.runWithOutboundFlow)(this.options.dispatchErrors?.flow.flowCreationEnabled() ?? true, () => this.requestToSpotAddressScoped(spotId, request, call));
|
|
@@ -114,44 +91,32 @@ class ZLinkHostSpotAddressTransport {
|
|
|
114
91
|
const timeoutMs = call.timeoutMs ?? this.options.defaultRequestTimeoutMs;
|
|
115
92
|
const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
|
|
116
93
|
try {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const recovery = await this.recoverStaleInstanceRoute(spotId, call, deadline, error, existing);
|
|
130
|
-
if (recovery.kind === 'route') {
|
|
131
|
-
// Retry only after the resolver exposes a different route. The
|
|
132
|
-
// stale target cannot have admitted the application operation.
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
if (recovery.kind !== 'cold') {
|
|
136
|
-
this.reportInstanceRequestError(spotId, request, error, existing.routerChannelId, existing.targetNodeRid, existing.stableType, addressedInstanceErrorReason(error));
|
|
137
|
-
throw error;
|
|
138
|
-
}
|
|
139
|
-
// The logical authority is no longer Ready, so the Instance
|
|
140
|
-
// intent path below may submit the original operation once.
|
|
141
|
-
}
|
|
94
|
+
const existing = await this.resolveExisting(spotId, deadline.signal);
|
|
95
|
+
deadline.requireRemaining();
|
|
96
|
+
if (existing === undefined) {
|
|
97
|
+
return await this.requestToMissingInstance(spotId, request, call, deadline);
|
|
98
|
+
}
|
|
99
|
+
this.validateExisting(existing, call);
|
|
100
|
+
try {
|
|
101
|
+
return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (isSpotRouteRefreshError(error)) {
|
|
105
|
+
this.options.resolver()?.invalidate?.(spotId);
|
|
142
106
|
}
|
|
143
|
-
|
|
107
|
+
// Failover policy §4.4: SpotMoving is the owner's Ready owner-fence
|
|
108
|
+
// refusal, made before admission. With Instance intent, one authority
|
|
109
|
+
// read under the same deadline decides: Missing means Close released
|
|
110
|
+
// the incarnation, so the request activates a new one. Any other
|
|
111
|
+
// answer, and any message the owner admitted, keeps this terminal.
|
|
112
|
+
if (call.instanceSpot &&
|
|
113
|
+
isOwnerFenceRefusal(error) &&
|
|
114
|
+
(await this.resolveExisting(spotId, deadline.signal)) === undefined) {
|
|
115
|
+
deadline.requireRemaining();
|
|
144
116
|
return await this.requestToMissingInstance(spotId, request, call, deadline);
|
|
145
117
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
throw error;
|
|
149
|
-
// A placement node can finish cleanup before its stale native result
|
|
150
|
-
// reaches this process. Refresh authority and select again under the
|
|
151
|
-
// same end-to-end deadline; the old envelope was not admitted.
|
|
152
|
-
this.options.resolver()?.invalidate?.(spotId);
|
|
153
|
-
await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
|
|
154
|
-
}
|
|
118
|
+
this.reportInstanceRequestError(spotId, request, error, existing.routerChannelId, existing.targetNodeRid, existing.stableType, addressedInstanceErrorReason(error));
|
|
119
|
+
throw error;
|
|
155
120
|
}
|
|
156
121
|
}
|
|
157
122
|
catch (error) {
|
|
@@ -170,6 +135,7 @@ class ZLinkHostSpotAddressTransport {
|
|
|
170
135
|
async requestToExistingSpot(spotId, request, call, existing, deadline) {
|
|
171
136
|
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
|
|
172
137
|
const reply = await (0, abort_1.awaitWithAbort)(this.options.routed.requestToSpot(existing, request, {
|
|
138
|
+
instanceSpot: call.instanceSpot,
|
|
173
139
|
timeoutMs: deadline.requireRemaining(),
|
|
174
140
|
signal: deadline.signal,
|
|
175
141
|
metadata: call.metadata
|
|
@@ -201,17 +167,7 @@ class ZLinkHostSpotAddressTransport {
|
|
|
201
167
|
const table = this.options.completions(selected.meshName);
|
|
202
168
|
if (table === undefined)
|
|
203
169
|
throw new Error(`MeshNode '${selected.meshName}' completion table is not started.`);
|
|
204
|
-
|
|
205
|
-
try {
|
|
206
|
-
completionPromise = table.submit(() => selected.node.requestToMissingInstanceSpot(selected.target, encoded, deadlineUnixMs, call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId), call.metadata), deadline.signal);
|
|
207
|
-
}
|
|
208
|
-
catch (error) {
|
|
209
|
-
if (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
210
|
-
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound) {
|
|
211
|
-
PRE_ADMISSION_MISSING_INSTANCE_ERRORS.add(error);
|
|
212
|
-
}
|
|
213
|
-
throw error;
|
|
214
|
-
}
|
|
170
|
+
const completionPromise = table.submit(() => selected.node.requestToMissingInstanceSpot(selected.target, encoded, deadlineUnixMs, call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId), call.metadata), deadline.signal);
|
|
215
171
|
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, selected.meshName, selected.target.stableType, selected.target.targetNodeRid);
|
|
216
172
|
const completion = await (0, abort_1.awaitWithAbort)(completionPromise, deadline.signal);
|
|
217
173
|
try {
|
|
@@ -274,23 +230,6 @@ class ZLinkHostSpotAddressTransport {
|
|
|
274
230
|
throw error;
|
|
275
231
|
}
|
|
276
232
|
}
|
|
277
|
-
async recoverStaleInstanceRoute(spotId, call, deadline, error, staleRoute) {
|
|
278
|
-
if (!call.instanceSpot ||
|
|
279
|
-
!(error instanceof contracts_1.ZLinkFrameworkException) ||
|
|
280
|
-
!isInstanceRouteStaleError(error)) {
|
|
281
|
-
return { kind: 'fail' };
|
|
282
|
-
}
|
|
283
|
-
for (;;) {
|
|
284
|
-
deadline.requireRemaining();
|
|
285
|
-
const current = await this.resolveExisting(spotId, deadline.signal);
|
|
286
|
-
if (current === undefined)
|
|
287
|
-
return { kind: 'cold' };
|
|
288
|
-
if (!sameSpotRouteSnapshot(current, staleRoute)) {
|
|
289
|
-
return { kind: 'route', route: current };
|
|
290
|
-
}
|
|
291
|
-
await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
233
|
selectMissingTarget(spotId, call) {
|
|
295
234
|
const configuredMeshes = this.options.meshNames();
|
|
296
235
|
if (call.initialMeshName !== undefined &&
|
|
@@ -357,20 +296,10 @@ class ZLinkHostSpotAddressTransport {
|
|
|
357
296
|
return { kind: 'unsupported' };
|
|
358
297
|
return { kind: 'unavailable' };
|
|
359
298
|
}
|
|
360
|
-
sendTimeoutMsForMesh(meshName) {
|
|
361
|
-
return (this.options.sendTimeoutMsForMesh?.(meshName) ??
|
|
362
|
-
this.options.defaultSendTimeoutMs ??
|
|
363
|
-
this.options.defaultRequestTimeoutMs);
|
|
364
|
-
}
|
|
365
|
-
sendTimeoutMsForRouteChannel(routeChannelId) {
|
|
366
|
-
return (this.options.sendTimeoutMsForRouteChannel?.(routeChannelId) ??
|
|
367
|
-
this.options.defaultSendTimeoutMs ??
|
|
368
|
-
this.options.defaultRequestTimeoutMs);
|
|
369
|
-
}
|
|
370
299
|
validateExisting(target, call) {
|
|
371
300
|
if (!call.instanceSpot)
|
|
372
301
|
return;
|
|
373
|
-
if (target.spotKind !==
|
|
302
|
+
if (target.spotKind !== contracts_1.ZLinkSpotKind.Instance ||
|
|
374
303
|
(call.instanceSpotType !== undefined && target.stableType !== call.instanceSpotType)) {
|
|
375
304
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotTypeMismatch, `Spot '${String(target.spotId)}' is not the requested Instance Spot type.`);
|
|
376
305
|
}
|
|
@@ -383,23 +312,6 @@ class ZLinkHostSpotAddressTransport {
|
|
|
383
312
|
}
|
|
384
313
|
}
|
|
385
314
|
exports.ZLinkHostSpotAddressTransport = ZLinkHostSpotAddressTransport;
|
|
386
|
-
function isInstanceRouteStaleError(error) {
|
|
387
|
-
if (!(error instanceof contracts_1.ZLinkFrameworkException))
|
|
388
|
-
return false;
|
|
389
|
-
const kind = (0, framework_errors_internal_1.internalFrameworkErrorKind)(error);
|
|
390
|
-
// RequestTargetNotFound from an existing route is a pre-admission route
|
|
391
|
-
// lookup failure. A stale owner result is terminal for this application
|
|
392
|
-
// operation: the routed request may already have crossed the transport
|
|
393
|
-
// boundary, so refreshing the route and resubmitting it could execute the
|
|
394
|
-
// same operation twice. Instance cold activation is selected only when the
|
|
395
|
-
// authority resolver itself reports that the Ready route is absent.
|
|
396
|
-
if (kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound)
|
|
397
|
-
return true;
|
|
398
|
-
return false;
|
|
399
|
-
}
|
|
400
|
-
function isMissingInstanceRetryError(error) {
|
|
401
|
-
return (error instanceof contracts_1.ZLinkFrameworkException && PRE_ADMISSION_MISSING_INSTANCE_ERRORS.has(error));
|
|
402
|
-
}
|
|
403
315
|
function missingInstanceRequestFailure(result, nativeErrno) {
|
|
404
316
|
const canonical = (0, framework_errors_internal_1.isCanonicalWireReplyTerminal)(result, nativeErrno);
|
|
405
317
|
const wireKind = canonical
|
|
@@ -422,23 +334,6 @@ function missingInstanceRequestFailure(result, nativeErrno) {
|
|
|
422
334
|
: (wireKind ?? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed);
|
|
423
335
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `Instance Spot request failed with result ${result} and errno ${nativeErrno}.`);
|
|
424
336
|
}
|
|
425
|
-
function mapSubmitResult(result) {
|
|
426
|
-
switch (result) {
|
|
427
|
-
case runtime_values_1.SubmitResult.Ok:
|
|
428
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
429
|
-
case runtime_values_1.SubmitResult.Backpressured:
|
|
430
|
-
case runtime_values_1.SubmitResult.NotAdmitted:
|
|
431
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
432
|
-
case runtime_values_1.SubmitResult.NotFound:
|
|
433
|
-
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
434
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
435
|
-
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
436
|
-
case runtime_values_1.SubmitResult.Terminated:
|
|
437
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
|
|
438
|
-
default:
|
|
439
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, `Instance Spot submission failed with result ${result}.`);
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
337
|
function missingInstancePlacementCapacity(spotId, stableType) {
|
|
443
338
|
const type = stableType === undefined ? '' : ` of type '${stableType}'`;
|
|
444
339
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.PlacementCapacityExhausted, `No eligible Instance Spot placement target${type} is available for '${String(spotId)}'.`, true);
|
|
@@ -458,35 +353,9 @@ function isSpotRouteRefreshError(error) {
|
|
|
458
353
|
kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale ||
|
|
459
354
|
kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
|
|
460
355
|
}
|
|
461
|
-
function
|
|
462
|
-
return (
|
|
463
|
-
|
|
464
|
-
left.routerChannelId === right.routerChannelId &&
|
|
465
|
-
left.spotKind === right.spotKind &&
|
|
466
|
-
left.stableType === right.stableType &&
|
|
467
|
-
left.targetSpotGeneration === right.targetSpotGeneration &&
|
|
468
|
-
left.targetNodeGeneration === right.targetNodeGeneration &&
|
|
469
|
-
left.authorityOwnerGeneration === right.authorityOwnerGeneration &&
|
|
470
|
-
left.targetOwnerId === right.targetOwnerId &&
|
|
471
|
-
left.ownerLeaseGeneration === right.ownerLeaseGeneration &&
|
|
472
|
-
left.authorityStoreVersion === right.authorityStoreVersion);
|
|
473
|
-
}
|
|
474
|
-
function waitForSpotRouteRefresh(delayMs, signal) {
|
|
475
|
-
return new Promise((resolve, reject) => {
|
|
476
|
-
const finish = () => {
|
|
477
|
-
signal.removeEventListener('abort', abort);
|
|
478
|
-
resolve();
|
|
479
|
-
};
|
|
480
|
-
const abort = () => {
|
|
481
|
-
clearTimeout(timer);
|
|
482
|
-
signal.removeEventListener('abort', abort);
|
|
483
|
-
reject(signal.reason);
|
|
484
|
-
};
|
|
485
|
-
const timer = setTimeout(finish, delayMs);
|
|
486
|
-
signal.addEventListener('abort', abort, { once: true });
|
|
487
|
-
if (signal.aborted)
|
|
488
|
-
abort();
|
|
489
|
-
});
|
|
356
|
+
function isOwnerFenceRefusal(error) {
|
|
357
|
+
return (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
358
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving);
|
|
490
359
|
}
|
|
491
360
|
function submitResultReason(status) {
|
|
492
361
|
switch (status) {
|
|
@@ -538,17 +407,10 @@ function addressedInstanceErrorReason(error) {
|
|
|
538
407
|
}
|
|
539
408
|
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
|
|
540
409
|
}
|
|
541
|
-
function initialSendTimeoutMs(options, call) {
|
|
542
|
-
return call.initialMeshName === undefined
|
|
543
|
-
? (options.defaultSendTimeoutMs ?? options.defaultRequestTimeoutMs)
|
|
544
|
-
: (options.sendTimeoutMsForMesh?.(call.initialMeshName) ??
|
|
545
|
-
options.defaultSendTimeoutMs ??
|
|
546
|
-
options.defaultRequestTimeoutMs);
|
|
547
|
-
}
|
|
548
410
|
function createSpotAddressDeadline(timeoutMs, parent) {
|
|
549
411
|
const startedAtMs = performance.now();
|
|
550
412
|
const startedAtUnixMs = Date.now();
|
|
551
|
-
|
|
413
|
+
const deadlineMs = startedAtMs + Math.max(0, timeoutMs);
|
|
552
414
|
const controller = new AbortController();
|
|
553
415
|
let expired = false;
|
|
554
416
|
let timeout;
|
|
@@ -577,10 +439,6 @@ function createSpotAddressDeadline(timeoutMs, parent) {
|
|
|
577
439
|
return Math.round(startedAtUnixMs + (deadlineMs - startedAtMs));
|
|
578
440
|
},
|
|
579
441
|
signal: controller.signal,
|
|
580
|
-
setOwnerTimeout(ownerTimeoutMs) {
|
|
581
|
-
deadlineMs = startedAtMs + Math.max(0, ownerTimeoutMs);
|
|
582
|
-
arm();
|
|
583
|
-
},
|
|
584
442
|
requireRemaining() {
|
|
585
443
|
const remainingMs = deadlineMs - performance.now();
|
|
586
444
|
if (remainingMs <= 0) {
|
|
@@ -34,5 +34,5 @@ export interface ZLinkSpotNodeRuntimeOptionsFactoryOptions {
|
|
|
34
34
|
export declare class ZLinkSpotNodeRuntimeOptionsFactory {
|
|
35
35
|
private readonly options;
|
|
36
36
|
constructor(options: ZLinkSpotNodeRuntimeOptionsFactoryOptions);
|
|
37
|
-
create(): ZLinkSpotNodeRuntimeManagerOptions
|
|
37
|
+
create(): Omit<ZLinkSpotNodeRuntimeManagerOptions, 'errorSink'>;
|
|
38
38
|
}
|
|
@@ -8,16 +8,17 @@ class ZLinkSpotNodeRuntimeOptionsFactory {
|
|
|
8
8
|
this.options = options;
|
|
9
9
|
}
|
|
10
10
|
create() {
|
|
11
|
+
const spotRouterChannelIdForMesh = this.options.meshRouters.spotRouterChannelIdByMesh();
|
|
11
12
|
return {
|
|
12
13
|
registration: this.options.registration,
|
|
13
14
|
primaryMeshName: this.options.meshRouters.primaryMeshName(),
|
|
14
15
|
backendAdapterFactory: this.options.backendAdapterFactory,
|
|
15
16
|
context: this.options.context,
|
|
16
|
-
channelClient: new channels_1.DefaultZLinkChannelClient(this.options.registration, this.options.channelTransport),
|
|
17
|
+
channelClient: new channels_1.DefaultZLinkChannelClient(this.options.registration, this.options.channelTransport, this.options.routeTransport, spotRouterChannelIdForMesh),
|
|
17
18
|
fanoutClient: new channels_1.DefaultZLinkFanoutClient(this.options.registration, this.options.channelTransport),
|
|
18
19
|
spotPublisherClient: new channels_1.DefaultZLinkSpotPublisherClient(this.options.registration, this.options.spotPublisherTransport),
|
|
19
20
|
routedTransport: this.options.routeTransport,
|
|
20
|
-
spotRouterChannelIdForMesh
|
|
21
|
+
spotRouterChannelIdForMesh,
|
|
21
22
|
providerResolver: this.options.providerResolver,
|
|
22
23
|
dispatchErrors: this.options.dispatchErrors,
|
|
23
24
|
runtimeEventPublisher: this.options.runtimeEventPublisher,
|
|
@@ -22,15 +22,9 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
|
|
|
22
22
|
readonly actorManager: () => DefaultZLinkActorManager | undefined;
|
|
23
23
|
readonly locationLifecycle: () => ZLinkLocationLifecycle | undefined;
|
|
24
24
|
readonly releaseInstanceAuthority: (meshName: string, spotId: string, objectGeneration: bigint) => Promise<void>;
|
|
25
|
-
readonly beginInstanceIdleClosingAuthority: (meshName: string, spotId: string, onCommitted: () => void) => Promise<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
readonly beginInstanceClosingAuthority: (meshName: string, spotId: string, onCommitted: () => void) => Promise<{
|
|
29
|
-
release(): Promise<void>;
|
|
30
|
-
} | undefined>;
|
|
31
|
-
readonly beginUserClosingAuthority: (meshName: string, spotId: string, objectGeneration: bigint, onCommitted: () => void) => Promise<{
|
|
32
|
-
release(): Promise<void>;
|
|
33
|
-
} | undefined>;
|
|
25
|
+
readonly beginInstanceIdleClosingAuthority: (meshName: string, spotId: string, onCommitted: () => void) => Promise<import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined>;
|
|
26
|
+
readonly beginInstanceClosingAuthority: (meshName: string, spotId: string, onCommitted: () => void) => Promise<import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined>;
|
|
27
|
+
readonly beginUserClosingAuthority: (meshName: string, spotId: string, objectGeneration: bigint, onCommitted: () => void) => Promise<import('../locations/spot-location-claims').ZLinkInstanceClosingAuthority | undefined>;
|
|
34
28
|
readonly createLocationSpotRouteResolver: () => ZLinkSpotRouteResolver | undefined;
|
|
35
29
|
readonly boundSessionRelay: ZLinkBoundSessionRelay;
|
|
36
30
|
readonly actorHandoff: ZLinkActorHandoffCoordinator;
|
|
@@ -39,7 +33,7 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
|
|
|
39
33
|
readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
|
|
40
34
|
readonly metrics: import('../diagnostics').ZLinkRuntimeMetrics;
|
|
41
35
|
readonly admission: ZLinkRuntimeAdmissionGate;
|
|
42
|
-
readonly
|
|
36
|
+
readonly statefulExecution: NonNullable<ZLinkSpotManagerOptions['statefulExecution']>;
|
|
43
37
|
}
|
|
44
38
|
export declare class ZLinkSpotRuntimeOptionsFactory {
|
|
45
39
|
private readonly options;
|
|
@@ -11,6 +11,7 @@ class ZLinkSpotRuntimeOptionsFactory {
|
|
|
11
11
|
this.options = options;
|
|
12
12
|
}
|
|
13
13
|
create(actorTransferRuntime) {
|
|
14
|
+
const spotRouterChannelIdForMesh = this.options.meshRouters.spotRouterChannelIdByMesh();
|
|
14
15
|
return {
|
|
15
16
|
nodeRid: undefined,
|
|
16
17
|
nodeRidProvider: (meshName) => this.meshNodeRoutingId(meshName),
|
|
@@ -38,25 +39,64 @@ class ZLinkSpotRuntimeOptionsFactory {
|
|
|
38
39
|
}
|
|
39
40
|
await runtime.dispatchEntryActorJoin(meshName, actor, handoffBacklog);
|
|
40
41
|
},
|
|
41
|
-
|
|
42
|
+
executeEntryActor: (meshName, actorId, operation) => {
|
|
43
|
+
const runtime = this.options.spotNodeRuntime();
|
|
44
|
+
if (runtime === undefined) {
|
|
45
|
+
throw new configuration_1.ZLinkConfigurationException('Entry Spot Actor completion requires the MeshNode runtime.');
|
|
46
|
+
}
|
|
47
|
+
return runtime.executeEntryActor(meshName, actorId, operation);
|
|
48
|
+
},
|
|
49
|
+
channelClient: new channels_1.DefaultZLinkChannelClient(this.options.registration, this.options.channelTransport, this.options.routeTransport, spotRouterChannelIdForMesh),
|
|
42
50
|
fanoutClient: new channels_1.DefaultZLinkFanoutClient(this.options.registration, this.options.channelTransport),
|
|
43
51
|
spotPublisherClient: new channels_1.DefaultZLinkSpotPublisherClient(this.options.registration, this.options.spotPublisherTransport),
|
|
44
52
|
routedTransport: this.options.routeTransport,
|
|
45
53
|
addressTransport: this.options.addressTransport,
|
|
46
|
-
spotRouterChannelIdForMesh
|
|
47
|
-
channelMeshNameForChannel: (channelName) => {
|
|
48
|
-
const matches = [...this.options.registration.spotNodes.entries()]
|
|
49
|
-
.filter(([, node]) => Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, channelName))
|
|
50
|
-
.map(([meshName]) => meshName);
|
|
51
|
-
return matches.length === 1 ? matches[0] : undefined;
|
|
52
|
-
},
|
|
54
|
+
spotRouterChannelIdForMesh,
|
|
53
55
|
messageSerializers: this.options.registration.messageSerializers,
|
|
54
56
|
runtimeEventPublisher: this.options.runtimeEventPublisher,
|
|
55
57
|
detachedTaskRunner: this.options.detachedTaskRunner,
|
|
56
58
|
locationLifecycle: this.options.locationLifecycle(),
|
|
57
59
|
releaseInstanceAuthority: (meshName, spotId, objectGeneration) => this.options.releaseInstanceAuthority(meshName, String(spotId), objectGeneration),
|
|
58
60
|
beginInstanceIdleClosingAuthority: (meshName, spotId, onCommitted) => this.options.beginInstanceIdleClosingAuthority(meshName, String(spotId), onCommitted),
|
|
59
|
-
beginInstanceClosingAuthority: (meshName, spotId, onCommitted) =>
|
|
61
|
+
beginInstanceClosingAuthority: async (meshName, spotId, onCommitted, objectGeneration) => {
|
|
62
|
+
const authority = await this.options.beginInstanceClosingAuthority(meshName, String(spotId), onCommitted);
|
|
63
|
+
if (authority === undefined)
|
|
64
|
+
return undefined;
|
|
65
|
+
// A Close without Reincarnate ends this incarnation. The Instance authority
|
|
66
|
+
// release also forgets the node's Ready projection, so a request on a cached
|
|
67
|
+
// Ready route is refused instead of rematerializing the closed generation.
|
|
68
|
+
const release = () => this.options.releaseInstanceAuthority(meshName, String(spotId), objectGeneration);
|
|
69
|
+
if (authority.reincarnate === undefined)
|
|
70
|
+
return { release };
|
|
71
|
+
return {
|
|
72
|
+
release,
|
|
73
|
+
reincarnate: async (initialize) => {
|
|
74
|
+
const current = await authority.reincarnate(initialize);
|
|
75
|
+
const node = this.options.spotNodeRuntime()?.meshNode(meshName);
|
|
76
|
+
const route = {
|
|
77
|
+
targetSpotId: String(spotId),
|
|
78
|
+
targetNodeRid: String(current.allocation.descriptor.rid),
|
|
79
|
+
targetNodeGeneration: current.allocation.descriptorLifecycleGeneration,
|
|
80
|
+
objectGeneration: current.objectGeneration,
|
|
81
|
+
authorityOwnerGeneration: current.authorityOwnerGeneration,
|
|
82
|
+
ownerId: current.ownerId,
|
|
83
|
+
leaseGeneration: current.ownerLeaseGeneration,
|
|
84
|
+
storeVersion: current.storeVersion.value
|
|
85
|
+
};
|
|
86
|
+
node?.restoreSpotAuthority?.(String(spotId), 'instance_spot', current.stableType, current.objectGeneration, current.authorityOwnerGeneration);
|
|
87
|
+
node?.registerInstanceIntent?.(current.stableType, route);
|
|
88
|
+
node?.rememberSpotRoute?.({
|
|
89
|
+
spot: { spotId: String(spotId), generation: current.objectGeneration },
|
|
90
|
+
targetNodeRid: route.targetNodeRid,
|
|
91
|
+
targetNodeGeneration: route.targetNodeGeneration,
|
|
92
|
+
authorityOwnerGeneration: route.authorityOwnerGeneration,
|
|
93
|
+
ownerLeaseGeneration: route.leaseGeneration,
|
|
94
|
+
storeVersion: route.storeVersion
|
|
95
|
+
});
|
|
96
|
+
return current;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
},
|
|
60
100
|
beginUserClosingAuthority: (meshName, spotId, objectGeneration, onCommitted) => this.options.beginUserClosingAuthority(meshName, String(spotId), objectGeneration, onCommitted),
|
|
61
101
|
instanceSpotApplicationTargetProvider: (meshName, spotId) => this.options
|
|
62
102
|
.spotNodeRuntime()
|
|
@@ -137,16 +177,12 @@ class ZLinkSpotRuntimeOptionsFactory {
|
|
|
137
177
|
return (registration?.options?.relocationCoordinationMode ??
|
|
138
178
|
contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged);
|
|
139
179
|
},
|
|
140
|
-
actorBindingGenerationObserver: (actorId, generation) => this.options
|
|
141
|
-
.actorManager()
|
|
142
|
-
?.getState(actorId)
|
|
143
|
-
?.setBoundSessionBindingGeneration(generation),
|
|
144
180
|
actorTransferRuntime,
|
|
145
181
|
boundSessionRuntime: this.options.boundSessionRelay.boundSessions,
|
|
146
182
|
actorHandoffRuntime: this.options.actorHandoff,
|
|
147
183
|
metrics: this.options.metrics,
|
|
148
184
|
admission: this.options.admission,
|
|
149
|
-
|
|
185
|
+
statefulExecution: this.options.statefulExecution,
|
|
150
186
|
closeErrorSink: this.options.runtimeOrPreStartErrorSink,
|
|
151
187
|
dispatchErrors: this.options.dispatchErrorReporter(this.options.runtimeOrPreStartErrorSink)
|
|
152
188
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type RoutingId, type SpotRef, type ZLinkSpotCreateResult } from '../../contracts';
|
|
2
|
+
import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
|
|
3
|
+
import type { ServiceDirectSpotRouteFence, ServiceUserSpotCloseRecord, ServiceUserSpotCreateRecord } from '../foundation/service-stateful-wire-codec';
|
|
2
4
|
import type { ZLinkAuthoritySnapshot, ZLinkLocationOwnerToken } from '../locations/internal-location-contracts';
|
|
3
5
|
import type { ZLinkAuthorityStore, ZLinkObjectCreationStore } from '../locations/internal-store-contracts';
|
|
4
6
|
import type { ZLinkLocalSpotCreateResult } from '../spots/spot-manager-internal-contracts';
|
|
5
|
-
import type { ServiceUserSpotOperationResult } from '../foundation/service-stateful-runtime';
|
|
6
|
-
import type { ServiceUserSpotCloseRecord, ServiceUserSpotCreateRecord, ServiceDirectSpotRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
7
7
|
export interface ZLinkUserSpotCreationCoordinatorOptions {
|
|
8
8
|
readonly store: ZLinkObjectCreationStore & ZLinkAuthorityStore;
|
|
9
9
|
readonly target: (request: Pick<ZLinkUserSpotCreationRequest, 'meshName' | 'stableType'>, signal?: AbortSignal, excludedNodeRids?: ReadonlySet<string>) => Promise<{
|