@zlink-systems/framework 0.25.0 → 0.27.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/Channels/IZLinkFanoutClient.d.ts +0 -6
- 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/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 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- 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/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -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 +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- 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 +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- 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 +85 -123
- 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 +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- 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/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- 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 +7 -1
- package/dist/runtime/admission.js +11 -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 +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- 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-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -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 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- 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 +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- 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 +133 -81
- 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.js +3 -2
- 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 +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- 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/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- 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 +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- 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.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -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 +23 -8
- 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-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- 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 -19
- 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 +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- 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 +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- 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 +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- 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 +19 -14
- package/dist/runtime/host/index.js +234 -175
- 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 +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- 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 +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- 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 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- 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 +79 -27
- 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 +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- 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 +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- 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 +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- 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 +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- 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 +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- 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 +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- 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 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- 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 +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- 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 +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- 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/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -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 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- 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/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- 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 +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- 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 +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- 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 +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- 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 +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- 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 +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- 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/listener-records.ts +21 -0
- 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 +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -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 +30 -19
- 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-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- 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 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- 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 +57 -147
- 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 +266 -418
- 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 +408 -312
- 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 +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- 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 +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- 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 +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- 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 +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- 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 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- 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 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- 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 +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- 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/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- 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/deferred-join-accepted-journal.ts +0 -1346
- 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 {
|
|
@@ -37,7 +37,6 @@ export declare class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTr
|
|
|
37
37
|
private reportInstanceRequestError;
|
|
38
38
|
private traceInstanceAddress;
|
|
39
39
|
private resolveExisting;
|
|
40
|
-
private recoverStaleInstanceRoute;
|
|
41
40
|
private selectMissingTarget;
|
|
42
41
|
private sendTimeoutMsForMesh;
|
|
43
42
|
private sendTimeoutMsForRouteChannel;
|
|
@@ -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;
|
|
@@ -44,6 +39,7 @@ class ZLinkHostSpotAddressTransport {
|
|
|
44
39
|
deadline.setOwnerTimeout(this.sendTimeoutMsForRouteChannel(existing.routerChannelId));
|
|
45
40
|
try {
|
|
46
41
|
const result = await (0, abort_1.awaitWithAbort)(this.options.routed.sendToSpot(existing, message, {
|
|
42
|
+
instanceSpot: call.instanceSpot,
|
|
47
43
|
timeoutMs: deadline.requireRemaining(),
|
|
48
44
|
signal: deadline.signal,
|
|
49
45
|
metadata: call.metadata
|
|
@@ -91,7 +87,7 @@ class ZLinkHostSpotAddressTransport {
|
|
|
91
87
|
deadline.setOwnerTimeout(this.sendTimeoutMsForMesh(selected.meshName));
|
|
92
88
|
const encoded = this.encode(3 /* ZLinkChannelMessageKind.Command */, selected.meshName, message);
|
|
93
89
|
const sourceSpotId = call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
|
|
94
|
-
const mapped =
|
|
90
|
+
const mapped = (0, submission_result_1.classifySubmitResult)(await (0, abort_1.awaitWithAbort)(selected.node.sendToMissingInstanceSpot(selected.target, encoded, BigInt(deadline.deadlineUnixMs), sourceSpotId, call.metadata), deadline.signal), 'Instance Spot submission');
|
|
95
91
|
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
92
|
? undefined
|
|
97
93
|
: submitResultReason(mapped.status));
|
|
@@ -114,44 +110,32 @@ class ZLinkHostSpotAddressTransport {
|
|
|
114
110
|
const timeoutMs = call.timeoutMs ?? this.options.defaultRequestTimeoutMs;
|
|
115
111
|
const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
|
|
116
112
|
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
|
-
}
|
|
113
|
+
const existing = await this.resolveExisting(spotId, deadline.signal);
|
|
114
|
+
deadline.requireRemaining();
|
|
115
|
+
if (existing === undefined) {
|
|
116
|
+
return await this.requestToMissingInstance(spotId, request, call, deadline);
|
|
117
|
+
}
|
|
118
|
+
this.validateExisting(existing, call);
|
|
119
|
+
try {
|
|
120
|
+
return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (isSpotRouteRefreshError(error)) {
|
|
124
|
+
this.options.resolver()?.invalidate?.(spotId);
|
|
142
125
|
}
|
|
143
|
-
|
|
126
|
+
// Failover policy §4.4: SpotMoving is the owner's Ready owner-fence
|
|
127
|
+
// refusal, made before admission. With Instance intent, one authority
|
|
128
|
+
// read under the same deadline decides: Missing means Close released
|
|
129
|
+
// the incarnation, so the request activates a new one. Any other
|
|
130
|
+
// answer, and any message the owner admitted, keeps this terminal.
|
|
131
|
+
if (call.instanceSpot &&
|
|
132
|
+
isOwnerFenceRefusal(error) &&
|
|
133
|
+
(await this.resolveExisting(spotId, deadline.signal)) === undefined) {
|
|
134
|
+
deadline.requireRemaining();
|
|
144
135
|
return await this.requestToMissingInstance(spotId, request, call, deadline);
|
|
145
136
|
}
|
|
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
|
-
}
|
|
137
|
+
this.reportInstanceRequestError(spotId, request, error, existing.routerChannelId, existing.targetNodeRid, existing.stableType, addressedInstanceErrorReason(error));
|
|
138
|
+
throw error;
|
|
155
139
|
}
|
|
156
140
|
}
|
|
157
141
|
catch (error) {
|
|
@@ -170,6 +154,7 @@ class ZLinkHostSpotAddressTransport {
|
|
|
170
154
|
async requestToExistingSpot(spotId, request, call, existing, deadline) {
|
|
171
155
|
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, existing.routerChannelId, existing.stableType, existing.targetNodeRid);
|
|
172
156
|
const reply = await (0, abort_1.awaitWithAbort)(this.options.routed.requestToSpot(existing, request, {
|
|
157
|
+
instanceSpot: call.instanceSpot,
|
|
173
158
|
timeoutMs: deadline.requireRemaining(),
|
|
174
159
|
signal: deadline.signal,
|
|
175
160
|
metadata: call.metadata
|
|
@@ -201,17 +186,7 @@ class ZLinkHostSpotAddressTransport {
|
|
|
201
186
|
const table = this.options.completions(selected.meshName);
|
|
202
187
|
if (table === undefined)
|
|
203
188
|
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
|
-
}
|
|
189
|
+
const completionPromise = table.submit(() => selected.node.requestToMissingInstanceSpot(selected.target, encoded, deadlineUnixMs, call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId), call.metadata), deadline.signal);
|
|
215
190
|
this.traceInstanceAddress(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent, ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request, spotId, request, selected.meshName, selected.target.stableType, selected.target.targetNodeRid);
|
|
216
191
|
const completion = await (0, abort_1.awaitWithAbort)(completionPromise, deadline.signal);
|
|
217
192
|
try {
|
|
@@ -274,23 +249,6 @@ class ZLinkHostSpotAddressTransport {
|
|
|
274
249
|
throw error;
|
|
275
250
|
}
|
|
276
251
|
}
|
|
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
252
|
selectMissingTarget(spotId, call) {
|
|
295
253
|
const configuredMeshes = this.options.meshNames();
|
|
296
254
|
if (call.initialMeshName !== undefined &&
|
|
@@ -370,7 +328,7 @@ class ZLinkHostSpotAddressTransport {
|
|
|
370
328
|
validateExisting(target, call) {
|
|
371
329
|
if (!call.instanceSpot)
|
|
372
330
|
return;
|
|
373
|
-
if (target.spotKind !==
|
|
331
|
+
if (target.spotKind !== contracts_1.ZLinkSpotKind.Instance ||
|
|
374
332
|
(call.instanceSpotType !== undefined && target.stableType !== call.instanceSpotType)) {
|
|
375
333
|
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
334
|
}
|
|
@@ -383,23 +341,6 @@ class ZLinkHostSpotAddressTransport {
|
|
|
383
341
|
}
|
|
384
342
|
}
|
|
385
343
|
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
344
|
function missingInstanceRequestFailure(result, nativeErrno) {
|
|
404
345
|
const canonical = (0, framework_errors_internal_1.isCanonicalWireReplyTerminal)(result, nativeErrno);
|
|
405
346
|
const wireKind = canonical
|
|
@@ -422,23 +363,6 @@ function missingInstanceRequestFailure(result, nativeErrno) {
|
|
|
422
363
|
: (wireKind ?? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed);
|
|
423
364
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `Instance Spot request failed with result ${result} and errno ${nativeErrno}.`);
|
|
424
365
|
}
|
|
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
366
|
function missingInstancePlacementCapacity(spotId, stableType) {
|
|
443
367
|
const type = stableType === undefined ? '' : ` of type '${stableType}'`;
|
|
444
368
|
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 +382,9 @@ function isSpotRouteRefreshError(error) {
|
|
|
458
382
|
kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale ||
|
|
459
383
|
kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
|
|
460
384
|
}
|
|
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
|
-
});
|
|
385
|
+
function isOwnerFenceRefusal(error) {
|
|
386
|
+
return (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
387
|
+
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving);
|
|
490
388
|
}
|
|
491
389
|
function submitResultReason(status) {
|
|
492
390
|
switch (status) {
|
|
@@ -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,12 +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) => Promise<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
readonly beginInstanceClosingAuthority: (meshName: string, spotId: string) => Promise<{
|
|
29
|
-
restoreReady(): Promise<void>;
|
|
30
|
-
} | 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>;
|
|
31
28
|
readonly createLocationSpotRouteResolver: () => ZLinkSpotRouteResolver | undefined;
|
|
32
29
|
readonly boundSessionRelay: ZLinkBoundSessionRelay;
|
|
33
30
|
readonly actorHandoff: ZLinkActorHandoffCoordinator;
|
|
@@ -36,7 +33,7 @@ export interface ZLinkSpotRuntimeOptionsFactoryOptions {
|
|
|
36
33
|
readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
|
|
37
34
|
readonly metrics: import('../diagnostics').ZLinkRuntimeMetrics;
|
|
38
35
|
readonly admission: ZLinkRuntimeAdmissionGate;
|
|
39
|
-
readonly
|
|
36
|
+
readonly statefulExecution: NonNullable<ZLinkSpotManagerOptions['statefulExecution']>;
|
|
40
37
|
}
|
|
41
38
|
export declare class ZLinkSpotRuntimeOptionsFactory {
|
|
42
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,65 @@ 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
|
-
beginInstanceIdleClosingAuthority: (meshName, spotId) => this.options.beginInstanceIdleClosingAuthority(meshName, String(spotId)),
|
|
59
|
-
beginInstanceClosingAuthority: (meshName, spotId) =>
|
|
60
|
+
beginInstanceIdleClosingAuthority: (meshName, spotId, onCommitted) => this.options.beginInstanceIdleClosingAuthority(meshName, String(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
|
+
},
|
|
100
|
+
beginUserClosingAuthority: (meshName, spotId, objectGeneration, onCommitted) => this.options.beginUserClosingAuthority(meshName, String(spotId), objectGeneration, onCommitted),
|
|
60
101
|
instanceSpotApplicationTargetProvider: (meshName, spotId) => this.options
|
|
61
102
|
.spotNodeRuntime()
|
|
62
103
|
?.meshNode(meshName)
|
|
@@ -85,12 +126,6 @@ class ZLinkSpotRuntimeOptionsFactory {
|
|
|
85
126
|
}
|
|
86
127
|
};
|
|
87
128
|
},
|
|
88
|
-
createReceived: () => {
|
|
89
|
-
const runtime = this.options.spotNodeRuntime();
|
|
90
|
-
if (runtime === undefined)
|
|
91
|
-
throw new Error('Spot backend runtime is not initialized.');
|
|
92
|
-
return runtime.createReceived();
|
|
93
|
-
},
|
|
94
129
|
createTopicMessage: () => {
|
|
95
130
|
const runtime = this.options.spotNodeRuntime();
|
|
96
131
|
if (runtime === undefined)
|
|
@@ -142,16 +177,13 @@ class ZLinkSpotRuntimeOptionsFactory {
|
|
|
142
177
|
return (registration?.options?.relocationCoordinationMode ??
|
|
143
178
|
contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged);
|
|
144
179
|
},
|
|
145
|
-
actorBindingGenerationObserver: (actorId, generation) => this.options
|
|
146
|
-
.actorManager()
|
|
147
|
-
?.getState(actorId)
|
|
148
|
-
?.setBoundSessionBindingGeneration(generation),
|
|
149
180
|
actorTransferRuntime,
|
|
150
181
|
boundSessionRuntime: this.options.boundSessionRelay.boundSessions,
|
|
151
182
|
actorHandoffRuntime: this.options.actorHandoff,
|
|
152
183
|
metrics: this.options.metrics,
|
|
153
184
|
admission: this.options.admission,
|
|
154
|
-
|
|
185
|
+
statefulExecution: this.options.statefulExecution,
|
|
186
|
+
closeErrorSink: this.options.runtimeOrPreStartErrorSink,
|
|
155
187
|
dispatchErrors: this.options.dispatchErrorReporter(this.options.runtimeOrPreStartErrorSink)
|
|
156
188
|
};
|
|
157
189
|
}
|
|
@@ -78,7 +78,7 @@ class ZLinkStatefulAuthorityRouteRuntime {
|
|
|
78
78
|
const expectedSpotRoute = previousRoute?.spotRoute ?? null;
|
|
79
79
|
const expectedInstanceRoute = previousRoute?.kind === 'instance_spot' ? previousRoute.instanceRoute : null;
|
|
80
80
|
sink.rememberSpotRoute(route.spotRoute, expectedSpotRoute);
|
|
81
|
-
if (route.kind === 'instance_spot') {
|
|
81
|
+
if (route.kind === 'instance_spot' && !route.closing) {
|
|
82
82
|
const status = sink.status();
|
|
83
83
|
if ((0, routing_id_1.routingIdsEqual)(status.routingId, route.instanceRoute.targetNodeRid) &&
|
|
84
84
|
status.lifecycleGeneration === route.instanceRoute.targetNodeGeneration) {
|
|
@@ -346,7 +346,9 @@ function pendingInstanceActivation(snapshot) {
|
|
|
346
346
|
}
|
|
347
347
|
function authorityRoute(snapshot) {
|
|
348
348
|
const allocation = snapshot.allocation;
|
|
349
|
-
const
|
|
349
|
+
const payload = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(snapshot.payload);
|
|
350
|
+
const ready = (0, service_authority_payload_codec_1.decodeServiceReadySpotAuthority)(payload);
|
|
351
|
+
const decoded = ready ?? (0, service_authority_payload_codec_1.decodeServiceClosingSpotAuthority)(payload);
|
|
350
352
|
if (allocation.state !== 'active' ||
|
|
351
353
|
allocation.objectKind === 'actor' ||
|
|
352
354
|
allocation.descriptor.meshName.length === 0 ||
|
|
@@ -372,6 +374,7 @@ function authorityRoute(snapshot) {
|
|
|
372
374
|
};
|
|
373
375
|
return {
|
|
374
376
|
kind: allocation.objectKind,
|
|
377
|
+
closing: ready === undefined,
|
|
375
378
|
stableType: allocation.stableType,
|
|
376
379
|
meshName: allocation.descriptor.meshName,
|
|
377
380
|
spotRoute,
|
|
@@ -397,6 +400,7 @@ function sameAppliedRoute(left, right) {
|
|
|
397
400
|
if (right === undefined)
|
|
398
401
|
return false;
|
|
399
402
|
return (left.kind === right.kind &&
|
|
403
|
+
left.closing === right.closing &&
|
|
400
404
|
left.stableType === right.stableType &&
|
|
401
405
|
left.meshName === right.meshName &&
|
|
402
406
|
left.instanceRoute.targetNodeRid === right.instanceRoute.targetNodeRid &&
|
|
@@ -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<{
|
|
@@ -53,15 +53,23 @@ export declare class ZLinkUserSpotCreationCoordinator {
|
|
|
53
53
|
readonly nodeRid: RoutingId;
|
|
54
54
|
readonly isLocal: boolean;
|
|
55
55
|
}, authority: ZLinkAuthoritySnapshot, signal: AbortSignal) => Promise<ZLinkLocalSpotCreateResult>, discard?: (signal?: AbortSignal) => Promise<void>): Promise<ZLinkUserSpotCreationResult>;
|
|
56
|
-
close(spot: SpotRef, closeOwner: (current: SpotRef,
|
|
56
|
+
close(spot: SpotRef, closeOwner: (current: SpotRef, beginAuthority: (onCommitted: () => void) => Promise<{
|
|
57
|
+
release(): Promise<void>;
|
|
58
|
+
}>) => Promise<boolean>, signal?: AbortSignal): Promise<boolean>;
|
|
59
|
+
/** Commits Closing for the owner's own incarnation when its context requests Close. */
|
|
60
|
+
beginOwnerClose(spot: SpotRef, onCommitted: () => void): Promise<{
|
|
61
|
+
release(): Promise<void>;
|
|
62
|
+
} | undefined>;
|
|
57
63
|
resolveCloseTarget(spot: SpotRef, signal?: AbortSignal): Promise<ZLinkUserSpotCloseTarget | undefined>;
|
|
58
64
|
handleRemoteCreate(record: ServiceUserSpotCreateRecord, materialize: (requestPayload: Uint8Array, authority: ZLinkAuthoritySnapshot, signal: AbortSignal) => Promise<ZLinkLocalSpotCreateResult>, discard?: (signal?: AbortSignal) => Promise<void>, signal?: AbortSignal): Promise<ZLinkUserSpotCreationResult>;
|
|
59
65
|
private handleLocalCreate;
|
|
60
66
|
private materializeRemoteCreate;
|
|
61
|
-
handleRemoteClose(record: ServiceUserSpotCloseRecord, closeOwner: (spot: SpotRef,
|
|
67
|
+
handleRemoteClose(record: ServiceUserSpotCloseRecord, closeOwner: (spot: SpotRef, beginAuthority: (onCommitted: () => void) => Promise<{
|
|
68
|
+
release(): Promise<void>;
|
|
69
|
+
}>, signal?: AbortSignal) => Promise<boolean>, signal?: AbortSignal, canResume?: (spot: SpotRef) => boolean): Promise<boolean>;
|
|
70
|
+
private commitCloseAuthority;
|
|
62
71
|
forgetReadyRoute(spotId: RoutingId, snapshot: ZLinkAuthoritySnapshot): void;
|
|
63
72
|
private beginClosing;
|
|
64
|
-
private restoreReady;
|
|
65
73
|
private awaitReady;
|
|
66
74
|
private remoteCreate;
|
|
67
75
|
}
|