@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,65 +1,76 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZLinkUserSpotCreationCoordinator = exports.ZLinkHostSpotAddressTransport = exports.ZLinkRelocationStateIncompatibleError = exports.ZLinkRouteMeshRuntimeCoordinator = exports.ZLinkRetiringRollbackError = exports.transferIdString = exports.ZLinkActorTransferAuthorityRuntime = exports.ZLinkFrameworkRuntimeHost = void 0;
|
|
3
|
+
exports.ZLinkUserSpotCreationCoordinator = exports.ZLinkHostSpotAddressTransport = exports.ZLinkRelocationStateIncompatibleError = exports.ZLinkRouteMeshRuntimeCoordinator = exports.ZLinkRetiringRollbackError = exports.ZLinkDrainingStatePublishError = exports.transferIdString = exports.ZLinkActorTransferAuthorityRuntime = exports.ZLinkFrameworkRuntimeHost = void 0;
|
|
4
4
|
exports.hasUnsupportedManualTopology = hasUnsupportedManualTopology;
|
|
5
5
|
exports.hasExactPeerReadiness = hasExactPeerReadiness;
|
|
6
|
-
const
|
|
6
|
+
const location_store_pages_1 = require("../locations/location-store-pages");
|
|
7
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
7
8
|
const node_crypto_1 = require("node:crypto");
|
|
8
|
-
const runtime_message_1 = require("../backend/runtime-message");
|
|
9
|
-
const runtime_values_1 = require("../backend/runtime-values");
|
|
10
|
-
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
11
|
-
const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
|
|
12
|
-
const abort_1 = require("../abort");
|
|
13
|
-
const backend_1 = require("../backend");
|
|
14
|
-
const LEGACY_MESH_SEND_TIMEOUT_MS = 1000;
|
|
15
9
|
const contracts_1 = require("../../contracts");
|
|
16
|
-
const
|
|
17
|
-
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
10
|
+
const ConfigurationException_1 = require("../../contracts/Configuration/ConfigurationException");
|
|
18
11
|
const DiagnosticsValidation_1 = require("../../contracts/Configuration/DiagnosticsValidation");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
12
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
13
|
+
const Registration_1 = require("../../contracts/Configuration/Registration");
|
|
14
|
+
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
15
|
+
const Locations_1 = require("../../contracts/Locations");
|
|
16
|
+
const Stores_1 = require("../../contracts/Locations/Stores");
|
|
17
|
+
const abort_1 = require("../abort");
|
|
18
|
+
const activation_admission_1 = require("../activation-admission");
|
|
21
19
|
const actors_1 = require("../actors");
|
|
20
|
+
const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
|
|
22
21
|
const actor_transport_delivery_gate_1 = require("../actors/actor-transport-delivery-gate");
|
|
22
|
+
const admission_1 = require("../admission");
|
|
23
23
|
const application_job_queue_handler_start_gate_1 = require("../application-jobs/application-job-queue-handler-start-gate");
|
|
24
|
-
const
|
|
24
|
+
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
25
|
+
const backend_1 = require("../backend");
|
|
26
|
+
const runtime_message_1 = require("../backend/runtime-message");
|
|
27
|
+
const runtime_values_1 = require("../backend/runtime-values");
|
|
28
|
+
const channels_1 = require("../channels");
|
|
29
|
+
const channel_envelope_1 = require("../channels/channel-envelope");
|
|
25
30
|
const diagnostics_1 = require("../diagnostics");
|
|
26
|
-
const
|
|
31
|
+
const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
|
|
27
32
|
const runtime_observation_queue_1 = require("../diagnostics/runtime-observation-queue");
|
|
33
|
+
const topology_runtime_projections_1 = require("../diagnostics/topology-runtime-projections");
|
|
34
|
+
const execution_1 = require("../execution");
|
|
35
|
+
const listener_records_1 = require("../foundation/listener-records");
|
|
36
|
+
const runtime_state_projections_1 = require("../foundation/runtime-state-projections");
|
|
37
|
+
const service_authority_payload_codec_1 = require("../foundation/service-authority-payload-codec");
|
|
38
|
+
const service_relocation_coordinator_1 = require("../foundation/service-relocation-coordinator");
|
|
39
|
+
const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
|
|
40
|
+
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
41
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
42
|
+
const locations_1 = require("../locations");
|
|
43
|
+
const creation_payload_codec_1 = require("../messaging/creation-payload-codec");
|
|
44
|
+
const payload_codec_1 = require("../messaging/payload-codec");
|
|
45
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
46
|
+
const routing_id_1 = require("../routing-id");
|
|
28
47
|
const spots_1 = require("../spots");
|
|
29
|
-
const actor_message_follow_context_1 = require("../actors/actor-message-follow-context");
|
|
30
|
-
const actors_2 = require("../actors");
|
|
31
48
|
const streams_1 = require("../streams");
|
|
32
|
-
const
|
|
33
|
-
const Locations_1 = require("../../contracts/Locations");
|
|
49
|
+
const actor_placement_coordinator_1 = require("./actor-placement-coordinator");
|
|
34
50
|
const actor_runtime_options_factory_1 = require("./actor-runtime-options-factory");
|
|
35
|
-
const actor_transfer_runtime_1 = require("./actor-transfer-runtime");
|
|
36
51
|
const actor_transfer_authority_runtime_1 = require("./actor-transfer-authority-runtime");
|
|
52
|
+
const actor_transfer_runtime_1 = require("./actor-transfer-runtime");
|
|
53
|
+
const application_job_queue_1 = require("./application-job-queue");
|
|
54
|
+
const bound_session_relay_1 = require("./bound-session-relay");
|
|
55
|
+
const channel_runtime_options_factory_1 = require("./channel-runtime-options-factory");
|
|
37
56
|
const entry_actor_runtime_1 = require("./entry-actor-runtime");
|
|
57
|
+
const host_capacity_status_1 = require("./host-capacity-status");
|
|
58
|
+
const instance_activation_authority_1 = require("./instance-activation-authority");
|
|
38
59
|
const location_runtime_owner_1 = require("./location-runtime-owner");
|
|
39
60
|
const mesh_router_resolver_1 = require("./mesh-router-resolver");
|
|
40
|
-
const bound_session_relay_1 = require("./bound-session-relay");
|
|
41
|
-
const routing_id_1 = require("../routing-id");
|
|
42
|
-
const service_authority_payload_codec_1 = require("../foundation/service-authority-payload-codec");
|
|
43
|
-
const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
|
|
44
|
-
const spot_runtime_options_factory_1 = require("./spot-runtime-options-factory");
|
|
45
|
-
const channel_runtime_options_factory_1 = require("./channel-runtime-options-factory");
|
|
46
|
-
const spot_node_runtime_options_factory_1 = require("./spot-node-runtime-options-factory");
|
|
47
|
-
const runtime_shutdown_1 = require("./runtime-shutdown");
|
|
48
|
-
const admission_1 = require("../admission");
|
|
49
61
|
const route_mesh_runtime_1 = require("./route-mesh-runtime");
|
|
50
|
-
const ConfigurationException_1 = require("../../contracts/Configuration/ConfigurationException");
|
|
51
|
-
const stateful_authority_route_runtime_1 = require("./stateful-authority-route-runtime");
|
|
52
|
-
const instance_activation_authority_1 = require("./instance-activation-authority");
|
|
53
|
-
const spot_address_transport_1 = require("./spot-address-transport");
|
|
54
|
-
const user_spot_creation_coordinator_1 = require("./user-spot-creation-coordinator");
|
|
55
|
-
const actor_placement_coordinator_1 = require("./actor-placement-coordinator");
|
|
56
|
-
const payload_codec_1 = require("../messaging/payload-codec");
|
|
57
|
-
const creation_payload_codec_1 = require("../messaging/creation-payload-codec");
|
|
58
62
|
const route_mesh_runtime_options_1 = require("./route-mesh-runtime-options");
|
|
63
|
+
const runtime_shutdown_1 = require("./runtime-shutdown");
|
|
59
64
|
const service_relocation_host_runtime_1 = require("./service-relocation-host-runtime");
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
65
|
+
const spot_address_transport_1 = require("./spot-address-transport");
|
|
66
|
+
const spot_node_runtime_options_factory_1 = require("./spot-node-runtime-options-factory");
|
|
67
|
+
const spot_runtime_options_factory_1 = require("./spot-runtime-options-factory");
|
|
68
|
+
const stateful_authority_route_runtime_1 = require("./stateful-authority-route-runtime");
|
|
69
|
+
const user_spot_creation_coordinator_1 = require("./user-spot-creation-coordinator");
|
|
70
|
+
const HOST_SHUTDOWN_POLL_INTERVAL_MS = 100;
|
|
71
|
+
const HANDOFF_ACCEPTANCE_POLL_INTERVAL_MS = 10;
|
|
72
|
+
const DEFAULT_HOST_CONTROL_TIMEOUT_MS = 30_000;
|
|
73
|
+
const LEGACY_MESH_SEND_TIMEOUT_MS = 1000;
|
|
63
74
|
class ZLinkFrameworkRuntimeHost {
|
|
64
75
|
options;
|
|
65
76
|
backendAdapterFactory;
|
|
@@ -69,6 +80,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
69
80
|
runtimeSequence = 0n;
|
|
70
81
|
runtimeObservationSource = Symbol('zlink.framework-runtime');
|
|
71
82
|
runtimeDeadline;
|
|
83
|
+
shutdownDeadline;
|
|
72
84
|
runtimeRelocationResult;
|
|
73
85
|
runtimeTerminationResult;
|
|
74
86
|
relocationOperation;
|
|
@@ -95,6 +107,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
95
107
|
actorManager;
|
|
96
108
|
actorPlacement;
|
|
97
109
|
spotManager;
|
|
110
|
+
userSpotCoordinator;
|
|
98
111
|
ownerLeaseRecoveryRuntime;
|
|
99
112
|
ownerLeaseRecoveryHandler;
|
|
100
113
|
registerUserSpotHandlers;
|
|
@@ -105,6 +118,8 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
105
118
|
capacityStatus;
|
|
106
119
|
metricRegistrations = [];
|
|
107
120
|
admission = new admission_1.ZLinkRuntimeAdmissionGate(() => this.ownerAdmissionOpen());
|
|
121
|
+
activationAdmission = new activation_admission_1.ZLinkActivationAdmission((meshName) => this.options.registration.spotNodes.get(meshName)?.activationConcurrencyLimit ??
|
|
122
|
+
InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT);
|
|
108
123
|
cachedLocationSpotRouteResolver;
|
|
109
124
|
actorClientLocationResolver;
|
|
110
125
|
// Shared, runtime-mutable message-flow mode cell — installed once so
|
|
@@ -163,7 +178,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
163
178
|
return sendTimeoutMsForSpotMesh(routeChannelId);
|
|
164
179
|
};
|
|
165
180
|
const defaultSpotSendTimeoutMs = Math.max(LEGACY_MESH_SEND_TIMEOUT_MS, ...[...options.registration.spotNodes.values()].map((node) => node.router?.sendTimeoutMs ?? LEGACY_MESH_SEND_TIMEOUT_MS), ...[...options.registration.routeChannelOptions.values()].map((route) => route.sendTimeoutMs ?? LEGACY_MESH_SEND_TIMEOUT_MS));
|
|
166
|
-
this.routeTransport = new channels_1.ZLinkRuntimeRouteTransport(() => this.channelRuntime, (routerChannelId) => this.meshRouters.canUseRouterChannel(routerChannelId), () => this.spotNodeRuntime, { serializers: options.registration.messageSerializers }, (meshName, targetNodeRid) => this.meshRouters.classifyManualNodeTarget(meshName, targetNodeRid), (meshName, sourceNodeRid, parts) => this.submitLocalMeshRoute(meshName, sourceNodeRid, parts), this.metrics, () => this.flowCreationEnabled());
|
|
181
|
+
this.routeTransport = new channels_1.ZLinkRuntimeRouteTransport(() => this.channelRuntime, (routerChannelId) => this.meshRouters.canUseRouterChannel(routerChannelId), () => this.spotNodeRuntime, { serializers: options.registration.messageSerializers }, (meshName, targetNodeRid) => this.meshRouters.classifyManualNodeTarget(meshName, targetNodeRid), (meshName, sourceNodeRid, parts) => this.submitLocalMeshRoute(meshName, sourceNodeRid, parts), this.metrics, () => this.flowCreationEnabled(), () => this.createDispatchErrorReporter(this.runtimeOrPreStartErrorSink).flow);
|
|
167
182
|
this.spotAddressTransport = new spot_address_transport_1.ZLinkHostSpotAddressTransport({
|
|
168
183
|
resolver: () => this.createLocationSpotRouteResolver(),
|
|
169
184
|
routed: this.routeTransport,
|
|
@@ -174,7 +189,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
174
189
|
meshNode: (meshName) => this.spotNodeRuntime?.meshNode(meshName),
|
|
175
190
|
completions: (meshName) => this.spotNodeRuntime?.meshCompletionTable(meshName),
|
|
176
191
|
codecs: { serializers: options.registration.messageSerializers },
|
|
177
|
-
defaultRequestTimeoutMs: options.registration.requestTimeoutMs ??
|
|
192
|
+
defaultRequestTimeoutMs: options.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS,
|
|
178
193
|
defaultSendTimeoutMs: defaultSpotSendTimeoutMs,
|
|
179
194
|
sendTimeoutMsForMesh: sendTimeoutMsForSpotMesh,
|
|
180
195
|
sendTimeoutMsForRouteChannel: sendTimeoutMsForSpotRouteChannel,
|
|
@@ -188,6 +203,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
188
203
|
rewriteAuthorityPayloadForOwner
|
|
189
204
|
});
|
|
190
205
|
this.streamBindingRuntime = new streams_1.ZLinkStreamBindingRuntime({
|
|
206
|
+
dispatchErrors: this.createDispatchErrorReporter(this.runtimeOrPreStartErrorSink),
|
|
191
207
|
streamPayloadCodec: resolveStreamPayloadCodec(options.registration),
|
|
192
208
|
streamCompression: options.registration.streamCompression,
|
|
193
209
|
messageSerializers: options.registration.messageSerializers,
|
|
@@ -220,7 +236,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
220
236
|
relay: (actor, header, payload, signal) => this.boundSessionRelay.actorPackets.relayActorPacket(actor, header, payload, signal),
|
|
221
237
|
notifyDisconnected: (actor, signal) => this.boundSessionRelay.actorPackets.notifyBoundActorDisconnected(actor, signal)
|
|
222
238
|
});
|
|
223
|
-
this.actorHandoff = new
|
|
239
|
+
this.actorHandoff = new actors_1.ZLinkActorHandoffCoordinator({
|
|
224
240
|
routedTransport: this.routeTransport,
|
|
225
241
|
messageFollowDurationMs: options.registration.locations.options.messageFollowDurationMs,
|
|
226
242
|
requestTimeoutMs: options.registration.requestTimeoutMs,
|
|
@@ -376,7 +392,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
376
392
|
});
|
|
377
393
|
}
|
|
378
394
|
});
|
|
379
|
-
this.actorTransferRegistry = new
|
|
395
|
+
this.actorTransferRegistry = new actors_1.ZLinkActorTransferRegistry(options.registration.spotNodes, options.providerResolver, options.registration.messageSerializers);
|
|
380
396
|
this.boundSessionFactory = new streams_1.DefaultZLinkBoundSessionFactory(this.streamBindingRuntime);
|
|
381
397
|
this.boundSessionRelay = new bound_session_relay_1.ZLinkBoundSessionRelay({
|
|
382
398
|
requestTimeoutMs: options.registration.requestTimeoutMs,
|
|
@@ -441,7 +457,6 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
441
457
|
actorTransferRegistry: this.actorTransferRegistry,
|
|
442
458
|
authorityStore: () => this.locationOwner.currentStores?.locationStore,
|
|
443
459
|
currentOwner: () => this.locationOwner.currentRuntime?.currentOwnerToken,
|
|
444
|
-
relocationStore: () => this.options.registration.locations.relocationStoreInstance,
|
|
445
460
|
liveDescriptors: (meshName, signal) => {
|
|
446
461
|
const runtime = this.locationOwner.currentRuntime;
|
|
447
462
|
if (runtime === undefined) {
|
|
@@ -506,6 +521,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
506
521
|
});
|
|
507
522
|
this.serviceRelocation = new service_relocation_host_runtime_1.ZLinkHostServiceRelocationRuntime({
|
|
508
523
|
registration: options.registration,
|
|
524
|
+
targetAdmissionSealed: () => this.shutdownOperationStartedAt !== undefined,
|
|
509
525
|
providerResolver: options.providerResolver,
|
|
510
526
|
locationStore: () => this.locationOwner.currentStores?.locationStore,
|
|
511
527
|
currentOwner: () => this.locationOwner.currentRuntime?.currentOwnerToken,
|
|
@@ -527,7 +543,8 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
527
543
|
invalidateActorRoute: (actorId) => this.actorClientLocationResolver?.invalidateActorRoute(actorId),
|
|
528
544
|
reconcileStatefulAuthorityRoutes: (signal) => this.statefulAuthorityRoutes?.reconcile(signal) ?? Promise.resolve(),
|
|
529
545
|
runtimeEventPublisher: this.runtimeEventPublisher,
|
|
530
|
-
metrics: this.metrics
|
|
546
|
+
metrics: this.metrics,
|
|
547
|
+
activationAdmission: this.activationAdmission
|
|
531
548
|
});
|
|
532
549
|
this.actorTransferAuthorityRuntime = new actor_transfer_authority_runtime_1.ZLinkActorTransferAuthorityRuntime({
|
|
533
550
|
store: () => this.locationOwner.actorTransferStore(),
|
|
@@ -561,6 +578,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
561
578
|
},
|
|
562
579
|
hostState: () => this.runtimeState,
|
|
563
580
|
admission: this.admission,
|
|
581
|
+
activationAdmission: this.activationAdmission,
|
|
564
582
|
publishRetiring: (meshName, signal) => this.publishMeshRetiring(meshName, signal),
|
|
565
583
|
rollbackRetiring: (meshName, signal) => this.publishMeshServing(meshName, signal),
|
|
566
584
|
publishDraining: (meshName, signal) => this.publishMeshDraining(meshName, signal),
|
|
@@ -574,7 +592,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
574
592
|
this.routeMeshRuntime = this.routeMeshCoordinator;
|
|
575
593
|
}
|
|
576
594
|
get isStarted() {
|
|
577
|
-
return this.executionState !== undefined;
|
|
595
|
+
return this.executionState !== undefined && !this.executionState.abortController.signal.aborted;
|
|
578
596
|
}
|
|
579
597
|
get status() {
|
|
580
598
|
return {
|
|
@@ -590,10 +608,20 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
590
608
|
observedAt: new Date()
|
|
591
609
|
};
|
|
592
610
|
}
|
|
611
|
+
// Bound listener records of the current runtime generation.
|
|
612
|
+
listenerRecords = new listener_records_1.ZLinkListenerRecords();
|
|
613
|
+
getListenerStatus(kind, name) {
|
|
614
|
+
const endpoint = this.listenerRecords.endpoint(kind, name);
|
|
615
|
+
if (endpoint === undefined || endpoint.length === 0) {
|
|
616
|
+
throw new ConfigurationException_1.ZLinkConfigurationException(`Listener '${kind}:${name}' is not configured or has not bound.`);
|
|
617
|
+
}
|
|
618
|
+
return { kind, name, endpoint, observedAt: new Date() };
|
|
619
|
+
}
|
|
593
620
|
observe(signal) {
|
|
594
621
|
const queue = new runtime_observation_queue_1.RuntimeEventQueue(undefined, signal);
|
|
595
622
|
this.runtimeObservers.add(queue);
|
|
596
623
|
queue.onClose(() => this.runtimeObservers.delete(queue));
|
|
624
|
+
this.publishRuntimeStatus(queue, this.status);
|
|
597
625
|
return queue;
|
|
598
626
|
}
|
|
599
627
|
resetCapacityMetrics() {
|
|
@@ -605,7 +633,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
605
633
|
}
|
|
606
634
|
relocate(options) {
|
|
607
635
|
const effectiveTargetApplicationVersion = validateRelocationOptions(options, this.options.registration.applicationVersion);
|
|
608
|
-
const deadlineMs = options.deadlineMs ??
|
|
636
|
+
const deadlineMs = options.deadlineMs ?? DEFAULT_HOST_CONTROL_TIMEOUT_MS;
|
|
609
637
|
if (!Number.isFinite(deadlineMs) || deadlineMs <= 0) {
|
|
610
638
|
return Promise.reject(new RangeError('Relocation deadlineMs must be greater than zero.'));
|
|
611
639
|
}
|
|
@@ -667,7 +695,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
667
695
|
return waitForRuntimeOperation(this.relocationOperation, options.signal);
|
|
668
696
|
}
|
|
669
697
|
shutdown(options) {
|
|
670
|
-
const deadlineMs = options?.deadlineMs ??
|
|
698
|
+
const deadlineMs = options?.deadlineMs ?? DEFAULT_HOST_CONTROL_TIMEOUT_MS;
|
|
671
699
|
if (!Number.isFinite(deadlineMs) || deadlineMs <= 0) {
|
|
672
700
|
return Promise.reject(new RangeError('Shutdown deadlineMs must be greater than zero.'));
|
|
673
701
|
}
|
|
@@ -704,6 +732,11 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
704
732
|
this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Relocating);
|
|
705
733
|
const drained = await this.routeMeshCoordinator.relocateHost(remainingDeadlineMs(), stopStartingSignal);
|
|
706
734
|
if (drained.kind === 'forceStopped') {
|
|
735
|
+
// Settled authority on both sides or an expired source owner lease
|
|
736
|
+
// ends the host in Error (spec 30 §13).
|
|
737
|
+
if (drained.error instanceof service_relocation_coordinator_1.ServiceRelocationAuthorityError) {
|
|
738
|
+
return this.completeRelocation(blockedRelocation(mode, effectiveTargetApplicationVersion, contracts_1.ZLinkFrameworkRelocationReason.RelocationFailed));
|
|
739
|
+
}
|
|
707
740
|
return this.resetBlockedRelocation(blockedRelocation(mode, effectiveTargetApplicationVersion, stopStartingSignal.aborted
|
|
708
741
|
? contracts_1.ZLinkFrameworkRelocationReason.ShutdownRequested
|
|
709
742
|
: drained.error instanceof service_relocation_host_runtime_1.ZLinkRelocationStateIncompatibleError
|
|
@@ -732,46 +765,69 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
732
765
|
}
|
|
733
766
|
}
|
|
734
767
|
async runShutdown(deadlineMs) {
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
768
|
+
return await this.runWithShutdownDeadline(deadlineMs, async () => {
|
|
769
|
+
const deadlineAtMs = performance.now() + deadlineMs;
|
|
770
|
+
try {
|
|
771
|
+
this.admission.close();
|
|
772
|
+
if (this.runtimeState === contracts_1.ZLinkFrameworkRuntimeState.Preparing) {
|
|
773
|
+
this.executionState?.abortController.abort();
|
|
774
|
+
}
|
|
775
|
+
this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Draining);
|
|
776
|
+
if (this.relocationOperation !== undefined &&
|
|
777
|
+
this.relocationStopStarting?.signal.aborted === true) {
|
|
778
|
+
await this.relocationOperation;
|
|
779
|
+
}
|
|
780
|
+
// Seal application admission before the public status reports that the
|
|
781
|
+
// host no longer accepts work. This prevents status polling from racing
|
|
782
|
+
// with the coordinator's synchronous seal step.
|
|
783
|
+
const unscopedStreamDrain = this.streamRuntime?.notifyUnscopedServerDrain();
|
|
784
|
+
const shutdown = this.routeMeshCoordinator.shutdownHost(this.runtimeDeadline, this.shutdownDeadline.signal);
|
|
785
|
+
const drain = await shutdown;
|
|
786
|
+
await unscopedStreamDrain;
|
|
787
|
+
await this.stop();
|
|
788
|
+
if (drain.kind === 'forceStopped') {
|
|
789
|
+
return this.completeTermination({
|
|
790
|
+
outcome: contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped,
|
|
791
|
+
reason: drain.reason === 'deadline_exceeded'
|
|
792
|
+
? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
|
|
793
|
+
: contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
if (performance.now() >= deadlineAtMs) {
|
|
797
|
+
throw (0, abort_1.createDeadlineExceededError)('Shutdown resource cleanup exceeded its deadline.');
|
|
798
|
+
}
|
|
799
|
+
return this.completeTermination({
|
|
800
|
+
outcome: contracts_1.ZLinkFrameworkTerminationOutcome.Stopped,
|
|
801
|
+
reason: contracts_1.ZLinkFrameworkTerminationReason.None
|
|
802
|
+
});
|
|
742
803
|
}
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
// with the coordinator's synchronous seal step.
|
|
746
|
-
const unscopedStreamDrain = this.streamRuntime?.notifyUnscopedServerDrain();
|
|
747
|
-
const shutdown = this.routeMeshCoordinator.shutdownHost(this.runtimeDeadline, undefined, Math.max(0, deadlineAtMs - performance.now()));
|
|
748
|
-
const drain = await shutdown;
|
|
749
|
-
await unscopedStreamDrain;
|
|
750
|
-
await this.stop();
|
|
751
|
-
if (drain.kind === 'forceStopped') {
|
|
804
|
+
catch (error) {
|
|
805
|
+
await this.stop().catch(() => undefined);
|
|
752
806
|
return this.completeTermination({
|
|
753
807
|
outcome: contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped,
|
|
754
|
-
reason:
|
|
808
|
+
reason: (0, abort_1.isDeadlineExceededError)(error)
|
|
755
809
|
? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
|
|
756
810
|
: contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
|
|
757
811
|
});
|
|
758
812
|
}
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
813
|
+
});
|
|
814
|
+
}
|
|
815
|
+
async runWithShutdownDeadline(deadlineMs, operation) {
|
|
816
|
+
if (this.shutdownDeadline !== undefined)
|
|
817
|
+
return await operation();
|
|
818
|
+
const deadline = new AbortController();
|
|
819
|
+
this.shutdownDeadline = deadline;
|
|
820
|
+
const ownsRuntimeDeadline = this.runtimeDeadline === undefined;
|
|
821
|
+
this.runtimeDeadline ??= new Date(Date.now() + deadlineMs);
|
|
822
|
+
const timer = setTimeout(() => deadline.abort((0, abort_1.createDeadlineExceededError)('Shutdown deadline exceeded.')), Math.max(0, this.runtimeDeadline.getTime() - Date.now()));
|
|
823
|
+
try {
|
|
824
|
+
return await operation();
|
|
766
825
|
}
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
? contracts_1.ZLinkFrameworkTerminationReason.DeadlineExceeded
|
|
773
|
-
: contracts_1.ZLinkFrameworkTerminationReason.TeardownFailed
|
|
774
|
-
});
|
|
826
|
+
finally {
|
|
827
|
+
clearTimeout(timer);
|
|
828
|
+
this.shutdownDeadline = undefined;
|
|
829
|
+
if (ownsRuntimeDeadline)
|
|
830
|
+
this.runtimeDeadline = undefined;
|
|
775
831
|
}
|
|
776
832
|
}
|
|
777
833
|
resetBlockedRelocation(result) {
|
|
@@ -798,13 +854,14 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
798
854
|
}
|
|
799
855
|
recordRelocationResult(result) {
|
|
800
856
|
if (this.relocationOperationStartedAt !== undefined) {
|
|
801
|
-
this.metrics.duration(
|
|
857
|
+
this.metrics.duration(runtime_metrics_1.METRIC_NAMES.HostRelocationDuration, Math.max(0, performance.now() - this.relocationOperationStartedAt) /
|
|
858
|
+
runtime_metrics_1.MILLISECONDS_PER_SECOND, {
|
|
802
859
|
mode: relocationModeMetricName(result.mode),
|
|
803
860
|
outcome: result.outcome === contracts_1.ZLinkFrameworkRelocationOutcome.Relocated ? 'relocated' : 'blocked'
|
|
804
861
|
});
|
|
805
862
|
}
|
|
806
863
|
if (result.outcome === contracts_1.ZLinkFrameworkRelocationOutcome.Blocked) {
|
|
807
|
-
this.metrics.count(
|
|
864
|
+
this.metrics.count(runtime_metrics_1.METRIC_NAMES.HostRelocationBlocked, 1, {
|
|
808
865
|
mode: relocationModeMetricName(result.mode),
|
|
809
866
|
reason: relocationReasonMetricName(result.reason)
|
|
810
867
|
});
|
|
@@ -823,14 +880,14 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
823
880
|
this.runtimeTerminationResult = result;
|
|
824
881
|
this.runtimeDeadline = undefined;
|
|
825
882
|
if (this.shutdownOperationStartedAt !== undefined) {
|
|
826
|
-
this.metrics.duration(
|
|
883
|
+
this.metrics.duration(runtime_metrics_1.METRIC_NAMES.HostShutdownDuration, Math.max(0, performance.now() - this.shutdownOperationStartedAt) / runtime_metrics_1.MILLISECONDS_PER_SECOND, {
|
|
827
884
|
outcome: result.outcome === contracts_1.ZLinkFrameworkTerminationOutcome.Stopped
|
|
828
885
|
? 'stopped'
|
|
829
886
|
: 'force_stopped'
|
|
830
887
|
});
|
|
831
888
|
}
|
|
832
889
|
if (result.outcome === contracts_1.ZLinkFrameworkTerminationOutcome.ForceStopped) {
|
|
833
|
-
this.metrics.count(
|
|
890
|
+
this.metrics.count(runtime_metrics_1.METRIC_NAMES.HostShutdownForced, 1, {
|
|
834
891
|
reason: terminationReasonMetricName(result.reason)
|
|
835
892
|
});
|
|
836
893
|
}
|
|
@@ -852,15 +909,15 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
852
909
|
this.notifyTopologyHostStateChanged();
|
|
853
910
|
const status = this.status;
|
|
854
911
|
for (const observer of this.runtimeObservers) {
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
912
|
+
this.publishRuntimeStatus(observer, status);
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
publishRuntimeStatus(observer, status) {
|
|
916
|
+
if ((0, runtime_state_projections_1.runtimeObservationIsTerminal)(status.state)) {
|
|
917
|
+
observer.complete(status, this.runtimeObservationSource);
|
|
861
918
|
}
|
|
862
|
-
|
|
863
|
-
this.
|
|
919
|
+
else {
|
|
920
|
+
observer.push(status, this.runtimeObservationSource);
|
|
864
921
|
}
|
|
865
922
|
}
|
|
866
923
|
notifyTopologyHostStateChanged() {
|
|
@@ -947,6 +1004,8 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
947
1004
|
}
|
|
948
1005
|
this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Preparing);
|
|
949
1006
|
this.lifecycleSink?.push('framework:start');
|
|
1007
|
+
const listenerRecords = new listener_records_1.ZLinkListenerRecords();
|
|
1008
|
+
this.listenerRecords = listenerRecords;
|
|
950
1009
|
const channelAdapter = this.backendAdapterFactory.createChannelAdapter();
|
|
951
1010
|
const context = channelAdapter.createContext();
|
|
952
1011
|
const coreHwm = this.options.registration.coreHwm;
|
|
@@ -964,10 +1023,13 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
964
1023
|
this.messageFlowModeCell.mode =
|
|
965
1024
|
this.options.registration.dispatch?.diagnostics.messageFlow ?? 'errors';
|
|
966
1025
|
const dispatchErrors = this.createDispatchErrorReporter(this.executionState.errorSink);
|
|
967
|
-
channelRuntime = new channels_1.ZLinkChannelRuntimeManager(this.options.registration, channelAdapter, context, this.options.providerResolver, this.createChannelRuntimeOptions());
|
|
1026
|
+
channelRuntime = new channels_1.ZLinkChannelRuntimeManager(this.options.registration, channelAdapter, context, this.options.providerResolver, { ...this.createChannelRuntimeOptions(), listenerRecords });
|
|
968
1027
|
this.channelRuntime = channelRuntime;
|
|
969
1028
|
channelRuntime.prepareMeshDispatch(this.executionState.taskRunner);
|
|
970
|
-
spotNodeRuntime = new spots_1.ZLinkSpotNodeRuntimeManager(
|
|
1029
|
+
spotNodeRuntime = new spots_1.ZLinkSpotNodeRuntimeManager({
|
|
1030
|
+
...this.createSpotNodeRuntimeOptions(context, dispatchErrors),
|
|
1031
|
+
listenerRecords
|
|
1032
|
+
});
|
|
971
1033
|
await spotNodeRuntime.start();
|
|
972
1034
|
this.spotNodeRuntime = spotNodeRuntime;
|
|
973
1035
|
this.registerUserSpotHandlers?.(spotNodeRuntime);
|
|
@@ -975,7 +1037,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
975
1037
|
// Start bound receivers before publishing Serving descriptors. A
|
|
976
1038
|
// discovered ClientServer endpoint must already be able to dispatch.
|
|
977
1039
|
this.executionState.listenerTasks.push(...channelRuntime.start(this.executionState.taskRunner));
|
|
978
|
-
const locationRuntime = await this.locationOwner.startForRuntime(this.meshRouters.primaryMeshName(), spotNodeRuntime, channelRuntime);
|
|
1040
|
+
const locationRuntime = await this.locationOwner.startForRuntime(this.meshRouters.primaryMeshName(), spotNodeRuntime, channelRuntime, this.executionState.abortController.signal, () => this.shutdownDeadline.signal);
|
|
979
1041
|
startedLocationRuntime = locationRuntime;
|
|
980
1042
|
if (locationRuntime !== undefined) {
|
|
981
1043
|
this.installOwnerLeaseRecoveryPublication(locationRuntime, spotNodeRuntime, channelRuntime);
|
|
@@ -991,6 +1053,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
991
1053
|
}
|
|
992
1054
|
}
|
|
993
1055
|
streamRuntime = new streams_1.ZLinkStreamRuntimeManager({
|
|
1056
|
+
listenerRecords,
|
|
994
1057
|
registration: this.options.registration,
|
|
995
1058
|
backendAdapterFactory: this.backendAdapterFactory,
|
|
996
1059
|
context,
|
|
@@ -1016,15 +1079,24 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1016
1079
|
this.lifecycleSink?.push('framework:started');
|
|
1017
1080
|
}
|
|
1018
1081
|
catch (error) {
|
|
1082
|
+
if (this.shutdownDeadline !== undefined && (0, abort_1.isAbortError)(error))
|
|
1083
|
+
throw error;
|
|
1019
1084
|
await statefulAuthorityRoutes?.stop();
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1085
|
+
try {
|
|
1086
|
+
await this.runWithShutdownDeadline(DEFAULT_HOST_CONTROL_TIMEOUT_MS, async () => (0, runtime_shutdown_1.rollbackRuntimeStart)({
|
|
1087
|
+
context,
|
|
1088
|
+
startedLocationRuntime: startedLocationRuntime ?? this.locationOwner.currentRuntime,
|
|
1089
|
+
shutdownSignal: this.shutdownDeadline.signal,
|
|
1090
|
+
streamRuntime,
|
|
1091
|
+
spotNodeRuntime,
|
|
1092
|
+
channelRuntime,
|
|
1093
|
+
ownedStores: registeredRuntimeStores(this.options.registration)
|
|
1094
|
+
}));
|
|
1095
|
+
}
|
|
1096
|
+
catch (cleanupError) {
|
|
1097
|
+
this.runtimeOrPreStartErrorSink.reportRuntimeTaskException('framework start rollback', cleanupError);
|
|
1098
|
+
throw new AggregateError([error, cleanupError], 'Framework start and rollback failed.');
|
|
1099
|
+
}
|
|
1028
1100
|
this.executionState = undefined;
|
|
1029
1101
|
this.channelRuntime = undefined;
|
|
1030
1102
|
this.spotNodeRuntime = undefined;
|
|
@@ -1037,7 +1109,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1037
1109
|
}
|
|
1038
1110
|
}
|
|
1039
1111
|
async stop() {
|
|
1040
|
-
await this.runLifecycle(() => this.stopCore());
|
|
1112
|
+
await this.runWithShutdownDeadline(DEFAULT_HOST_CONTROL_TIMEOUT_MS, async () => this.runLifecycle(() => this.stopCore()));
|
|
1041
1113
|
}
|
|
1042
1114
|
runtimeMetricMeshSnapshots() {
|
|
1043
1115
|
const snapshots = [];
|
|
@@ -1076,7 +1148,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1076
1148
|
reserved: capacity.reserved,
|
|
1077
1149
|
limit: capacity.limit
|
|
1078
1150
|
})),
|
|
1079
|
-
activation:
|
|
1151
|
+
activation: this.activationAdmission.current(meshName),
|
|
1080
1152
|
instanceSpots: []
|
|
1081
1153
|
});
|
|
1082
1154
|
}
|
|
@@ -1087,6 +1159,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1087
1159
|
if (state === undefined) {
|
|
1088
1160
|
return;
|
|
1089
1161
|
}
|
|
1162
|
+
state.abortController.abort();
|
|
1090
1163
|
const channelRuntime = this.channelRuntime;
|
|
1091
1164
|
const spotNodeRuntime = this.spotNodeRuntime;
|
|
1092
1165
|
const streamRuntime = this.streamRuntime;
|
|
@@ -1094,24 +1167,26 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1094
1167
|
this.stopTopologyObservers();
|
|
1095
1168
|
this.removeOwnerLeaseRecoveryPublication();
|
|
1096
1169
|
const locationSnapshot = this.locationOwner.clearForStop();
|
|
1097
|
-
this.executionState = undefined;
|
|
1098
|
-
this.channelRuntime = undefined;
|
|
1099
|
-
this.spotNodeRuntime = undefined;
|
|
1100
|
-
this.streamRuntime = undefined;
|
|
1101
|
-
this.statefulAuthorityRoutes = undefined;
|
|
1102
|
-
this.cachedLocationSpotRouteResolver = undefined;
|
|
1103
1170
|
this.lifecycleSink?.push('framework:stop');
|
|
1104
1171
|
await statefulAuthorityRoutes?.stop();
|
|
1105
1172
|
await (0, runtime_shutdown_1.stopRuntimeParts)({
|
|
1106
1173
|
state,
|
|
1107
1174
|
locationSnapshot,
|
|
1108
1175
|
cleanupDeadline: this.runtimeDeadline,
|
|
1176
|
+
shutdownSignal: this.shutdownDeadline.signal,
|
|
1109
1177
|
streamRuntime,
|
|
1110
1178
|
spotNodeRuntime,
|
|
1111
1179
|
channelRuntime,
|
|
1112
1180
|
serviceRelocation: this.serviceRelocation,
|
|
1113
1181
|
ownedStores: registeredRuntimeStores(this.options.registration)
|
|
1114
1182
|
});
|
|
1183
|
+
this.executionState = undefined;
|
|
1184
|
+
this.channelRuntime = undefined;
|
|
1185
|
+
this.spotNodeRuntime = undefined;
|
|
1186
|
+
this.streamRuntime = undefined;
|
|
1187
|
+
this.statefulAuthorityRoutes = undefined;
|
|
1188
|
+
this.cachedLocationSpotRouteResolver = undefined;
|
|
1189
|
+
this.listenerRecords.clear();
|
|
1115
1190
|
this.lifecycleSink?.push('framework:stopped');
|
|
1116
1191
|
if (this.shutdownOperation === undefined) {
|
|
1117
1192
|
this.setRuntimeState(contracts_1.ZLinkFrameworkRuntimeState.Stopped);
|
|
@@ -1160,7 +1235,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1160
1235
|
meshNodes: spotNodeRuntime.meshNodesByName,
|
|
1161
1236
|
pollingIntervalMs: this.options.registration.locations.options.pollingIntervalMs ??
|
|
1162
1237
|
Locations_1.zlinkDefaultLocationOptions.pollingIntervalMs,
|
|
1163
|
-
pageSize:
|
|
1238
|
+
pageSize: Stores_1.ZLINK_PROVIDER_MAX_PAGE_SIZE,
|
|
1164
1239
|
reportError: (error) => this.runtimeOrPreStartErrorSink.reportRuntimeTaskException('stateful authority route reconciliation', error),
|
|
1165
1240
|
onSpotRouteChanged: (spotId) => this.cachedLocationSpotRouteResolver?.invalidate?.(spotId)
|
|
1166
1241
|
});
|
|
@@ -1328,8 +1403,9 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1328
1403
|
}
|
|
1329
1404
|
}
|
|
1330
1405
|
catch (error) {
|
|
1331
|
-
throw new ZLinkDrainingStatePublishError(error);
|
|
1406
|
+
throw new route_mesh_runtime_1.ZLinkDrainingStatePublishError(error);
|
|
1332
1407
|
}
|
|
1408
|
+
await awaitWithDrainSignal(this.serviceRelocation.drainTargetAttempts(), signal);
|
|
1333
1409
|
}
|
|
1334
1410
|
async cleanupOwnerForDrain(signal) {
|
|
1335
1411
|
const runtime = this.locationOwner.currentRuntime;
|
|
@@ -1351,7 +1427,6 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1351
1427
|
activationNode.registerInstanceApplicationLifecycle?.({
|
|
1352
1428
|
isMaterialized: (target) => spotManager.isInstanceMaterialized(meshName, target.stableType, target.targetSpotId),
|
|
1353
1429
|
isMaterializing: (target) => spotManager.isInstanceMaterializing(meshName, target.targetSpotId),
|
|
1354
|
-
isClosing: (target) => spotManager.isInstanceClosing(meshName, target.targetSpotId),
|
|
1355
1430
|
isIdleEvicting: (target) => spotManager.isInstanceSpotIdleEvicting(meshName, target.targetSpotId),
|
|
1356
1431
|
beginIdleEviction: (target) => spotManager.beginInstanceSpotIdleEviction(meshName, target.targetSpotId),
|
|
1357
1432
|
materialize: (target, objectGeneration) => spotManager.materializeInstance(meshName, target.stableType, target.targetSpotId, objectGeneration, this.executionState?.abortController.signal),
|
|
@@ -1373,6 +1448,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1373
1448
|
this.ensureLocationRuntime();
|
|
1374
1449
|
return {
|
|
1375
1450
|
...this.actorRuntimeOptionsFactory().createActorManagerOptions(),
|
|
1451
|
+
activationAdmission: this.activationAdmission,
|
|
1376
1452
|
placementCreate: async (actorId, actorType, createOnly, call, signal) => {
|
|
1377
1453
|
const placement = this.actorPlacement;
|
|
1378
1454
|
if (placement === undefined) {
|
|
@@ -1416,10 +1492,16 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1416
1492
|
?.meshNode(meshName)
|
|
1417
1493
|
?.completeClosedInstance?.(spotId, objectGeneration);
|
|
1418
1494
|
},
|
|
1419
|
-
beginInstanceIdleClosingAuthority: (meshName, spotId) => this.locationOwner.currentLifecycle?.beginInstanceSpotClosing(meshName, spotId) ??
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1495
|
+
beginInstanceIdleClosingAuthority: (meshName, spotId, onCommitted) => this.locationOwner.currentLifecycle?.beginInstanceSpotClosing(meshName, spotId, onCommitted) ?? Promise.resolve(undefined),
|
|
1496
|
+
beginInstanceClosingAuthority: (meshName, spotId, onCommitted) => this.locationOwner.currentLifecycle?.beginInstanceSpotClosing(meshName, spotId, onCommitted) ?? Promise.resolve(undefined),
|
|
1497
|
+
beginUserClosingAuthority: async (meshName, spotId, objectGeneration, onCommitted) => {
|
|
1498
|
+
const coordinator = this.userSpotCoordinator;
|
|
1499
|
+
const nodeRid = this.spotNodeRuntime?.meshNode(meshName)?.status().routingId;
|
|
1500
|
+
if (coordinator === undefined || nodeRid === undefined) {
|
|
1501
|
+
throw new ConfigurationException_1.ZLinkConfigurationException('User Spot context Close requires its authority coordinator.');
|
|
1502
|
+
}
|
|
1503
|
+
return await coordinator.beginOwnerClose({ spotId: spotId, objectGeneration, meshName, nodeRid }, onCommitted);
|
|
1504
|
+
},
|
|
1423
1505
|
createLocationSpotRouteResolver: () => this.createLocationSpotRouteResolver(),
|
|
1424
1506
|
boundSessionRelay: this.boundSessionRelay,
|
|
1425
1507
|
actorHandoff: this.actorHandoff,
|
|
@@ -1428,14 +1510,12 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1428
1510
|
detachedTaskRunner: this.detachedTaskRunner(),
|
|
1429
1511
|
metrics: this.metrics,
|
|
1430
1512
|
admission: this.admission,
|
|
1431
|
-
|
|
1513
|
+
statefulExecution: {
|
|
1514
|
+
admissionOpen: () => this.ownerAdmissionOpen(),
|
|
1515
|
+
hostState: () => this.runtimeState
|
|
1516
|
+
}
|
|
1432
1517
|
}).create(this.actorTransferRuntime),
|
|
1433
|
-
|
|
1434
|
-
onInstanceActivationConcurrencyChanged: (meshName) => {
|
|
1435
|
-
void this.spotNodeRuntime
|
|
1436
|
-
?.publishMeshNodeState(this.runtimeState, this.executionState?.abortController.signal, meshName)
|
|
1437
|
-
.catch(() => undefined);
|
|
1438
|
-
}
|
|
1518
|
+
activationAdmission: this.activationAdmission
|
|
1439
1519
|
};
|
|
1440
1520
|
}
|
|
1441
1521
|
createPublicSpotManager(local) {
|
|
@@ -1477,7 +1557,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1477
1557
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured, `RouteMesh '${meshName}' has no object-client role.`);
|
|
1478
1558
|
}
|
|
1479
1559
|
const meshNode = this.spotNodeRuntime?.meshNode(meshName);
|
|
1480
|
-
const descriptors =
|
|
1560
|
+
const descriptors = await (0, location_store_pages_1.listAllMeshNodeDescriptors)(locationStore, meshName, signal);
|
|
1481
1561
|
const selected = await selectReadyLocationPlacementDescriptor(descriptors, meshNode, signal, (descriptor) => {
|
|
1482
1562
|
const capability = descriptor.objectCapabilities.find((candidate) => candidate.objectKind === 'actor' && candidate.stableType === stableType);
|
|
1483
1563
|
const actors = descriptor.populationCapacity.actors;
|
|
@@ -1511,7 +1591,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1511
1591
|
};
|
|
1512
1592
|
}
|
|
1513
1593
|
});
|
|
1514
|
-
const coordinator = new user_spot_creation_coordinator_1.ZLinkUserSpotCreationCoordinator({
|
|
1594
|
+
const coordinator = (this.userSpotCoordinator = new user_spot_creation_coordinator_1.ZLinkUserSpotCreationCoordinator({
|
|
1515
1595
|
store: locationStore,
|
|
1516
1596
|
publishReadyRoute: (meshName, route) => {
|
|
1517
1597
|
this.cachedLocationSpotRouteResolver?.invalidate?.(route.spot.spotId);
|
|
@@ -1558,7 +1638,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1558
1638
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ObjectClientNotConfigured, `RouteMesh '${meshName}' has no object-client role.`);
|
|
1559
1639
|
}
|
|
1560
1640
|
const meshNode = this.spotNodeRuntime?.meshNode(meshName);
|
|
1561
|
-
const descriptors =
|
|
1641
|
+
const descriptors = await (0, location_store_pages_1.listAllMeshNodeDescriptors)(locationStore, meshName, signal);
|
|
1562
1642
|
const selected = await selectReadyLocationPlacementDescriptor(descriptors, meshNode, signal, (descriptor) => {
|
|
1563
1643
|
const capability = descriptor.objectCapabilities.find((candidate) => candidate.objectKind === 'user_spot' && candidate.stableType === request.stableType);
|
|
1564
1644
|
const spotTypeCapacity = descriptor.populationCapacity.spotTypes.find((candidate) => candidate.objectKind === 'user_spot' && candidate.stableType === request.stableType);
|
|
@@ -1589,7 +1669,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1589
1669
|
localStatus.lifecycleGeneration === selected.lifecycleGeneration
|
|
1590
1670
|
};
|
|
1591
1671
|
}
|
|
1592
|
-
});
|
|
1672
|
+
}));
|
|
1593
1673
|
const factories = new Map([...this.options.registration.spotNodes].map(([meshName, node]) => [
|
|
1594
1674
|
meshName,
|
|
1595
1675
|
new Map(Object.entries(node.spotFactoryRegistrations ?? {}))
|
|
@@ -1636,7 +1716,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1636
1716
|
try {
|
|
1637
1717
|
payload = {
|
|
1638
1718
|
packetName: 'ZLinkFrameworkUserSpotReply',
|
|
1639
|
-
contentType:
|
|
1719
|
+
contentType: stream_wire_1.ZlinkStreamContentType.Raw,
|
|
1640
1720
|
payload: Buffer.from(message.data())
|
|
1641
1721
|
};
|
|
1642
1722
|
}
|
|
@@ -1725,25 +1805,12 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1725
1805
|
}, signal);
|
|
1726
1806
|
},
|
|
1727
1807
|
close: async (record, signal) => {
|
|
1728
|
-
if (!local.hasActiveSpot(record.target.spotId)) {
|
|
1729
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving, `User Spot '${record.target.spotId}' is not materialized on its authority owner.`, true);
|
|
1730
|
-
}
|
|
1731
|
-
if (!local.canCloseUserSpot(meshName, record.target.spotId)) {
|
|
1732
|
-
return {
|
|
1733
|
-
terminalResult: runtime_values_1.RequestResult.Ok,
|
|
1734
|
-
failureCode: 0,
|
|
1735
|
-
tail: {
|
|
1736
|
-
kind: 'userSpotClose',
|
|
1737
|
-
closed: false
|
|
1738
|
-
}
|
|
1739
|
-
};
|
|
1740
|
-
}
|
|
1741
1808
|
return {
|
|
1742
1809
|
terminalResult: runtime_values_1.RequestResult.Ok,
|
|
1743
1810
|
failureCode: 0,
|
|
1744
1811
|
tail: {
|
|
1745
1812
|
kind: 'userSpotClose',
|
|
1746
|
-
closed: await coordinator.handleRemoteClose(record, (spot, closeSignal) => local.
|
|
1813
|
+
closed: await coordinator.handleRemoteClose(record, (spot, beginAuthority, closeSignal) => local.closeUserWithAuthority(spot.meshName, spot.spotId, beginAuthority, closeSignal), signal, (spot) => local.isSpotClosing(spot.meshName, spot.spotId))
|
|
1747
1814
|
}
|
|
1748
1815
|
};
|
|
1749
1816
|
}
|
|
@@ -1773,7 +1840,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1773
1840
|
}
|
|
1774
1841
|
return node.requestUserSpotClose(targetNodeRid, request, timeoutMs);
|
|
1775
1842
|
},
|
|
1776
|
-
defaultTimeoutMs: this.options.registration.requestTimeoutMs ??
|
|
1843
|
+
defaultTimeoutMs: this.options.registration.requestTimeoutMs ?? Registration_1.DEFAULT_REQUEST_TIMEOUT_MS,
|
|
1777
1844
|
messageSerializers: this.options.registration.messageSerializers
|
|
1778
1845
|
});
|
|
1779
1846
|
}
|
|
@@ -1793,6 +1860,8 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1793
1860
|
meshCompletions: (meshName) => this.spotNodeRuntime?.meshCompletionTable(meshName),
|
|
1794
1861
|
notifyEntrySpotActorCreated: (nodeRid, actor, createRequest, signal) => this.spotNodeRuntime?.notifyEntrySpotActorCreated(nodeRid, actor, createRequest, signal) ??
|
|
1795
1862
|
Promise.resolve(undefined),
|
|
1863
|
+
notifyEntrySpotActorJoined: (actor, signal) => this.spotNodeRuntime?.notifyPrimaryEntrySpotActorJoined(actor, signal) ?? Promise.resolve(),
|
|
1864
|
+
notifyEntrySpotActorLeft: (actor, signal) => this.spotNodeRuntime?.notifyPrimaryEntrySpotActorLeft(actor, signal) ?? Promise.resolve(),
|
|
1796
1865
|
locationLifecycle: () => this.locationOwner.currentLifecycle,
|
|
1797
1866
|
primaryMeshName: () => this.meshRouters.primaryMeshName(),
|
|
1798
1867
|
actorMeshName: (actorType) => this.meshRouters.actorMeshName(actorType),
|
|
@@ -1814,7 +1883,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1814
1883
|
if (entrySpotId === undefined) {
|
|
1815
1884
|
throw new ConfigurationException_1.ZLinkConfigurationException(`Actor '${actorRef.actorId}' authority requires its RouteMesh Entry Spot.`);
|
|
1816
1885
|
}
|
|
1817
|
-
await (0,
|
|
1886
|
+
await (0, actors_1.publishInitialActorAuthority)(store, {
|
|
1818
1887
|
actorType,
|
|
1819
1888
|
actor: actorRef,
|
|
1820
1889
|
meshName,
|
|
@@ -1882,6 +1951,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1882
1951
|
}).create();
|
|
1883
1952
|
return {
|
|
1884
1953
|
...options,
|
|
1954
|
+
errorSink: this.runtimeOrPreStartErrorSink,
|
|
1885
1955
|
peerAdmissionSealed: (meshName) => !this.admission.accepts(meshName),
|
|
1886
1956
|
messageFollowReceiver: (record) => {
|
|
1887
1957
|
if (record.source.kind === 'actor') {
|
|
@@ -1905,12 +1975,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1905
1975
|
});
|
|
1906
1976
|
},
|
|
1907
1977
|
meshRecordDispatcher: (meshName, owner, record) => this.dispatchMeshRecord(meshName, owner, record, this.executionState?.abortController.signal),
|
|
1908
|
-
|
|
1909
|
-
return (this.spotManager?.instanceActivationConcurrency(meshName) ?? {
|
|
1910
|
-
active: 0,
|
|
1911
|
-
limit: this.options.registration.spotNodes.get(meshName)?.activationConcurrencyLimit ?? 128
|
|
1912
|
-
});
|
|
1913
|
-
}
|
|
1978
|
+
activationConcurrency: (meshName) => this.activationAdmission.current(meshName)
|
|
1914
1979
|
};
|
|
1915
1980
|
}
|
|
1916
1981
|
async dispatchMeshRecord(meshName, owner, record, signal) {
|
|
@@ -1925,10 +1990,8 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1925
1990
|
throw new ConfigurationException_1.ZLinkConfigurationException('MeshNode Actor binding record has no binding generation.');
|
|
1926
1991
|
}
|
|
1927
1992
|
const binding = record.kindData;
|
|
1928
|
-
const replyBindingFailure = (kind
|
|
1929
|
-
const terminal =
|
|
1930
|
-
? { terminalResult: runtime_values_1.RequestResult.InvalidState, failureCode: 0 }
|
|
1931
|
-
: (0, framework_errors_internal_1.internalFrameworkWireReply)((0, framework_errors_internal_1.createInternalFrameworkException)(kind, message));
|
|
1993
|
+
const replyBindingFailure = (kind) => {
|
|
1994
|
+
const terminal = (0, framework_errors_internal_1.internalFrameworkWireReply)(kind);
|
|
1932
1995
|
if (record.replyFailure?.(terminal.terminalResult, terminal.failureCode) !== runtime_values_1.SubmitResult.Ok) {
|
|
1933
1996
|
throw new ConfigurationException_1.ZLinkConfigurationException(`MeshNode Actor binding target '${binding.actor.actorId}' failure acknowledgement failed.`);
|
|
1934
1997
|
}
|
|
@@ -1944,11 +2007,11 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1944
2007
|
nativeActorRef === undefined ||
|
|
1945
2008
|
nativeActorRef.actorId !== binding.actor.actorId ||
|
|
1946
2009
|
!(0, routing_id_1.routingIdsEqual)(nativeActorRef.nodeRid, binding.actor.nodeRid)) {
|
|
1947
|
-
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale
|
|
2010
|
+
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
|
|
1948
2011
|
return;
|
|
1949
2012
|
}
|
|
1950
2013
|
if (nativeActorRef.generation !== binding.actor.generation) {
|
|
1951
|
-
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale
|
|
2014
|
+
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale);
|
|
1952
2015
|
return;
|
|
1953
2016
|
}
|
|
1954
2017
|
const node = state.meshName === meshName ? this.spotNodeRuntime?.meshNode(meshName) : undefined;
|
|
@@ -1960,7 +2023,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1960
2023
|
localStatus.lifecycleGeneration !== binding.actorNodeGeneration ||
|
|
1961
2024
|
state.locationGeneration !== binding.authorityOwnerGeneration ||
|
|
1962
2025
|
state.isMoving) {
|
|
1963
|
-
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale
|
|
2026
|
+
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
|
|
1964
2027
|
return;
|
|
1965
2028
|
}
|
|
1966
2029
|
const sessionOwnerIsLocal = (0, routing_id_1.routingIdsEqual)(localStatus.routingId, binding.sessionNodeRid) &&
|
|
@@ -1973,6 +2036,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1973
2036
|
nodeRid: binding.actor.nodeRid
|
|
1974
2037
|
};
|
|
1975
2038
|
if (sessionOwnerIsLocal) {
|
|
2039
|
+
(0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
|
|
1976
2040
|
await this.streamBindingRuntime.retireRemoteBinding(actorRef, binding.sessionRid, binding.bindingGeneration, signal);
|
|
1977
2041
|
}
|
|
1978
2042
|
state.retireBoundSessionBinding(binding);
|
|
@@ -1981,7 +2045,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1981
2045
|
}
|
|
1982
2046
|
const target = this.boundSessionRelay.boundSessions.resolveRemoteBoundSessionTarget(binding.sessionNodeRid, binding.sessionRid);
|
|
1983
2047
|
if (target === undefined) {
|
|
1984
|
-
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale
|
|
2048
|
+
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
|
|
1985
2049
|
return;
|
|
1986
2050
|
}
|
|
1987
2051
|
const installed = state.installBoundSessionBinding({
|
|
@@ -1994,7 +2058,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
1994
2058
|
bindingGeneration: binding.bindingGeneration
|
|
1995
2059
|
});
|
|
1996
2060
|
if (!installed) {
|
|
1997
|
-
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale
|
|
2061
|
+
replyBindingFailure(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
|
|
1998
2062
|
return;
|
|
1999
2063
|
}
|
|
2000
2064
|
replyBindingSuccess();
|
|
@@ -2021,7 +2085,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
2021
2085
|
return;
|
|
2022
2086
|
}
|
|
2023
2087
|
if (record.kind === service_runtime_contracts_1.ReceiveKind.NodeRequest && record.parts.length === 1) {
|
|
2024
|
-
const terminal = (0,
|
|
2088
|
+
const terminal = (0, actors_1.decodeRemoteActorSourceLeaveTerminal)(record.parts[0].data());
|
|
2025
2089
|
if (terminal !== undefined) {
|
|
2026
2090
|
if ((await this.spotManager?.completeFormalSourceLeaveTerminal(terminal.actorId, terminal.transferId, terminal.succeeded)) !== true) {
|
|
2027
2091
|
throw new ConfigurationException_1.ZLinkConfigurationException(`Actor '${terminal.actorId}' has no matching formal transfer terminal gate.`);
|
|
@@ -2205,7 +2269,7 @@ class ZLinkFrameworkRuntimeHost {
|
|
|
2205
2269
|
const resolver = authority === undefined
|
|
2206
2270
|
? legacy
|
|
2207
2271
|
: new locations_1.ZLinkAuthoritySpotRouteResolver(authority, this.meshRouters.spotRouterChannelIdByMesh(), legacy, this.locationOwner.currentLeaseTracker, this.options.registration.locations.options.routeCacheMaxAgeMs, undefined, async (meshName, nodeRid, expectedLifecycleGeneration, signal) => {
|
|
2208
|
-
const descriptor = (await
|
|
2272
|
+
const descriptor = (await (0, location_store_pages_1.listAllMeshNodeDescriptors)(authority, meshName, signal)).find((candidate) => (0, routing_id_1.routingIdsEqual)(candidate.rid, nodeRid) &&
|
|
2209
2273
|
candidate.lifecycleGeneration === expectedLifecycleGeneration);
|
|
2210
2274
|
return descriptor?.state;
|
|
2211
2275
|
});
|
|
@@ -2256,12 +2320,13 @@ function hasExactPeerReadiness(descriptors, local, peers) {
|
|
|
2256
2320
|
replacementDescriptors.some((descriptor) => peers.some((peer) => peer.routingId !== null &&
|
|
2257
2321
|
String(peer.routingId) === String(descriptor.rid) &&
|
|
2258
2322
|
peer.lifecycleGeneration === descriptor.lifecycleGeneration &&
|
|
2259
|
-
peer.state ===
|
|
2323
|
+
peer.state === service_runtime_contracts_1.MeshPeerRuntimeState.Serving)));
|
|
2260
2324
|
}
|
|
2261
2325
|
var actor_transfer_authority_runtime_2 = require("./actor-transfer-authority-runtime");
|
|
2262
2326
|
Object.defineProperty(exports, "ZLinkActorTransferAuthorityRuntime", { enumerable: true, get: function () { return actor_transfer_authority_runtime_2.ZLinkActorTransferAuthorityRuntime; } });
|
|
2263
2327
|
Object.defineProperty(exports, "transferIdString", { enumerable: true, get: function () { return actor_transfer_authority_runtime_2.transferIdString; } });
|
|
2264
2328
|
var route_mesh_runtime_2 = require("./route-mesh-runtime");
|
|
2329
|
+
Object.defineProperty(exports, "ZLinkDrainingStatePublishError", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkDrainingStatePublishError; } });
|
|
2265
2330
|
Object.defineProperty(exports, "ZLinkRetiringRollbackError", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkRetiringRollbackError; } });
|
|
2266
2331
|
Object.defineProperty(exports, "ZLinkRouteMeshRuntimeCoordinator", { enumerable: true, get: function () { return route_mesh_runtime_2.ZLinkRouteMeshRuntimeCoordinator; } });
|
|
2267
2332
|
var service_relocation_host_runtime_2 = require("./service-relocation-host-runtime");
|
|
@@ -2275,7 +2340,7 @@ async function waitForForcedSessionNotification(operation) {
|
|
|
2275
2340
|
return;
|
|
2276
2341
|
let timeoutHandle;
|
|
2277
2342
|
const timeout = new Promise((resolve) => {
|
|
2278
|
-
timeoutHandle = setTimeout(resolve,
|
|
2343
|
+
timeoutHandle = setTimeout(resolve, HOST_SHUTDOWN_POLL_INTERVAL_MS);
|
|
2279
2344
|
});
|
|
2280
2345
|
try {
|
|
2281
2346
|
await Promise.race([operation.catch(() => undefined), timeout]);
|
|
@@ -2304,12 +2369,6 @@ async function awaitWithDrainSignal(operation, signal) {
|
|
|
2304
2369
|
});
|
|
2305
2370
|
});
|
|
2306
2371
|
}
|
|
2307
|
-
class ZLinkDrainingStatePublishError extends Error {
|
|
2308
|
-
constructor(cause) {
|
|
2309
|
-
super('Failed to publish draining peer rows.', { cause });
|
|
2310
|
-
this.name = 'ZLinkDrainingStatePublishError';
|
|
2311
|
-
}
|
|
2312
|
-
}
|
|
2313
2372
|
function resolveBackendAdapterFactory(internalOptions) {
|
|
2314
2373
|
if (typeof internalOptions === 'object' &&
|
|
2315
2374
|
internalOptions !== null &&
|
|
@@ -2439,7 +2498,7 @@ function waitForPlacementReadiness(signal) {
|
|
|
2439
2498
|
const timer = setTimeout(() => {
|
|
2440
2499
|
signal?.removeEventListener('abort', abort);
|
|
2441
2500
|
resolve();
|
|
2442
|
-
},
|
|
2501
|
+
}, HANDOFF_ACCEPTANCE_POLL_INTERVAL_MS);
|
|
2443
2502
|
const abort = () => {
|
|
2444
2503
|
clearTimeout(timer);
|
|
2445
2504
|
signal?.removeEventListener('abort', abort);
|
|
@@ -2477,8 +2536,8 @@ function relocationReason(reason) {
|
|
|
2477
2536
|
}
|
|
2478
2537
|
function rewriteAuthorityPayloadForOwner(payload, owner) {
|
|
2479
2538
|
const applicationPayload = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload);
|
|
2480
|
-
const rewritten = (0,
|
|
2481
|
-
? (0,
|
|
2539
|
+
const rewritten = (0, actors_1.isActorAuthorityPayload)(applicationPayload)
|
|
2540
|
+
? (0, actors_1.rewriteActorAuthorityOwner)(applicationPayload, owner)
|
|
2482
2541
|
: ((0, service_authority_payload_codec_1.rewriteServiceAuthorityOwner)(applicationPayload, owner) ?? applicationPayload);
|
|
2483
2542
|
return (0, service_relocation_runtime_1.replaceServiceRelocationAuthorityApplicationPayload)(payload, rewritten);
|
|
2484
2543
|
}
|