@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
|
@@ -4,6 +4,7 @@ exports.ZLinkSpotActivationLifecycle = void 0;
|
|
|
4
4
|
const contracts_1 = require("../../contracts");
|
|
5
5
|
const abort_1 = require("../abort");
|
|
6
6
|
const configuration_1 = require("../configuration");
|
|
7
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
7
8
|
const actors_1 = require("../actors");
|
|
8
9
|
const handler_instance_scope_1 = require("../handlers/handler-instance-scope");
|
|
9
10
|
const payload_codec_1 = require("../messaging/payload-codec");
|
|
@@ -23,6 +24,9 @@ class ZLinkSpotActivationLifecycle {
|
|
|
23
24
|
cleanupStates = new WeakMap();
|
|
24
25
|
constructor(options) {
|
|
25
26
|
this.options = options;
|
|
27
|
+
if (options.detachedTaskRunner === undefined) {
|
|
28
|
+
throw new configuration_1.ZLinkConfigurationException('Spot activation requires a detached task runner.');
|
|
29
|
+
}
|
|
26
30
|
this.actorAdmission = new spot_actor_admission_coordinator_1.ZLinkSpotActorAdmissionCoordinator(options);
|
|
27
31
|
}
|
|
28
32
|
async materializeRelocation(meshName, objectKind, stableType, implementation, spotId, objectGeneration, authorityOwnerGeneration, signal) {
|
|
@@ -62,7 +66,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
62
66
|
const common = {
|
|
63
67
|
meshName,
|
|
64
68
|
spotId,
|
|
65
|
-
objectGeneration:
|
|
69
|
+
objectGeneration: objectGeneration,
|
|
66
70
|
outbound,
|
|
67
71
|
timers,
|
|
68
72
|
serial,
|
|
@@ -72,7 +76,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
72
76
|
providerResolver: this.options.providerResolver,
|
|
73
77
|
runtimeEventPublisher: this.options.runtimeEventPublisher,
|
|
74
78
|
workerRuntime: this.options.workerRuntime,
|
|
75
|
-
close: this.contextClose(
|
|
79
|
+
close: this.contextClose(objectGeneration, () => activation)
|
|
76
80
|
};
|
|
77
81
|
const context = objectKind === 'user_spot'
|
|
78
82
|
? (0, spot_context_1.createSpotContext)({
|
|
@@ -110,6 +114,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
110
114
|
domain: objectKind === 'user_spot'
|
|
111
115
|
? {
|
|
112
116
|
kind: 'user',
|
|
117
|
+
objectGeneration,
|
|
113
118
|
executionMode,
|
|
114
119
|
relocationCoordinationMode: this.options.userSpotRelocationCoordinationMode?.(meshName, implementation) ?? contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
|
|
115
120
|
}
|
|
@@ -129,16 +134,24 @@ class ZLinkSpotActivationLifecycle {
|
|
|
129
134
|
return activation;
|
|
130
135
|
}
|
|
131
136
|
catch (error) {
|
|
132
|
-
await
|
|
133
|
-
|
|
134
|
-
|
|
137
|
+
const cleanup = await Promise.allSettled([
|
|
138
|
+
timers.dispose(),
|
|
139
|
+
...(instance === undefined
|
|
140
|
+
? []
|
|
141
|
+
: [(0, handler_instance_scope_1.disposeLifecycleHandlers)(instance, this.options.detachedTaskRunner)]),
|
|
142
|
+
...(nativeSpot === undefined ? [] : [Promise.resolve().then(() => nativeSpot.dispose())])
|
|
143
|
+
]);
|
|
144
|
+
const cleanupErrors = cleanup
|
|
145
|
+
.filter((result) => result.status === 'rejected')
|
|
146
|
+
.map((result) => result.reason);
|
|
147
|
+
if (cleanupErrors.length > 0) {
|
|
148
|
+
throw new AggregateError([error, ...cleanupErrors], `Spot '${spotId}' relocation materialization cleanup failed.`);
|
|
135
149
|
}
|
|
136
|
-
await nativeSpot?.dispose().catch(() => undefined);
|
|
137
150
|
throw error;
|
|
138
151
|
}
|
|
139
152
|
}
|
|
140
|
-
async materializeInstance(meshName, instanceType, implementation, spotId, objectGeneration, signal) {
|
|
141
|
-
const serial = new spot_serial_turn_executor_1.ZLinkSpotSerialTurnExecutor(true, spotId);
|
|
153
|
+
async materializeInstance(meshName, instanceType, implementation, spotId, objectGeneration, signal, serialOwner) {
|
|
154
|
+
const serial = serialOwner?.serial ?? new spot_serial_turn_executor_1.ZLinkSpotSerialTurnExecutor(true, spotId);
|
|
142
155
|
const serialExecutor = new spot_serial_executor_1.ZLinkSpotSerialExecutor(serial, contracts_1.ZLinkUserSpotExecutionMode.SpotWide, spotId);
|
|
143
156
|
const actorHandlers = new actors_1.ZLinkSpotActorHandlerRegistryRuntime();
|
|
144
157
|
const handlers = new spot_handler_registry_1.DefaultZLinkSpotHandlerRegistry(actorHandlers);
|
|
@@ -160,7 +173,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
160
173
|
const context = (0, spot_context_1.createInstanceSpotContext)({
|
|
161
174
|
meshName,
|
|
162
175
|
spotId,
|
|
163
|
-
objectGeneration:
|
|
176
|
+
objectGeneration: objectGeneration,
|
|
164
177
|
handlers: instanceHandlers,
|
|
165
178
|
outbound,
|
|
166
179
|
timers,
|
|
@@ -171,7 +184,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
171
184
|
providerResolver: this.options.providerResolver,
|
|
172
185
|
runtimeEventPublisher: this.options.runtimeEventPublisher,
|
|
173
186
|
workerRuntime: this.options.workerRuntime,
|
|
174
|
-
close: this.contextClose(
|
|
187
|
+
close: this.contextClose(objectGeneration, () => activation)
|
|
175
188
|
});
|
|
176
189
|
instance = await (0, spot_provider_1.createFreshProviderInstance)(implementation, this.options.providerResolver, context);
|
|
177
190
|
Object.defineProperty(instance, 'context', {
|
|
@@ -190,6 +203,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
190
203
|
timers,
|
|
191
204
|
actorHandlers,
|
|
192
205
|
handlers,
|
|
206
|
+
executionBarrier: serialOwner?.executionBarrier,
|
|
193
207
|
externalActorCount: () => this.options.actorCountProvider?.(spotId) ?? 0
|
|
194
208
|
});
|
|
195
209
|
try {
|
|
@@ -199,14 +213,21 @@ class ZLinkSpotActivationLifecycle {
|
|
|
199
213
|
runtimeEventPublisher: this.options.runtimeEventPublisher,
|
|
200
214
|
signal
|
|
201
215
|
});
|
|
202
|
-
await
|
|
216
|
+
await (serialOwner === undefined
|
|
217
|
+
? serial.execute(() => instance.onInitialize?.())
|
|
218
|
+
: serial.postBarrierTurn(() => instance.onInitialize?.()));
|
|
203
219
|
this.options.registerActivation(activation);
|
|
204
220
|
return activation;
|
|
205
221
|
}
|
|
206
222
|
catch (error) {
|
|
207
|
-
await
|
|
208
|
-
|
|
209
|
-
|
|
223
|
+
const cleanup = await Promise.allSettled([
|
|
224
|
+
timers.dispose(),
|
|
225
|
+
(0, handler_instance_scope_1.disposeLifecycleHandlers)(instance, this.options.detachedTaskRunner)
|
|
226
|
+
]);
|
|
227
|
+
const cleanupErrors = cleanup
|
|
228
|
+
.filter((result) => result.status === 'rejected')
|
|
229
|
+
.map((result) => result.reason);
|
|
230
|
+
throw new AggregateError([error, ...cleanupErrors], `Instance Spot '${instanceType}' materialization failed for '${String(spotId)}'.`);
|
|
210
231
|
}
|
|
211
232
|
}
|
|
212
233
|
async discardInstance(activation) {
|
|
@@ -230,7 +251,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
230
251
|
errors.push(error);
|
|
231
252
|
}
|
|
232
253
|
try {
|
|
233
|
-
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot);
|
|
254
|
+
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot, this.options.detachedTaskRunner);
|
|
234
255
|
}
|
|
235
256
|
catch (error) {
|
|
236
257
|
errors.push(error);
|
|
@@ -241,13 +262,6 @@ class ZLinkSpotActivationLifecycle {
|
|
|
241
262
|
throw new AggregateError(errors, `Instance Spot '${String(activation.spotId)}' cleanup failed.`);
|
|
242
263
|
}
|
|
243
264
|
}
|
|
244
|
-
resourcesReleased(activation) {
|
|
245
|
-
const state = this.cleanupStates.get(activation);
|
|
246
|
-
return (state?.timersDisposed === true &&
|
|
247
|
-
state.handlersDisposed === true &&
|
|
248
|
-
state.nativeDisposed === true &&
|
|
249
|
-
state.locationReleased === true);
|
|
250
|
-
}
|
|
251
265
|
async create(meshName, spotType, spotId, request, signal, authority) {
|
|
252
266
|
const executionMode = this.options.userSpotExecutionMode?.(meshName, spotType) ??
|
|
253
267
|
contracts_1.ZLinkUserSpotExecutionMode.SpotWide;
|
|
@@ -296,7 +310,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
296
310
|
const context = (0, spot_context_1.createSpotContext)({
|
|
297
311
|
meshName,
|
|
298
312
|
spotId,
|
|
299
|
-
objectGeneration:
|
|
313
|
+
objectGeneration: spotGeneration,
|
|
300
314
|
handlers,
|
|
301
315
|
outbound,
|
|
302
316
|
timers,
|
|
@@ -315,7 +329,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
315
329
|
},
|
|
316
330
|
ensureOperationAllowed: () => activation?.ensureContextOperationAllowed(),
|
|
317
331
|
leaveActor: (actor, contextSignal) => this.options.leaveActor(spotId, actor, contextSignal, meshName),
|
|
318
|
-
close: this.contextClose(
|
|
332
|
+
close: this.contextClose(spotGeneration, () => activation)
|
|
319
333
|
});
|
|
320
334
|
try {
|
|
321
335
|
spot = await (0, spot_provider_1.createFreshProviderInstance)(spotType, this.options.providerResolver, context);
|
|
@@ -331,6 +345,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
331
345
|
spotId,
|
|
332
346
|
domain: {
|
|
333
347
|
kind: 'user',
|
|
348
|
+
objectGeneration: spotGeneration,
|
|
334
349
|
executionMode,
|
|
335
350
|
relocationCoordinationMode: this.options.userSpotRelocationCoordinationMode?.(meshName, spotType) ??
|
|
336
351
|
contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
|
|
@@ -360,9 +375,11 @@ class ZLinkSpotActivationLifecycle {
|
|
|
360
375
|
else {
|
|
361
376
|
const partialCleanup = await Promise.allSettled([
|
|
362
377
|
timers.dispose(),
|
|
363
|
-
...(spot === undefined
|
|
364
|
-
|
|
365
|
-
|
|
378
|
+
...(spot === undefined
|
|
379
|
+
? []
|
|
380
|
+
: [(0, handler_instance_scope_1.disposeLifecycleHandlers)(spot, this.options.detachedTaskRunner)]),
|
|
381
|
+
Promise.resolve().then(() => nativeSpot.dispose()),
|
|
382
|
+
Promise.resolve().then(() => this.options.locationClaim.release(locationClaim.meshName, spotId))
|
|
366
383
|
]);
|
|
367
384
|
const partialErrors = partialCleanup
|
|
368
385
|
.filter((result) => result.status === 'rejected')
|
|
@@ -389,7 +406,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
389
406
|
const context = (0, spot_context_1.createSpotContext)({
|
|
390
407
|
meshName,
|
|
391
408
|
spotId,
|
|
392
|
-
objectGeneration:
|
|
409
|
+
objectGeneration: objectGeneration,
|
|
393
410
|
handlers,
|
|
394
411
|
outbound,
|
|
395
412
|
timers,
|
|
@@ -408,7 +425,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
408
425
|
},
|
|
409
426
|
ensureOperationAllowed: () => activation?.ensureContextOperationAllowed(),
|
|
410
427
|
leaveActor: (actor, contextSignal) => this.options.leaveActor(spotId, actor, contextSignal, meshName),
|
|
411
|
-
close: this.contextClose(
|
|
428
|
+
close: this.contextClose(objectGeneration, () => activation)
|
|
412
429
|
});
|
|
413
430
|
spot = await (0, spot_provider_1.createFreshProviderInstance)(spotType, this.options.providerResolver, context);
|
|
414
431
|
Object.defineProperty(spot, 'context', {
|
|
@@ -421,6 +438,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
421
438
|
spotId,
|
|
422
439
|
domain: {
|
|
423
440
|
kind: 'user',
|
|
441
|
+
objectGeneration,
|
|
424
442
|
executionMode,
|
|
425
443
|
relocationCoordinationMode: this.options.userSpotRelocationCoordinationMode?.(meshName, spotType) ??
|
|
426
444
|
contracts_1.ZLinkSpotRelocationCoordinationMode.FrameworkManaged
|
|
@@ -437,51 +455,27 @@ class ZLinkSpotActivationLifecycle {
|
|
|
437
455
|
});
|
|
438
456
|
return await this.runCreateLifecycle(activation, spotType, request, locationClaim, undefined, signal);
|
|
439
457
|
}
|
|
440
|
-
contextClose(
|
|
441
|
-
return
|
|
458
|
+
contextClose(objectGeneration, activationProvider) {
|
|
459
|
+
return (signal) => {
|
|
442
460
|
const activation = activationProvider();
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
// so the callback never waits for work behind its own serial turn.
|
|
446
|
-
if (activation?.serial.isExecuting === true && !activation.serial.isCurrentTurn) {
|
|
447
|
-
activation.requestClose();
|
|
448
|
-
const retry = activation.serial.post(() => this.options.closeSpot(meshName, spotId, signal));
|
|
449
|
-
this.options.detachedTaskRunner?.runDetached(`spot close ${String(spotId)}`, async () => {
|
|
450
|
-
await retry;
|
|
451
|
-
});
|
|
452
|
-
if (this.options.detachedTaskRunner === undefined) {
|
|
453
|
-
void retry.catch(() => undefined);
|
|
454
|
-
}
|
|
455
|
-
return true;
|
|
461
|
+
if (activation === undefined) {
|
|
462
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, 'Spot context Close requires its active generation.');
|
|
456
463
|
}
|
|
457
|
-
return
|
|
464
|
+
return this.options.requestContextClose(activation, objectGeneration, signal);
|
|
458
465
|
};
|
|
459
466
|
}
|
|
460
|
-
async
|
|
461
|
-
|
|
462
|
-
await this.closeAfterSeal(activation, seal, signal, reason);
|
|
463
|
-
}
|
|
464
|
-
async closeAfterSeal(activation, seal, signal, reason = contracts_1.ZLinkSpotCloseReason.ExplicitClose, deadline) {
|
|
465
|
-
try {
|
|
466
|
-
await activation.waitForExecutionQuiescence(seal, signal);
|
|
467
|
-
}
|
|
468
|
-
catch (error) {
|
|
469
|
-
activation.abortExecutionSeal(seal);
|
|
470
|
-
throw error;
|
|
471
|
-
}
|
|
472
|
-
// The eager occupancy check that authorized this seal (startClose ->
|
|
473
|
-
// canClose()) ran before quiescence, so it can miss an actor join that
|
|
474
|
-
// was already queued on the serial executor at that moment. Recheck now
|
|
475
|
-
// that every turn admitted before the seal has finished, and release the
|
|
476
|
-
// seal instead of closing an occupied Spot.
|
|
477
|
-
if (!activation.canClose(reason)) {
|
|
478
|
-
activation.abortExecutionSeal(seal);
|
|
479
|
-
throw new spot_activation_state_1.ZLinkSpotCloseOccupiedError(activation.spotId);
|
|
480
|
-
}
|
|
467
|
+
async sealForClose(activation, seal, signal) {
|
|
468
|
+
await activation.waitForExecutionQuiescence(seal, signal);
|
|
481
469
|
if (!activation.commitExecutionSeal(seal)) {
|
|
482
470
|
throw new Error(`Spot '${String(activation.spotId)}' close seal is stale.`);
|
|
483
471
|
}
|
|
484
|
-
|
|
472
|
+
}
|
|
473
|
+
/** Returns the OnClosing failure, which cleanup records and does not rethrow. */
|
|
474
|
+
async cleanupClosedActivation(activation, reason = contracts_1.ZLinkSpotCloseReason.ExplicitClose, deadline) {
|
|
475
|
+
return await this.cleanupActivation(activation, activation.meshName, true, undefined, reason, deadline, true);
|
|
476
|
+
}
|
|
477
|
+
async cleanupFailedIncarnation(activation) {
|
|
478
|
+
await this.cleanupActivation(activation, activation.meshName, false, undefined, contracts_1.ZLinkSpotCloseReason.ExplicitClose, undefined, true);
|
|
485
479
|
}
|
|
486
480
|
async dispatchActorPacket(activation, actorId, parts, returnResponse = false, remoteBoundSessionTarget, fallbackActorRef, requestTerminal, messageFollowOrigin) {
|
|
487
481
|
return await this.actorAdmission.dispatchActorPacket(activation, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal, messageFollowOrigin);
|
|
@@ -536,25 +530,28 @@ class ZLinkSpotActivationLifecycle {
|
|
|
536
530
|
throw error;
|
|
537
531
|
}
|
|
538
532
|
}
|
|
539
|
-
async cleanupActivation(activation, locationMeshName, notifyClosing, signal, reason = contracts_1.ZLinkSpotCloseReason.ExplicitClose, deadline) {
|
|
533
|
+
async cleanupActivation(activation, locationMeshName, notifyClosing, signal, reason = contracts_1.ZLinkSpotCloseReason.ExplicitClose, deadline, owningLifecycle = false) {
|
|
540
534
|
(0, abort_1.throwIfAborted)(signal);
|
|
541
535
|
const state = this.cleanupStates.get(activation) ?? {
|
|
542
536
|
closingAttempted: false,
|
|
543
537
|
timersDisposed: false,
|
|
538
|
+
serialDisposed: false,
|
|
544
539
|
handlersDisposed: false,
|
|
540
|
+
actorDispatchDisposed: false,
|
|
545
541
|
nativeDisposed: false,
|
|
546
542
|
locationReleased: false
|
|
547
543
|
};
|
|
548
544
|
this.cleanupStates.set(activation, state);
|
|
549
545
|
if (state.inFlight !== undefined)
|
|
550
546
|
return await state.inFlight;
|
|
551
|
-
state.inFlight = this.runCleanup(activation, locationMeshName, notifyClosing, reason, state, deadline).finally(() => {
|
|
547
|
+
state.inFlight = this.runCleanup(activation, locationMeshName, notifyClosing, reason, state, deadline, owningLifecycle).finally(() => {
|
|
552
548
|
state.inFlight = undefined;
|
|
553
549
|
});
|
|
554
550
|
return await state.inFlight;
|
|
555
551
|
}
|
|
556
|
-
async runCleanup(activation, locationMeshName, notifyClosing, reason, state, deadline) {
|
|
552
|
+
async runCleanup(activation, locationMeshName, notifyClosing, reason, state, deadline, owningLifecycle = false) {
|
|
557
553
|
const errors = [];
|
|
554
|
+
let closingFailure;
|
|
558
555
|
const cleanup = async (operation, completed) => {
|
|
559
556
|
try {
|
|
560
557
|
await operation();
|
|
@@ -566,26 +563,56 @@ class ZLinkSpotActivationLifecycle {
|
|
|
566
563
|
};
|
|
567
564
|
if (notifyClosing && !state.closingAttempted) {
|
|
568
565
|
state.closingAttempted = true;
|
|
569
|
-
|
|
566
|
+
try {
|
|
567
|
+
// OnClosing is user code: it runs as a Framework turn through the
|
|
568
|
+
// execution gate while the Close lifecycle item keeps its FIFO slot.
|
|
569
|
+
await activation.serial.postBarrierTurn(() => (0, spot_closing_1.invokeSpotClosing)(activation.spot.onClosing?.bind(activation.spot), reason, deadline));
|
|
570
|
+
}
|
|
571
|
+
catch (error) {
|
|
572
|
+
// An OnClosing failure is diagnostic and cleanup continues. It is
|
|
573
|
+
// returned so host shutdown can classify its teardown outcome.
|
|
574
|
+
this.options.closeErrorSink?.reportRuntimeTaskException(`spot ${String(activation.spotId)} onClosing`, error);
|
|
575
|
+
closingFailure = error;
|
|
576
|
+
}
|
|
570
577
|
}
|
|
571
578
|
if (!state.timersDisposed) {
|
|
572
579
|
await cleanup(() => activation.timers.dispose(), () => {
|
|
573
580
|
state.timersDisposed = true;
|
|
574
581
|
});
|
|
575
582
|
}
|
|
576
|
-
|
|
583
|
+
if (!state.serialDisposed && state.timersDisposed) {
|
|
584
|
+
await cleanup(() => owningLifecycle
|
|
585
|
+
? activation.serialExecutor.closeChildren()
|
|
586
|
+
: activation.serialExecutor.close(), () => {
|
|
587
|
+
state.serialDisposed = true;
|
|
588
|
+
});
|
|
589
|
+
}
|
|
577
590
|
if (!state.handlersDisposed) {
|
|
578
|
-
await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot), () => {
|
|
591
|
+
await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot, this.options.detachedTaskRunner), () => {
|
|
579
592
|
state.handlersDisposed = true;
|
|
580
593
|
});
|
|
581
594
|
}
|
|
595
|
+
if (!state.actorDispatchDisposed) {
|
|
596
|
+
await cleanup(() => activation.actorDispatch?.dispose(), () => {
|
|
597
|
+
state.actorDispatchDisposed = true;
|
|
598
|
+
});
|
|
599
|
+
}
|
|
582
600
|
if (!state.nativeDisposed) {
|
|
583
|
-
await cleanup(() => activation.actorDispatch?.dispose(), () => undefined);
|
|
584
601
|
await cleanup(() => activation.nativeSpot?.dispose(), () => {
|
|
585
602
|
state.nativeDisposed = true;
|
|
586
603
|
});
|
|
587
604
|
}
|
|
588
|
-
if (!state.locationReleased
|
|
605
|
+
if (!state.locationReleased &&
|
|
606
|
+
// Spot messaging §7 step 3: an Instance Spot's ExplicitClose releases its authority
|
|
607
|
+
// through the Close operation's Closing fence; a User Spot still releases its location.
|
|
608
|
+
!(owningLifecycle &&
|
|
609
|
+
reason === contracts_1.ZLinkSpotCloseReason.ExplicitClose &&
|
|
610
|
+
activation.domain.kind === 'instance') &&
|
|
611
|
+
state.timersDisposed &&
|
|
612
|
+
state.serialDisposed &&
|
|
613
|
+
state.handlersDisposed &&
|
|
614
|
+
state.actorDispatchDisposed &&
|
|
615
|
+
state.nativeDisposed) {
|
|
589
616
|
await cleanup(() => this.options.releaseLocation(activation, locationMeshName, activation.spotId), () => {
|
|
590
617
|
state.locationReleased = true;
|
|
591
618
|
});
|
|
@@ -595,6 +622,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
595
622
|
if (errors.length > 1) {
|
|
596
623
|
throw new AggregateError(errors, `Spot '${activation.spotId}' cleanup failed.`);
|
|
597
624
|
}
|
|
625
|
+
return closingFailure;
|
|
598
626
|
}
|
|
599
627
|
decodeCreateReply(reply) {
|
|
600
628
|
if (reply === undefined) {
|
|
@@ -610,9 +638,3 @@ class ZLinkSpotActivationLifecycle {
|
|
|
610
638
|
}
|
|
611
639
|
}
|
|
612
640
|
exports.ZLinkSpotActivationLifecycle = ZLinkSpotActivationLifecycle;
|
|
613
|
-
function toContextGeneration(generation) {
|
|
614
|
-
if (generation < 0n || generation > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
615
|
-
throw new configuration_1.ZLinkConfigurationException(`Spot object generation '${generation}' cannot be represented by the Node.js public context.`);
|
|
616
|
-
}
|
|
617
|
-
return Number(generation);
|
|
618
|
-
}
|
|
@@ -6,14 +6,13 @@ import { type ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
|
6
6
|
import type { ZLinkSpotActivationLifecycleOptions } from './spot-activation';
|
|
7
7
|
import { ZLinkSpotActivation } from './spot-activation-state';
|
|
8
8
|
import { ZLinkSpotActorJoinDispatch } from './spot-actor-join-dispatch';
|
|
9
|
-
type AdmissionOptions = Pick<ZLinkSpotActivationLifecycleOptions, 'actorHandoffRuntime' | 'admission' | 'actorResolver' | 'actorTransferRuntime' | 'boundSessionRuntime' | 'detachedTaskRunner' | 'dispatchErrors' | 'locationClaim' | 'messageSerializers' | 'nativeSpotNodeProvider' | '
|
|
9
|
+
type AdmissionOptions = Pick<ZLinkSpotActivationLifecycleOptions, 'actorHandoffRuntime' | 'admission' | 'actorResolver' | 'actorTransferRuntime' | 'boundSessionRuntime' | 'detachedTaskRunner' | 'dispatchErrors' | 'locationClaim' | 'messageSerializers' | 'nativeSpotNodeProvider' | 'createTopicMessage' | 'providerResolver' | 'runtimeEventPublisher' | 'routeToActorJoinPrewarm'>;
|
|
10
10
|
export declare class ZLinkSpotActorAdmissionCoordinator {
|
|
11
11
|
private readonly options;
|
|
12
12
|
constructor(options: AdmissionOptions);
|
|
13
13
|
dispatchActorPacket(activation: ZLinkSpotActivation, actorId: string, parts: readonly Message[], returnResponse?: boolean, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, requestTerminal?: (response: unknown) => Promise<void> | void, messageFollowOrigin?: ZLinkMessageFollowOrigin): Promise<unknown>;
|
|
14
14
|
attachNativeActorJoinDispatch(activation: ZLinkSpotActivation, nativeSpot: ZLinkBackendSpot | undefined): ZLinkSpotActorJoinDispatch | undefined;
|
|
15
15
|
private dispatchActorPacketInActorTurn;
|
|
16
|
-
private commitNativeActorTransaction;
|
|
17
16
|
private commitTransferredActorTransaction;
|
|
18
17
|
private replayActorBacklog;
|
|
19
18
|
}
|
|
@@ -21,7 +21,6 @@ class ZLinkSpotActorAdmissionCoordinator {
|
|
|
21
21
|
return undefined;
|
|
22
22
|
const nativeDispatch = new spot_actor_join_dispatch_1.ZLinkSpotActorJoinDispatch({
|
|
23
23
|
nativeSpot,
|
|
24
|
-
createReceived: requireBackendValueFactory(this.options.createReceived, 'Received'),
|
|
25
24
|
createTopicMessage: requireBackendValueFactory(this.options.createTopicMessage, 'TopicMessage'),
|
|
26
25
|
serial: activation.serial,
|
|
27
26
|
actors: {
|
|
@@ -36,9 +35,8 @@ class ZLinkSpotActorAdmissionCoordinator {
|
|
|
36
35
|
kind: 'enabled',
|
|
37
36
|
runtime: this.options.actorTransferRuntime
|
|
38
37
|
},
|
|
39
|
-
commitNativeActor: (actor) => this.commitNativeActorTransaction(activation, actor),
|
|
40
38
|
commitActorDeparture: (actorId) => activation.commitActorDeparture(actorId),
|
|
41
|
-
commitTransferredActor: (actor, backlog) => this.commitTransferredActorTransaction(activation, actor, backlog)
|
|
39
|
+
commitTransferredActor: (actor, backlog, sealedSession) => this.commitTransferredActorTransaction(activation, actor, backlog, sealedSession)
|
|
42
40
|
},
|
|
43
41
|
packets: {
|
|
44
42
|
handle: (delivery) => this.dispatchActorPacket(activation, delivery.actorId, delivery.parts, delivery.returnResponse, delivery.remoteBoundSessionTarget, delivery.fallbackActorRef),
|
|
@@ -46,10 +44,6 @@ class ZLinkSpotActorAdmissionCoordinator {
|
|
|
46
44
|
const node = this.options.nativeSpotNodeProvider?.(activation.meshName);
|
|
47
45
|
if (node === undefined || (0, routing_id_1.routingIdsEqual)(sourceNodeRid, node.routingId))
|
|
48
46
|
return;
|
|
49
|
-
const target = this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(sourceNodeRid, sourceSessionRid);
|
|
50
|
-
if (target !== undefined) {
|
|
51
|
-
this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(actor.actorId, target);
|
|
52
|
-
}
|
|
53
47
|
node.bindRemoteActorSession(actor, sourceNodeRid, sourceSessionRid);
|
|
54
48
|
},
|
|
55
49
|
replyNoBind: (info, parts, result) => this.options
|
|
@@ -106,7 +100,6 @@ class ZLinkSpotActorAdmissionCoordinator {
|
|
|
106
100
|
: (activation.resolveJoinedActor(targetActorId) ??
|
|
107
101
|
this.options.actorResolver?.(targetActorId)),
|
|
108
102
|
actorLeft: (targetActorId) => activation.hasDepartedActor(targetActorId),
|
|
109
|
-
onRemoteBoundSessionTarget: (targetActorId, target) => this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
|
|
110
103
|
onDisconnectActor: (actor) => activation.serial.execute(() => activation.spot.onDisconnectActor?.(actor)),
|
|
111
104
|
actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(this.options.boundSessionRuntime),
|
|
112
105
|
actorErrorSender: this.options.boundSessionRuntime?.sendActorError.bind(this.options.boundSessionRuntime),
|
|
@@ -116,37 +109,7 @@ class ZLinkSpotActorAdmissionCoordinator {
|
|
|
116
109
|
routeToActorJoinPrewarm: this.options.routeToActorJoinPrewarm
|
|
117
110
|
}).dispatch(actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal);
|
|
118
111
|
}
|
|
119
|
-
async
|
|
120
|
-
const transfer = this.options.actorTransferRuntime;
|
|
121
|
-
let snapshot;
|
|
122
|
-
let rollbackMembership;
|
|
123
|
-
let routeSwitchStarted = false;
|
|
124
|
-
try {
|
|
125
|
-
snapshot = await transfer?.claimNativeActorLocation(actor, activation.spotId, activation.meshName);
|
|
126
|
-
transfer?.commitRoutedActor(actor, activation.spotId, activation.spot);
|
|
127
|
-
rollbackMembership = activation.commitActorJoin(actor);
|
|
128
|
-
activation.beginActorTransfer(actor.context.actorId);
|
|
129
|
-
await activation.serial.execute(() => activation.spot.onJoinedActor(actor));
|
|
130
|
-
routeSwitchStarted = true;
|
|
131
|
-
await transfer?.publishRoutedActorOwnership(actor);
|
|
132
|
-
await transfer?.openRoutedActorSession(actor);
|
|
133
|
-
activation.cancelActorTransfer(actor.context.actorId);
|
|
134
|
-
}
|
|
135
|
-
catch (error) {
|
|
136
|
-
if (routeSwitchStarted)
|
|
137
|
-
throw error;
|
|
138
|
-
rollbackMembership?.();
|
|
139
|
-
try {
|
|
140
|
-
if (snapshot !== undefined)
|
|
141
|
-
await transfer?.rollbackNativeActorJoin(actor, snapshot);
|
|
142
|
-
}
|
|
143
|
-
catch (rollbackError) {
|
|
144
|
-
throw new AggregateError([error, rollbackError], 'Native actor admission and rollback both failed.');
|
|
145
|
-
}
|
|
146
|
-
throw error;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
async commitTransferredActorTransaction(activation, actor, backlog) {
|
|
112
|
+
async commitTransferredActorTransaction(activation, actor, backlog, sealedSession) {
|
|
150
113
|
const transfer = this.options.actorTransferRuntime;
|
|
151
114
|
let routeSwitchStarted = false;
|
|
152
115
|
try {
|
|
@@ -157,7 +120,7 @@ class ZLinkSpotActorAdmissionCoordinator {
|
|
|
157
120
|
const results = backlog.length === 0 ? [] : await this.replayActorBacklog(activation, actor, backlog);
|
|
158
121
|
await transfer?.claimRoutedActorLocation(actor, activation.spotId, activation.meshName);
|
|
159
122
|
routeSwitchStarted = true;
|
|
160
|
-
await transfer?.publishRoutedActorOwnership(actor);
|
|
123
|
+
await transfer?.publishRoutedActorOwnership(actor, sealedSession);
|
|
161
124
|
await transfer?.openRoutedActorSession(actor);
|
|
162
125
|
activation.cancelActorTransfer(actor.context.actorId);
|
|
163
126
|
return results;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type { RoutingId, ZLinkActor, ZLinkMessage, ZLinkMessageSerializer, ZLinkSpotActorJoinResult } from '../../contracts';
|
|
2
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
3
|
-
import type { ZLinkBackendActorRef, ZLinkBackendActorRecvInfo, ZLinkBackendReceived, ZLinkBackendSpot, ZLinkBackendTopicMessage } from '../backend/contracts';
|
|
4
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
5
|
-
import type {
|
|
6
|
-
type RuntimeMessage = Message;
|
|
3
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
7
4
|
import type { ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
8
|
-
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
9
|
-
import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
|
|
10
|
-
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
11
|
-
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
12
5
|
import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
|
|
6
|
+
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
7
|
+
import { type ZLinkBackendActorRecvInfo, type ZLinkBackendActorRef, type ZLinkBackendSpot, type ZLinkBackendTopicMessage } from '../backend/contracts';
|
|
8
|
+
import type { RequestResult } from '../backend/runtime-values';
|
|
9
|
+
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
13
10
|
import type { ZLinkActorPacketDelivery } from './spot-actor-packet-dispatch';
|
|
11
|
+
import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
|
|
14
12
|
import type { ZLinkSpotActorTransferRuntime, ZLinkSpotBoundSessionRuntime } from './spot-runtime-ports';
|
|
13
|
+
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
14
|
+
type RuntimeMessage = Message;
|
|
15
15
|
/**
|
|
16
16
|
* Minimal lifecycle callback surface required by the native join and actor
|
|
17
17
|
* lifecycle drains. User and Entry Spots differ in ownership policy, but both
|
|
@@ -33,13 +33,12 @@ interface ZLinkSpotActorAdmissionRuntime {
|
|
|
33
33
|
readonly kind: 'enabled';
|
|
34
34
|
readonly runtime: ZLinkSpotActorTransferRuntime;
|
|
35
35
|
};
|
|
36
|
-
readonly commitNativeActor?: (actor: ZLinkActor) => Promise<void>;
|
|
37
36
|
readonly commitActorDeparture?: (actorId: string) => void;
|
|
38
|
-
readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[]) => Promise<readonly ZLinkActorHandoffResult[]>;
|
|
37
|
+
readonly commitTransferredActor?: (actor: ZLinkActor, backlog: readonly ZLinkActorHandoffPacket[], sealedSession: ZLinkRemoteBoundSessionTarget | undefined) => Promise<readonly ZLinkActorHandoffResult[]>;
|
|
39
38
|
}
|
|
40
39
|
interface ZLinkSpotActorPacketRuntime {
|
|
41
40
|
readonly handle: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
|
|
42
|
-
readonly bindRemoteSession?: (actor: ZLinkBackendActorRef, sourceNodeRid: RoutingId, sourceSessionRid: RoutingId
|
|
41
|
+
readonly bindRemoteSession?: (actor: ZLinkBackendActorRef, sourceNodeRid: RoutingId, sourceSessionRid: RoutingId) => void;
|
|
43
42
|
readonly replyNoBind?: (info: ZLinkBackendActorRecvInfo, parts: readonly Message[], result: RequestResult) => void;
|
|
44
43
|
}
|
|
45
44
|
export interface ZLinkDetachedTaskRunner {
|
|
@@ -47,7 +46,6 @@ export interface ZLinkDetachedTaskRunner {
|
|
|
47
46
|
}
|
|
48
47
|
interface ZLinkSpotActorJoinDispatchOptions {
|
|
49
48
|
readonly nativeSpot: ZLinkBackendSpot;
|
|
50
|
-
readonly createReceived: () => ZLinkBackendReceived;
|
|
51
49
|
readonly createTopicMessage: () => ZLinkBackendTopicMessage;
|
|
52
50
|
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
53
51
|
readonly actors: ZLinkSpotActorAdmissionRuntime;
|
|
@@ -61,13 +59,10 @@ interface ZLinkSpotActorJoinDispatchOptions {
|
|
|
61
59
|
}
|
|
62
60
|
export declare class ZLinkSpotActorJoinDispatch {
|
|
63
61
|
private readonly options;
|
|
64
|
-
private draining;
|
|
65
|
-
private redrainRequested;
|
|
66
62
|
private readonly nativeSpotId;
|
|
67
63
|
private readonly subscriptions;
|
|
68
64
|
private readonly actorLifecycleDrain;
|
|
69
65
|
private readonly actorPacketDrain;
|
|
70
|
-
private readonly nativeActorJoinAdmission;
|
|
71
66
|
private readonly routedFrames;
|
|
72
67
|
private readonly nativeSpot;
|
|
73
68
|
constructor(options: ZLinkSpotActorJoinDispatchOptions);
|
|
@@ -76,8 +71,5 @@ export declare class ZLinkSpotActorJoinDispatch {
|
|
|
76
71
|
dispose(): void;
|
|
77
72
|
attach(): void;
|
|
78
73
|
private runDetached;
|
|
79
|
-
private drain;
|
|
80
|
-
private redrainWasRequested;
|
|
81
|
-
private drainAvailableActorJoins;
|
|
82
74
|
}
|
|
83
75
|
export {};
|