@zlink-systems/framework 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
- package/dist/contracts/Channels/Calls.d.ts +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/Builders.d.ts +0 -1
- package/dist/contracts/Configuration/Configs.d.ts +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +2 -2
- package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
- package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +49 -153
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
- package/dist/runtime/actors/actor-request-deadline.js +6 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +7 -27
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +73 -59
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.d.ts +1 -1
- package/dist/runtime/channels/channel-envelope.js +51 -39
- package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
- package/dist/runtime/channels/channel-outbound-operations.js +25 -42
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
- package/dist/runtime/channels/channel-runtime-manager.js +13 -10
- package/dist/runtime/channels/channel-socket-options.js +3 -12
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +240 -177
- package/dist/runtime/channels/channel-transports.d.ts +21 -31
- package/dist/runtime/channels/channel-transports.js +80 -62
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +1 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
- package/dist/runtime/channels/source-spot-router.d.ts +1 -1
- package/dist/runtime/channels/source-spot-router.js +2 -4
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-node-route-transport.js +5 -5
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
- package/dist/runtime/host/actor-packet-relay.js +54 -99
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -171
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +15 -28
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +3 -12
- package/dist/runtime/host/spot-address-transport.js +78 -220
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +309 -336
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/request-deadline.d.ts +3 -0
- package/dist/runtime/messaging/request-deadline.js +39 -0
- package/dist/runtime/messaging/submission-result.d.ts +4 -0
- package/dist/runtime/messaging/submission-result.js +56 -1
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +7 -8
- package/dist/runtime/spots/spot-outbound.js +21 -23
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -2
- package/dist/runtime/streams/index.d.ts +16 -17
- package/dist/runtime/streams/index.js +22 -23
- package/dist/runtime/streams/managed-stream.d.ts +5 -2
- package/dist/runtime/streams/managed-stream.js +20 -13
- package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +6 -8
- package/dist/runtime/streams/session-calls.js +6 -22
- package/dist/runtime/streams/session-context.d.ts +10 -10
- package/dist/runtime/streams/session-context.js +25 -10
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
- package/src/contracts/Channels/Calls.ts +1 -1
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/Builders.ts +0 -1
- package/src/contracts/Configuration/Configs.ts +0 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +2 -2
- package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
- package/src/contracts/Streams/IZLinkSession.ts +2 -3
- package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +85 -218
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +4 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +14 -37
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +139 -102
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +74 -57
- package/src/runtime/channels/channel-outbound-operations.ts +40 -55
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +12 -30
- package/src/runtime/channels/channel-socket-options.ts +8 -15
- package/src/runtime/channels/channel-socket-registry.ts +291 -196
- package/src/runtime/channels/channel-transports.ts +168 -145
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/local-spot-route-transport.ts +1 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
- package/src/runtime/channels/source-spot-router.ts +2 -9
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +7 -9
- package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +63 -160
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -320
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +16 -57
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +175 -356
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +457 -482
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/request-deadline.ts +58 -0
- package/src/runtime/messaging/submission-result.ts +72 -2
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +59 -47
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
- package/src/runtime/streams/bound-session-service.ts +22 -2
- package/src/runtime/streams/index.ts +78 -68
- package/src/runtime/streams/managed-stream.ts +32 -23
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +11 -36
- package/src/runtime/streams/session-context.ts +60 -25
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { ZLinkLocalSpotCreateResult } from './spot-manager-internal-contracts';
|
|
3
|
-
import { ZLinkSpotCloseReason } from '../../contracts';
|
|
1
|
+
import { type RoutingId, type Type, type ZLinkSpot, type ZLinkSpotInfo, ZLinkSpotCloseReason } from '../../contracts';
|
|
4
2
|
import type { ZLinkSpotActivation } from './spot-activation-state';
|
|
3
|
+
import type { ZLinkLocalSpotCreateResult } from './spot-manager-internal-contracts';
|
|
5
4
|
export { ZLinkSpotActivation } from './spot-activation-state';
|
|
6
5
|
export interface ZLinkSpotActivationOperation {
|
|
7
6
|
readonly owner: boolean;
|
|
@@ -14,7 +13,6 @@ export interface ZLinkSpotCloseOperation {
|
|
|
14
13
|
readonly started: boolean;
|
|
15
14
|
}
|
|
16
15
|
export declare class ZLinkSpotActivationRegistry {
|
|
17
|
-
private readonly isCommittedClose;
|
|
18
16
|
private nextId;
|
|
19
17
|
private readonly activations;
|
|
20
18
|
private readonly staged;
|
|
@@ -24,7 +22,7 @@ export declare class ZLinkSpotActivationRegistry {
|
|
|
24
22
|
private readonly emptyWaiters;
|
|
25
23
|
private readonly lifecycleMetrics;
|
|
26
24
|
private activeScan;
|
|
27
|
-
constructor(metrics?: import('../diagnostics').ZLinkRuntimeMetrics
|
|
25
|
+
constructor(metrics?: import('../diagnostics').ZLinkRuntimeMetrics);
|
|
28
26
|
allocateSpotId(meshName: string): RoutingId;
|
|
29
27
|
resolve(meshName: string, spotId: RoutingId): ZLinkSpotActivation | undefined;
|
|
30
28
|
resolveUnique(spotId: RoutingId): ZLinkSpotActivation | undefined;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkSpotActivationRegistry = exports.ZLinkSpotActivation = void 0;
|
|
4
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
5
4
|
const contracts_1 = require("../../contracts");
|
|
6
|
-
const configuration_1 = require("../configuration");
|
|
7
5
|
const abort_1 = require("../abort");
|
|
6
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
8
7
|
const spot_lifecycle_metrics_1 = require("./spot-lifecycle-metrics");
|
|
8
|
+
const DEFAULT_ACTIVE_ACTIVATION_BATCH_SIZE = 64;
|
|
9
9
|
var spot_activation_state_1 = require("./spot-activation-state");
|
|
10
10
|
Object.defineProperty(exports, "ZLinkSpotActivation", { enumerable: true, get: function () { return spot_activation_state_1.ZLinkSpotActivation; } });
|
|
11
11
|
class ZLinkSpotActivationRegistry {
|
|
12
|
-
isCommittedClose;
|
|
13
12
|
nextId = 1;
|
|
14
13
|
activations = new Map();
|
|
15
14
|
staged = new Set();
|
|
@@ -19,8 +18,7 @@ class ZLinkSpotActivationRegistry {
|
|
|
19
18
|
emptyWaiters = new Set();
|
|
20
19
|
lifecycleMetrics;
|
|
21
20
|
activeScan;
|
|
22
|
-
constructor(metrics
|
|
23
|
-
this.isCommittedClose = isCommittedClose;
|
|
21
|
+
constructor(metrics) {
|
|
24
22
|
this.lifecycleMetrics = new spot_lifecycle_metrics_1.ZLinkSpotLifecycleMetrics(metrics);
|
|
25
23
|
}
|
|
26
24
|
allocateSpotId(meshName) {
|
|
@@ -33,28 +31,16 @@ class ZLinkSpotActivationRegistry {
|
|
|
33
31
|
}
|
|
34
32
|
resolve(meshName, spotId) {
|
|
35
33
|
const key = spotActivationKey(meshName, spotId);
|
|
36
|
-
return this.
|
|
37
|
-
this.closing.has(key) ||
|
|
38
|
-
this.failedClose.has(key) ||
|
|
39
|
-
this.staged.has(key)
|
|
40
|
-
? undefined
|
|
41
|
-
: this.activations.get(key);
|
|
34
|
+
return this.staged.has(key) ? undefined : this.activations.get(key);
|
|
42
35
|
}
|
|
43
36
|
resolveUnique(spotId) {
|
|
44
37
|
const matches = [...this.activations.values()].filter((activation) => String(activation.spotId) === String(spotId) &&
|
|
45
|
-
!this.
|
|
46
|
-
!this.staged.has(spotActivationKey(activation.meshName, activation.spotId)) &&
|
|
47
|
-
!this.closing.has(spotActivationKey(activation.meshName, activation.spotId)) &&
|
|
48
|
-
!this.failedClose.has(spotActivationKey(activation.meshName, activation.spotId)));
|
|
38
|
+
!this.staged.has(spotActivationKey(activation.meshName, activation.spotId)));
|
|
49
39
|
return matches.length === 1 ? matches[0] : undefined;
|
|
50
40
|
}
|
|
51
41
|
has(meshName, spotId) {
|
|
52
42
|
const key = spotActivationKey(meshName, spotId);
|
|
53
|
-
return
|
|
54
|
-
!this.staged.has(key) &&
|
|
55
|
-
!this.closing.has(key) &&
|
|
56
|
-
!this.failedClose.has(key) &&
|
|
57
|
-
this.activations.has(key));
|
|
43
|
+
return !this.staged.has(key) && this.activations.has(key);
|
|
58
44
|
}
|
|
59
45
|
list(meshName) {
|
|
60
46
|
return [...this.activations.values()]
|
|
@@ -62,10 +48,7 @@ class ZLinkSpotActivationRegistry {
|
|
|
62
48
|
if (activation.meshName !== meshName)
|
|
63
49
|
return false;
|
|
64
50
|
const key = spotActivationKey(activation.meshName, activation.spotId);
|
|
65
|
-
return
|
|
66
|
-
!this.staged.has(key) &&
|
|
67
|
-
!this.closing.has(key) &&
|
|
68
|
-
!this.failedClose.has(key));
|
|
51
|
+
return !this.staged.has(key);
|
|
69
52
|
})
|
|
70
53
|
.map((activation) => String(activation.spotId))
|
|
71
54
|
.sort((left, right) => left.localeCompare(right))
|
|
@@ -88,7 +71,7 @@ class ZLinkSpotActivationRegistry {
|
|
|
88
71
|
hasActiveActivations() {
|
|
89
72
|
return this.activations.size > 0;
|
|
90
73
|
}
|
|
91
|
-
nextActiveActivationBatch(limit =
|
|
74
|
+
nextActiveActivationBatch(limit = DEFAULT_ACTIVE_ACTIVATION_BATCH_SIZE) {
|
|
92
75
|
if (!Number.isInteger(limit) || limit <= 0)
|
|
93
76
|
throw new RangeError('Activation scan limit must be positive.');
|
|
94
77
|
if (this.activations.size === 0) {
|
|
@@ -205,35 +188,16 @@ class ZLinkSpotActivationRegistry {
|
|
|
205
188
|
}
|
|
206
189
|
getOrBegin(meshName, spotType, spotId, create) {
|
|
207
190
|
const key = spotActivationKey(meshName, spotId);
|
|
208
|
-
if (this.isCommittedClose(meshName, spotId)) {
|
|
209
|
-
return {
|
|
210
|
-
owner: false,
|
|
211
|
-
ready: Promise.reject((0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestRejected, `Spot '${String(spotId)}' is Closing.`))
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
const closing = this.closing.get(key);
|
|
215
|
-
if (closing !== undefined) {
|
|
216
|
-
return {
|
|
217
|
-
owner: false,
|
|
218
|
-
ready: closing.ready
|
|
219
|
-
.catch(() => undefined)
|
|
220
|
-
.then(() => this.getOrBegin(meshName, spotType, spotId, create).ready)
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
if (this.failedClose.has(key)) {
|
|
224
|
-
return {
|
|
225
|
-
owner: false,
|
|
226
|
-
ready: Promise.reject(new configuration_1.ZLinkConfigurationException(`Spot '${spotId}' cleanup has not completed.`))
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
191
|
const existing = this.activations.get(key);
|
|
230
192
|
if (existing !== undefined) {
|
|
231
|
-
if (existing.spotType !== spotType) {
|
|
232
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotTypeMismatch, `Spot '${spotId}' already exists with a different spot type.`);
|
|
233
|
-
}
|
|
234
193
|
return {
|
|
235
194
|
owner: false,
|
|
236
|
-
ready:
|
|
195
|
+
ready: existing.serial.execute(() => {
|
|
196
|
+
if (existing.spotType !== spotType) {
|
|
197
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotTypeMismatch, `Spot '${spotId}' already exists with a different spot type.`);
|
|
198
|
+
}
|
|
199
|
+
return { spotId, state: contracts_1.ZLinkSpotCreateState.Existing };
|
|
200
|
+
})
|
|
237
201
|
};
|
|
238
202
|
}
|
|
239
203
|
const pending = this.pending.get(key);
|
|
@@ -72,7 +72,7 @@ export declare class ZLinkSpotActivation {
|
|
|
72
72
|
completeConsumedRelocationBoundary(outcome: ZLinkSpotRelocationReadyOutcome): Promise<void>;
|
|
73
73
|
notifyRelocatedBoundary(): Promise<void>;
|
|
74
74
|
executeActor<T>(actorId: string, operation: (serial: ZLinkSpotSerialTurnExecutor) => Promise<T> | T): Promise<T>;
|
|
75
|
-
sealExecution(
|
|
75
|
+
sealExecution(kind?: ZLinkExecutionBarrierSeal['kind']): ZLinkExecutionBarrierSeal;
|
|
76
76
|
waitForExecutionQuiescence(seal: ZLinkExecutionBarrierSeal, signal?: AbortSignal): Promise<void>;
|
|
77
77
|
abortExecutionSeal(seal: ZLinkExecutionBarrierSeal): boolean;
|
|
78
78
|
commitExecutionSeal(seal: ZLinkExecutionBarrierSeal): boolean;
|
|
@@ -158,8 +158,8 @@ class ZLinkSpotActivation {
|
|
|
158
158
|
admitActorDurablePrefix(actorId, records) {
|
|
159
159
|
return this.serialExecutor.admitActorDurablePrefix(actorId, records);
|
|
160
160
|
}
|
|
161
|
-
sealExecution(
|
|
162
|
-
return this.executionBarrier.seal(
|
|
161
|
+
sealExecution(kind = 'relocation') {
|
|
162
|
+
return this.executionBarrier.seal(kind);
|
|
163
163
|
}
|
|
164
164
|
waitForExecutionQuiescence(seal, signal) {
|
|
165
165
|
return this.executionBarrier.waitForQuiescence(seal, signal);
|
|
@@ -36,7 +36,6 @@ export interface ZLinkSpotActivationLifecycleOptions {
|
|
|
36
36
|
readonly routedTransport?: ZLinkSpotRoutedTransport;
|
|
37
37
|
readonly addressTransport?: ZLinkSpotAddressTransport;
|
|
38
38
|
readonly spotRouterChannelIdForMesh?: (meshName: string) => string;
|
|
39
|
-
readonly channelMeshNameForChannel?: (channelName: string) => string | undefined;
|
|
40
39
|
readonly providerResolver?: ZLinkProviderResolver;
|
|
41
40
|
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
42
41
|
readonly closeErrorSink?: import('../diagnostics/dispatch-error-port').ZLinkDispatchErrorSink;
|
|
@@ -51,13 +50,12 @@ export interface ZLinkSpotActivationLifecycleOptions {
|
|
|
51
50
|
readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
|
|
52
51
|
readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
|
|
53
52
|
readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
|
|
54
|
-
readonly detachedTaskRunner
|
|
53
|
+
readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
|
|
55
54
|
readonly admission?: ZLinkRuntimeAdmissionGate;
|
|
56
55
|
readonly statefulExecutionAllowed?: () => boolean;
|
|
57
56
|
readonly leaveActor: (spotId: RoutingId, actor: ZLinkActor, signal?: AbortSignal, meshName?: string) => Promise<void>;
|
|
58
57
|
/** Starts a context Close request after its calling turn has ended. */
|
|
59
58
|
readonly requestContextClose: (activation: ZLinkSpotActivation, objectGeneration: bigint, signal?: AbortSignal) => Promise<boolean>;
|
|
60
|
-
readonly isSpotClosing: (activation: ZLinkSpotActivation) => boolean;
|
|
61
59
|
readonly registerActivation: (activation: ZLinkSpotActivation) => void;
|
|
62
60
|
readonly routeToActorJoinPrewarm?: ZLinkRouteToActorJoinPrewarm;
|
|
63
61
|
readonly releaseLocation: (activation: ZLinkSpotActivation, meshName: string, spotId: RoutingId) => Promise<void>;
|
|
@@ -75,7 +73,7 @@ export declare class ZLinkSpotActivationLifecycle {
|
|
|
75
73
|
private readonly cleanupStates;
|
|
76
74
|
constructor(options: ZLinkSpotActivationLifecycleOptions);
|
|
77
75
|
materializeRelocation<TSpot extends ZLinkSpot | ZLinkInstanceSpot>(meshName: string, objectKind: 'user_spot' | 'instance_spot', stableType: string, implementation: Type<TSpot>, spotId: RoutingId, objectGeneration: bigint, authorityOwnerGeneration: bigint, signal?: AbortSignal): Promise<ZLinkSpotActivation>;
|
|
78
|
-
materializeInstance<TSpot extends ZLinkInstanceSpot>(meshName: string, instanceType: string, implementation: Type<TSpot>, spotId: RoutingId, objectGeneration: bigint, signal?: AbortSignal): Promise<ZLinkSpotActivation>;
|
|
76
|
+
materializeInstance<TSpot extends ZLinkInstanceSpot>(meshName: string, instanceType: string, implementation: Type<TSpot>, spotId: RoutingId, objectGeneration: bigint, signal?: AbortSignal, serialOwner?: ZLinkSpotActivation): Promise<ZLinkSpotActivation>;
|
|
79
77
|
discardInstance(activation: ZLinkSpotActivation): Promise<void>;
|
|
80
78
|
create<TSpot extends ZLinkSpot>(meshName: string, spotType: Type<TSpot>, spotId: RoutingId, request: Message, signal?: AbortSignal, authority?: ZLinkNativeSpotAuthority): Promise<ZLinkLocalSpotCreateResult>;
|
|
81
79
|
private createWithoutNativeSpot;
|
|
@@ -83,6 +81,7 @@ export declare class ZLinkSpotActivationLifecycle {
|
|
|
83
81
|
sealForClose(activation: ZLinkSpotActivation, seal: import('../execution').ZLinkExecutionBarrierSeal, signal?: AbortSignal): Promise<void>;
|
|
84
82
|
/** Returns the OnClosing failure, which cleanup records and does not rethrow. */
|
|
85
83
|
cleanupClosedActivation(activation: ZLinkSpotActivation, reason?: ZLinkSpotCloseReason, deadline?: Date): Promise<unknown>;
|
|
84
|
+
cleanupFailedIncarnation(activation: ZLinkSpotActivation): Promise<void>;
|
|
86
85
|
dispatchActorPacket(activation: ZLinkSpotActivation, actorId: string, parts: readonly Message[], returnResponse?: boolean, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, requestTerminal?: (response: unknown) => Promise<void> | void, messageFollowOrigin?: ZLinkMessageFollowOrigin): Promise<unknown>;
|
|
87
86
|
private runCreateLifecycle;
|
|
88
87
|
private cleanupActivation;
|
|
@@ -24,6 +24,9 @@ class ZLinkSpotActivationLifecycle {
|
|
|
24
24
|
cleanupStates = new WeakMap();
|
|
25
25
|
constructor(options) {
|
|
26
26
|
this.options = options;
|
|
27
|
+
if (options.detachedTaskRunner === undefined) {
|
|
28
|
+
throw new configuration_1.ZLinkConfigurationException('Spot activation requires a detached task runner.');
|
|
29
|
+
}
|
|
27
30
|
this.actorAdmission = new spot_actor_admission_coordinator_1.ZLinkSpotActorAdmissionCoordinator(options);
|
|
28
31
|
}
|
|
29
32
|
async materializeRelocation(meshName, objectKind, stableType, implementation, spotId, objectGeneration, authorityOwnerGeneration, signal) {
|
|
@@ -63,7 +66,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
63
66
|
const common = {
|
|
64
67
|
meshName,
|
|
65
68
|
spotId,
|
|
66
|
-
objectGeneration:
|
|
69
|
+
objectGeneration: objectGeneration,
|
|
67
70
|
outbound,
|
|
68
71
|
timers,
|
|
69
72
|
serial,
|
|
@@ -131,16 +134,24 @@ class ZLinkSpotActivationLifecycle {
|
|
|
131
134
|
return activation;
|
|
132
135
|
}
|
|
133
136
|
catch (error) {
|
|
134
|
-
await
|
|
135
|
-
|
|
136
|
-
|
|
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.`);
|
|
137
149
|
}
|
|
138
|
-
await nativeSpot?.dispose().catch(() => undefined);
|
|
139
150
|
throw error;
|
|
140
151
|
}
|
|
141
152
|
}
|
|
142
|
-
async materializeInstance(meshName, instanceType, implementation, spotId, objectGeneration, signal) {
|
|
143
|
-
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);
|
|
144
155
|
const serialExecutor = new spot_serial_executor_1.ZLinkSpotSerialExecutor(serial, contracts_1.ZLinkUserSpotExecutionMode.SpotWide, spotId);
|
|
145
156
|
const actorHandlers = new actors_1.ZLinkSpotActorHandlerRegistryRuntime();
|
|
146
157
|
const handlers = new spot_handler_registry_1.DefaultZLinkSpotHandlerRegistry(actorHandlers);
|
|
@@ -162,7 +173,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
162
173
|
const context = (0, spot_context_1.createInstanceSpotContext)({
|
|
163
174
|
meshName,
|
|
164
175
|
spotId,
|
|
165
|
-
objectGeneration:
|
|
176
|
+
objectGeneration: objectGeneration,
|
|
166
177
|
handlers: instanceHandlers,
|
|
167
178
|
outbound,
|
|
168
179
|
timers,
|
|
@@ -192,6 +203,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
192
203
|
timers,
|
|
193
204
|
actorHandlers,
|
|
194
205
|
handlers,
|
|
206
|
+
executionBarrier: serialOwner?.executionBarrier,
|
|
195
207
|
externalActorCount: () => this.options.actorCountProvider?.(spotId) ?? 0
|
|
196
208
|
});
|
|
197
209
|
try {
|
|
@@ -201,14 +213,21 @@ class ZLinkSpotActivationLifecycle {
|
|
|
201
213
|
runtimeEventPublisher: this.options.runtimeEventPublisher,
|
|
202
214
|
signal
|
|
203
215
|
});
|
|
204
|
-
await
|
|
216
|
+
await (serialOwner === undefined
|
|
217
|
+
? serial.execute(() => instance.onInitialize?.())
|
|
218
|
+
: serial.postBarrierTurn(() => instance.onInitialize?.()));
|
|
205
219
|
this.options.registerActivation(activation);
|
|
206
220
|
return activation;
|
|
207
221
|
}
|
|
208
222
|
catch (error) {
|
|
209
|
-
await
|
|
210
|
-
|
|
211
|
-
|
|
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)}'.`);
|
|
212
231
|
}
|
|
213
232
|
}
|
|
214
233
|
async discardInstance(activation) {
|
|
@@ -232,7 +251,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
232
251
|
errors.push(error);
|
|
233
252
|
}
|
|
234
253
|
try {
|
|
235
|
-
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot);
|
|
254
|
+
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot, this.options.detachedTaskRunner);
|
|
236
255
|
}
|
|
237
256
|
catch (error) {
|
|
238
257
|
errors.push(error);
|
|
@@ -291,7 +310,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
291
310
|
const context = (0, spot_context_1.createSpotContext)({
|
|
292
311
|
meshName,
|
|
293
312
|
spotId,
|
|
294
|
-
objectGeneration:
|
|
313
|
+
objectGeneration: spotGeneration,
|
|
295
314
|
handlers,
|
|
296
315
|
outbound,
|
|
297
316
|
timers,
|
|
@@ -356,9 +375,11 @@ class ZLinkSpotActivationLifecycle {
|
|
|
356
375
|
else {
|
|
357
376
|
const partialCleanup = await Promise.allSettled([
|
|
358
377
|
timers.dispose(),
|
|
359
|
-
...(spot === undefined
|
|
360
|
-
|
|
361
|
-
|
|
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))
|
|
362
383
|
]);
|
|
363
384
|
const partialErrors = partialCleanup
|
|
364
385
|
.filter((result) => result.status === 'rejected')
|
|
@@ -385,7 +406,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
385
406
|
const context = (0, spot_context_1.createSpotContext)({
|
|
386
407
|
meshName,
|
|
387
408
|
spotId,
|
|
388
|
-
objectGeneration:
|
|
409
|
+
objectGeneration: objectGeneration,
|
|
389
410
|
handlers,
|
|
390
411
|
outbound,
|
|
391
412
|
timers,
|
|
@@ -444,13 +465,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
444
465
|
};
|
|
445
466
|
}
|
|
446
467
|
async sealForClose(activation, seal, signal) {
|
|
447
|
-
|
|
448
|
-
await activation.waitForExecutionQuiescence(seal, signal);
|
|
449
|
-
}
|
|
450
|
-
catch (error) {
|
|
451
|
-
activation.abortExecutionSeal(seal);
|
|
452
|
-
throw error;
|
|
453
|
-
}
|
|
468
|
+
await activation.waitForExecutionQuiescence(seal, signal);
|
|
454
469
|
if (!activation.commitExecutionSeal(seal)) {
|
|
455
470
|
throw new Error(`Spot '${String(activation.spotId)}' close seal is stale.`);
|
|
456
471
|
}
|
|
@@ -459,6 +474,9 @@ class ZLinkSpotActivationLifecycle {
|
|
|
459
474
|
async cleanupClosedActivation(activation, reason = contracts_1.ZLinkSpotCloseReason.ExplicitClose, deadline) {
|
|
460
475
|
return await this.cleanupActivation(activation, activation.meshName, true, undefined, reason, deadline, true);
|
|
461
476
|
}
|
|
477
|
+
async cleanupFailedIncarnation(activation) {
|
|
478
|
+
await this.cleanupActivation(activation, activation.meshName, false, undefined, contracts_1.ZLinkSpotCloseReason.ExplicitClose, undefined, true);
|
|
479
|
+
}
|
|
462
480
|
async dispatchActorPacket(activation, actorId, parts, returnResponse = false, remoteBoundSessionTarget, fallbackActorRef, requestTerminal, messageFollowOrigin) {
|
|
463
481
|
return await this.actorAdmission.dispatchActorPacket(activation, actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef, requestTerminal, messageFollowOrigin);
|
|
464
482
|
}
|
|
@@ -570,7 +588,7 @@ class ZLinkSpotActivationLifecycle {
|
|
|
570
588
|
});
|
|
571
589
|
}
|
|
572
590
|
if (!state.handlersDisposed) {
|
|
573
|
-
await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot), () => {
|
|
591
|
+
await cleanup(() => (0, handler_instance_scope_1.disposeLifecycleHandlers)(activation.spot, this.options.detachedTaskRunner), () => {
|
|
574
592
|
state.handlersDisposed = true;
|
|
575
593
|
});
|
|
576
594
|
}
|
|
@@ -585,6 +603,11 @@ class ZLinkSpotActivationLifecycle {
|
|
|
585
603
|
});
|
|
586
604
|
}
|
|
587
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') &&
|
|
588
611
|
state.timersDisposed &&
|
|
589
612
|
state.serialDisposed &&
|
|
590
613
|
state.handlersDisposed &&
|
|
@@ -615,9 +638,3 @@ class ZLinkSpotActivationLifecycle {
|
|
|
615
638
|
}
|
|
616
639
|
}
|
|
617
640
|
exports.ZLinkSpotActivationLifecycle = ZLinkSpotActivationLifecycle;
|
|
618
|
-
function toContextGeneration(generation) {
|
|
619
|
-
if (generation < 0n || generation > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
620
|
-
throw new configuration_1.ZLinkConfigurationException(`Spot object generation '${generation}' cannot be represented by the Node.js public context.`);
|
|
621
|
-
}
|
|
622
|
-
return Number(generation);
|
|
623
|
-
}
|
|
@@ -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' | 'createTopicMessage' | 'providerResolver' | 'runtimeEventPublisher' | 'routeToActorJoinPrewarm'
|
|
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
|
}
|
|
@@ -23,7 +23,6 @@ class ZLinkSpotActorAdmissionCoordinator {
|
|
|
23
23
|
nativeSpot,
|
|
24
24
|
createTopicMessage: requireBackendValueFactory(this.options.createTopicMessage, 'TopicMessage'),
|
|
25
25
|
serial: activation.serial,
|
|
26
|
-
isSpotClosing: () => this.options.isSpotClosing(activation),
|
|
27
26
|
actors: {
|
|
28
27
|
resolveActor: (actorId) => activation.hasDepartedActor(actorId)
|
|
29
28
|
? undefined
|
|
@@ -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, 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 {
|
|
@@ -49,7 +48,6 @@ interface ZLinkSpotActorJoinDispatchOptions {
|
|
|
49
48
|
readonly nativeSpot: ZLinkBackendSpot;
|
|
50
49
|
readonly createTopicMessage: () => ZLinkBackendTopicMessage;
|
|
51
50
|
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
52
|
-
readonly isSpotClosing?: () => boolean;
|
|
53
51
|
readonly actors: ZLinkSpotActorAdmissionRuntime;
|
|
54
52
|
readonly packets?: ZLinkSpotActorPacketRuntime;
|
|
55
53
|
readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
|
|
@@ -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 {};
|