@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,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultZLinkSpotManager = exports.ZLinkPublicSpotManager = exports.ZLinkSpotNodeRuntimeManager = exports.createFrameworkEntrySpotId = exports.ZLinkEntrySpotActivation = exports.ZLinkRuntimeSpotPublisherTransport = exports.DefaultZLinkSpotHandlerRegistry = exports.DefaultZLinkSpotOutbound = exports.ZLinkSpotTimerRegistry = exports.ZLinkManagedTimer = exports.ZLinkSpotSerialExecutor = exports.ZLinkSpotSerialTurnExecutor = exports.ZLinkSpotActorAdmissionCoordinator = exports.ZLinkSpotRoutedBoundSessionDispatch = exports.sendToSpotHandle = exports.requestToSpotHandle = exports.resolveSpotHandle = exports.createSpotHandle = void 0;
|
|
4
|
+
const dispatch_error_details_1 = require("../diagnostics/dispatch-error-details");
|
|
4
5
|
var spot_handle_1 = require("./spot-handle");
|
|
5
6
|
Object.defineProperty(exports, "createSpotHandle", { enumerable: true, get: function () { return spot_handle_1.createSpotHandle; } });
|
|
6
7
|
Object.defineProperty(exports, "resolveSpotHandle", { enumerable: true, get: function () { return spot_handle_1.resolveSpotHandle; } });
|
|
@@ -15,11 +16,13 @@ const abort_1 = require("../abort");
|
|
|
15
16
|
const contracts_1 = require("../../contracts");
|
|
16
17
|
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
17
18
|
const diagnostics_1 = require("../diagnostics");
|
|
19
|
+
const diagnostic_text_1 = require("../diagnostics/diagnostic-text");
|
|
18
20
|
const runtime_message_1 = require("../backend/runtime-message");
|
|
19
21
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
20
22
|
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
21
23
|
const serial_work_size_1 = require("../execution/serial-work-size");
|
|
22
24
|
const configuration_1 = require("../configuration");
|
|
25
|
+
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
23
26
|
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
24
27
|
const workers_1 = require("../workers");
|
|
25
28
|
const payload_codec_1 = require("../messaging/payload-codec");
|
|
@@ -81,7 +84,10 @@ class DefaultZLinkSpotManager {
|
|
|
81
84
|
idleSweepRunning = false;
|
|
82
85
|
constructor(options, timerClock) {
|
|
83
86
|
this.options = options;
|
|
84
|
-
|
|
87
|
+
if (options.detachedTaskRunner === undefined) {
|
|
88
|
+
throw new configuration_1.ZLinkConfigurationException('Spot manager requires a detached task runner.');
|
|
89
|
+
}
|
|
90
|
+
this.activations = new spot_activation_registry_1.ZLinkSpotActivationRegistry(options.metrics);
|
|
85
91
|
this.factories = new Set(options.spotFactories);
|
|
86
92
|
this.workerRuntime = options.workerRuntime ?? new workers_1.ZLinkWorkerRuntime();
|
|
87
93
|
this.locationClaim = new spot_location_claim_1.ZLinkSpotLocationClaim({
|
|
@@ -91,7 +97,7 @@ class DefaultZLinkSpotManager {
|
|
|
91
97
|
nodeGenerationProvider: options.nodeGenerationProvider
|
|
92
98
|
});
|
|
93
99
|
this.routedSpotPackets = new spot_routed_spot_packet_dispatch_1.ZLinkRoutedSpotPacketDispatch({
|
|
94
|
-
resolveActivation: (spotId) => this.
|
|
100
|
+
resolveActivation: (spotId) => this.resolveApplicationActivation(spotId),
|
|
95
101
|
claimApplicationWork: options.admission === undefined
|
|
96
102
|
? undefined
|
|
97
103
|
: (meshName) => options.admission.claim(meshName, 'Spot route dispatch'),
|
|
@@ -99,8 +105,6 @@ class DefaultZLinkSpotManager {
|
|
|
99
105
|
dispatchErrors: options.dispatchErrors
|
|
100
106
|
});
|
|
101
107
|
this.actorMembership = new spot_actor_membership_1.ZLinkSpotActorMembership({
|
|
102
|
-
isSpotClosing: (activation) => this.isSpotClosing(activation.meshName, activation.spotId) ||
|
|
103
|
-
this.activations.resolve(activation.meshName, activation.spotId) !== activation,
|
|
104
108
|
resolveActivation: (spotId, meshName) => meshName === undefined
|
|
105
109
|
? this.activations.resolveUnique(spotId)
|
|
106
110
|
: this.activations.resolve(meshName, spotId),
|
|
@@ -150,11 +154,9 @@ class DefaultZLinkSpotManager {
|
|
|
150
154
|
boundSessionRuntime: options.boundSessionRuntime,
|
|
151
155
|
actorHandoffRuntime: options.actorHandoffRuntime,
|
|
152
156
|
admission: options.admission,
|
|
153
|
-
statefulExecutionAllowed: options.
|
|
157
|
+
statefulExecutionAllowed: options.statefulExecution?.admissionOpen,
|
|
154
158
|
leaveActor: (spotId, actor, signal, meshName) => this.actorMembership.leaveActor(spotId, actor, signal, meshName),
|
|
155
159
|
requestContextClose: (activation, objectGeneration, signal) => this.closeFromContext(activation, objectGeneration, signal),
|
|
156
|
-
isSpotClosing: (activation) => this.isSpotClosing(activation.meshName, activation.spotId) ||
|
|
157
|
-
this.activations.resolve(activation.meshName, activation.spotId) !== activation,
|
|
158
160
|
registerActivation: (activation) => {
|
|
159
161
|
this.activations.register(activation);
|
|
160
162
|
this.scheduleIdleSweep();
|
|
@@ -264,10 +266,6 @@ class DefaultZLinkSpotManager {
|
|
|
264
266
|
await (0, abort_1.awaitWithAbort)(pendingClose, signal);
|
|
265
267
|
continue;
|
|
266
268
|
}
|
|
267
|
-
if (closeOperation?.committed === true) {
|
|
268
|
-
await (0, abort_1.awaitWithAbort)(this.closeWithReason(meshName, spotId), signal);
|
|
269
|
-
continue;
|
|
270
|
-
}
|
|
271
269
|
const closing = this.activations.closingOperation(meshName, spotId);
|
|
272
270
|
if (closing !== undefined) {
|
|
273
271
|
await (0, abort_1.awaitWithAbort)(closing.ready, signal);
|
|
@@ -344,24 +342,36 @@ class DefaultZLinkSpotManager {
|
|
|
344
342
|
}
|
|
345
343
|
}
|
|
346
344
|
isInstanceMaterialized(meshName, instanceType, spotId) {
|
|
347
|
-
const activation = this.
|
|
345
|
+
const activation = this.resolveApplicationActivation(spotId, meshName);
|
|
348
346
|
return (activation !== undefined &&
|
|
349
347
|
activation.spotType === this.requireInstanceFactory(meshName, instanceType));
|
|
350
348
|
}
|
|
349
|
+
resolveApplicationActivation(spotId, meshName) {
|
|
350
|
+
const current = meshName === undefined
|
|
351
|
+
? this.activations.resolveUnique(spotId)
|
|
352
|
+
: this.activations.resolve(meshName, spotId);
|
|
353
|
+
if (current !== undefined)
|
|
354
|
+
return current;
|
|
355
|
+
if (meshName !== undefined)
|
|
356
|
+
return this.closeOperations.get(`${meshName}\0${String(spotId)}`)?.activation;
|
|
357
|
+
for (const operation of this.closeOperations.values()) {
|
|
358
|
+
if (String(operation.activation.spotId) === String(spotId))
|
|
359
|
+
return operation.activation;
|
|
360
|
+
}
|
|
361
|
+
return undefined;
|
|
362
|
+
}
|
|
351
363
|
isInstanceMaterializing(meshName, spotId) {
|
|
352
364
|
const prefix = instanceMaterializationPrefix(meshName, spotId);
|
|
353
|
-
return (this.pendingInstanceMaterializationsByPrefix.get(prefix)?.size ?? 0) > 0
|
|
365
|
+
return ((this.pendingInstanceMaterializationsByPrefix.get(prefix)?.size ?? 0) > 0 ||
|
|
366
|
+
this.closeOperations.get(`${meshName}\0${String(spotId)}`)?.authority !== undefined);
|
|
354
367
|
}
|
|
355
368
|
isSpotClosing(meshName, spotId) {
|
|
356
|
-
|
|
357
|
-
|
|
369
|
+
return (this.closeOperations.get(`${meshName}\0${String(spotId)}`)?.authority !== undefined ||
|
|
370
|
+
this.activations.activationForClose(meshName, spotId)?.executionBarrier.isCloseSealed === true);
|
|
358
371
|
}
|
|
359
372
|
pendingSpotCloseDecision(meshName, spotId) {
|
|
360
373
|
return this.closeOperations.get(`${meshName}\0${String(spotId)}`)?.authorityDecision;
|
|
361
374
|
}
|
|
362
|
-
isInstanceClosing(meshName, spotId) {
|
|
363
|
-
return this.closeOperations.has(`${meshName}\0${String(spotId)}`);
|
|
364
|
-
}
|
|
365
375
|
async discardInstance(meshName, spotId) {
|
|
366
376
|
const activation = this.activations.resolve(meshName, spotId);
|
|
367
377
|
if (activation === undefined)
|
|
@@ -508,10 +518,7 @@ class DefaultZLinkSpotManager {
|
|
|
508
518
|
throw error;
|
|
509
519
|
}
|
|
510
520
|
};
|
|
511
|
-
this.options.detachedTaskRunner
|
|
512
|
-
if (this.options.detachedTaskRunner === undefined) {
|
|
513
|
-
void run().catch(() => undefined);
|
|
514
|
-
}
|
|
521
|
+
this.options.detachedTaskRunner.runDetached(`instance idle eviction ${String(activation.spotId)}`, run);
|
|
515
522
|
}
|
|
516
523
|
}
|
|
517
524
|
finally {
|
|
@@ -541,8 +548,8 @@ class DefaultZLinkSpotManager {
|
|
|
541
548
|
requireMeshName(meshName);
|
|
542
549
|
const args = normalizeSpotCreateArgs(requestOrSignal, signal);
|
|
543
550
|
(0, abort_1.throwIfAborted)(args.signal);
|
|
551
|
+
this.options.admission?.requireRequest('SPOT create', meshName);
|
|
544
552
|
const operation = this.activations.getOrBegin(meshName, spotType, spotId, async () => {
|
|
545
|
-
this.options.admission?.requireRequest('SPOT create', meshName);
|
|
546
553
|
const release = await this.options.activationAdmission?.acquire(meshName, args.signal);
|
|
547
554
|
const ownedRequest = args.request === undefined
|
|
548
555
|
? runtime_message_1.ZLinkBufferMessage.from(Buffer.alloc(0))
|
|
@@ -559,11 +566,15 @@ class DefaultZLinkSpotManager {
|
|
|
559
566
|
}
|
|
560
567
|
async find(meshName, spotId) {
|
|
561
568
|
requireMeshName(meshName);
|
|
562
|
-
return this.activations.has(meshName, spotId)
|
|
569
|
+
return this.activations.has(meshName, spotId) && !this.isSpotClosing(meshName, spotId)
|
|
570
|
+
? { spotId }
|
|
571
|
+
: null;
|
|
563
572
|
}
|
|
564
573
|
async list(meshName) {
|
|
565
574
|
requireMeshName(meshName);
|
|
566
|
-
return this.activations
|
|
575
|
+
return this.activations
|
|
576
|
+
.list(meshName)
|
|
577
|
+
.filter(({ spotId }) => !this.isSpotClosing(meshName, spotId));
|
|
567
578
|
}
|
|
568
579
|
async drainForShutdown(meshName, signal, deadline) {
|
|
569
580
|
const results = await Promise.allSettled(this.activations
|
|
@@ -612,12 +623,13 @@ class DefaultZLinkSpotManager {
|
|
|
612
623
|
beginUserAuthority === undefined) {
|
|
613
624
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidOperation, `User Spot '${String(spotId)}' Close requires its authority owner.`);
|
|
614
625
|
}
|
|
626
|
+
const domain = activation.domain;
|
|
615
627
|
const beginAuthority = beginUserAuthority ??
|
|
616
|
-
(
|
|
628
|
+
(domain.kind === 'instance' &&
|
|
617
629
|
reason === contracts_1.ZLinkSpotCloseReason.ExplicitClose &&
|
|
618
630
|
this.options.beginInstanceClosingAuthority !== undefined
|
|
619
|
-
? (onCommitted) => this.options.beginInstanceClosingAuthority(meshName, spotId, onCommitted)
|
|
620
|
-
:
|
|
631
|
+
? (onCommitted) => this.options.beginInstanceClosingAuthority(meshName, spotId, onCommitted, domain.objectGeneration)
|
|
632
|
+
: domain.kind === 'instance' &&
|
|
621
633
|
reason === contracts_1.ZLinkSpotCloseReason.IdleEvicted &&
|
|
622
634
|
this.options.beginInstanceIdleClosingAuthority !== undefined
|
|
623
635
|
? (onCommitted) => this.options.beginInstanceIdleClosingAuthority(meshName, spotId, onCommitted)
|
|
@@ -628,14 +640,21 @@ class DefaultZLinkSpotManager {
|
|
|
628
640
|
operation = {
|
|
629
641
|
activation,
|
|
630
642
|
reason,
|
|
631
|
-
beginAuthority
|
|
632
|
-
committed: false
|
|
643
|
+
beginAuthority
|
|
633
644
|
};
|
|
645
|
+
if (reason === contracts_1.ZLinkSpotCloseReason.ExplicitClose) {
|
|
646
|
+
operation.canExecuteApplication = (record) => {
|
|
647
|
+
const context = record.context;
|
|
648
|
+
return context === undefined;
|
|
649
|
+
};
|
|
650
|
+
}
|
|
634
651
|
this.closeOperations.set(key, operation);
|
|
635
652
|
}
|
|
636
653
|
if (operation.ready === undefined) {
|
|
637
654
|
const active = operation;
|
|
638
|
-
const run = active.activation.serial.
|
|
655
|
+
const run = active.activation.serial.executeControlLifecycleOperation(() => this.runCloseOperation(meshName, spotId, active, signal, deadline), active.canExecuteApplication === undefined
|
|
656
|
+
? undefined
|
|
657
|
+
: active);
|
|
639
658
|
active.ready = run.finally(() => {
|
|
640
659
|
active.ready = undefined;
|
|
641
660
|
if (this.closeOperations.get(key) === active) {
|
|
@@ -646,17 +665,83 @@ class DefaultZLinkSpotManager {
|
|
|
646
665
|
return await operation.ready;
|
|
647
666
|
}
|
|
648
667
|
async runCloseOperation(meshName, spotId, operation, signal, deadline) {
|
|
649
|
-
const
|
|
650
|
-
if (
|
|
668
|
+
const seal = await this.beginCloseAuthority(meshName, spotId, operation, signal);
|
|
669
|
+
if (seal === undefined)
|
|
651
670
|
return false;
|
|
652
|
-
|
|
653
|
-
|
|
671
|
+
if (seal !== true) {
|
|
672
|
+
await this.activationLifecycle.sealForClose(operation.activation, seal);
|
|
673
|
+
}
|
|
674
|
+
else {
|
|
675
|
+
await operation.activation.executionBarrier.waitForStartedTurns(signal);
|
|
676
|
+
}
|
|
654
677
|
const closingFailure = await this.activationLifecycle.cleanupClosedActivation(operation.activation, operation.reason, deadline);
|
|
655
|
-
await operation.authority?.release();
|
|
656
|
-
// The incarnation has no further lifecycle item once its authority is
|
|
657
|
-
// released, so its lifecycle lane admission closes with this Close.
|
|
658
|
-
operation.activation.serial.closeAdmission();
|
|
659
678
|
this.activations.finishClose(meshName, spotId);
|
|
679
|
+
const intentRecords = [];
|
|
680
|
+
operation.activation.serial.visitPendingApplication((record) => {
|
|
681
|
+
const context = record.context;
|
|
682
|
+
if (context?.replay !== undefined)
|
|
683
|
+
intentRecords.push(record);
|
|
684
|
+
});
|
|
685
|
+
const hasIntent = intentRecords.length > 0;
|
|
686
|
+
// Spot messaging §7 step 3: with no Instance intent message waiting, the
|
|
687
|
+
// release decision also ends this Instance incarnation's admission in this turn.
|
|
688
|
+
if (!hasIntent && operation.activation.domain.kind === 'instance')
|
|
689
|
+
operation.activation.serial.closeAdmission();
|
|
690
|
+
const hostState = this.options.statefulExecution?.hostState();
|
|
691
|
+
const intentFailure = !hasIntent
|
|
692
|
+
? undefined
|
|
693
|
+
: hostState === contracts_1.ZLinkFrameworkRuntimeState.Draining
|
|
694
|
+
? (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown, 'Instance intent cannot continue while the host is draining.')
|
|
695
|
+
: hostState === contracts_1.ZLinkFrameworkRuntimeState.Relocating ||
|
|
696
|
+
hostState === contracts_1.ZLinkFrameworkRuntimeState.Relocated ||
|
|
697
|
+
this.options.statefulExecution?.admissionOpen() === false ||
|
|
698
|
+
(operation.activation.executionBarrier.isSealed &&
|
|
699
|
+
!operation.activation.executionBarrier.isCloseSealed)
|
|
700
|
+
? (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving, 'Instance intent cannot continue on an unavailable or relocating owner.')
|
|
701
|
+
: undefined;
|
|
702
|
+
if (operation.reason === contracts_1.ZLinkSpotCloseReason.ExplicitClose &&
|
|
703
|
+
hasIntent &&
|
|
704
|
+
intentFailure === undefined &&
|
|
705
|
+
operation.authority?.reincarnate !== undefined) {
|
|
706
|
+
try {
|
|
707
|
+
await operation.authority.reincarnate(async (authority) => {
|
|
708
|
+
await this.activationLifecycle.materializeInstance(meshName, authority.stableType, operation.activation.spotType, spotId, authority.objectGeneration, signal, operation.activation);
|
|
709
|
+
});
|
|
710
|
+
// The new incarnation shares this serial owner and admits membership work again.
|
|
711
|
+
operation.activation.serial.setLifecycleAdmissionClosed(false);
|
|
712
|
+
}
|
|
713
|
+
catch (error) {
|
|
714
|
+
const initialized = this.activations.resolve(meshName, spotId);
|
|
715
|
+
if (initialized !== undefined && initialized !== operation.activation) {
|
|
716
|
+
await this.activationLifecycle.cleanupFailedIncarnation(initialized);
|
|
717
|
+
}
|
|
718
|
+
this.activations.finishClose(meshName, spotId);
|
|
719
|
+
operation.activation.serial.visitPendingApplication((record) => {
|
|
720
|
+
const context = record.context;
|
|
721
|
+
if (context?.replay !== undefined)
|
|
722
|
+
record.operation = () => context.replay(error);
|
|
723
|
+
});
|
|
724
|
+
operation.activation.serial.closeAdmission();
|
|
725
|
+
throw error;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
else {
|
|
729
|
+
await operation.authority?.release();
|
|
730
|
+
operation.activation.serial.closeAdmission();
|
|
731
|
+
if (!operation.activation.executionBarrier.isSealed) {
|
|
732
|
+
const closed = operation.activation.sealExecution('close');
|
|
733
|
+
operation.activation.commitExecutionSeal(closed);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
if (operation.reason === contracts_1.ZLinkSpotCloseReason.ExplicitClose) {
|
|
737
|
+
operation.activation.serial.visitPendingApplication((record) => {
|
|
738
|
+
const context = record.context;
|
|
739
|
+
if (context?.replay !== undefined) {
|
|
740
|
+
record.operation =
|
|
741
|
+
intentFailure === undefined ? context.replay : () => context.replay(intentFailure);
|
|
742
|
+
}
|
|
743
|
+
});
|
|
744
|
+
}
|
|
660
745
|
this.closeOperations.delete(`${meshName}\0${String(spotId)}`);
|
|
661
746
|
// An OnClosing failure never changes a Close result; host shutdown alone
|
|
662
747
|
// reports it as its teardown outcome after cleanup has finished.
|
|
@@ -666,24 +751,33 @@ class DefaultZLinkSpotManager {
|
|
|
666
751
|
return true;
|
|
667
752
|
}
|
|
668
753
|
async beginCloseAuthority(meshName, spotId, operation, signal) {
|
|
754
|
+
// Spot messaging §4 step 12 with §7 step 1: a Close of any reason begins its
|
|
755
|
+
// Closing CAS only after the first terminal record of an activated message.
|
|
669
756
|
await this.options.instanceSpotApplicationQuiescenceProvider?.(meshName, spotId, signal);
|
|
670
757
|
if (!operation.activation.canClose(operation.reason))
|
|
671
|
-
return
|
|
758
|
+
return undefined;
|
|
672
759
|
if (operation.activation.executionBarrier.isSealed) {
|
|
673
760
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving, `Spot '${String(spotId)}' is sealed for relocation.`, true);
|
|
674
761
|
}
|
|
762
|
+
let seal;
|
|
675
763
|
const authorityPromise = Promise.resolve().then(() => operation.beginAuthority(() => {
|
|
676
|
-
operation.
|
|
764
|
+
if (operation.reason === contracts_1.ZLinkSpotCloseReason.ExplicitClose) {
|
|
765
|
+
operation.activation.serial.setLifecycleAdmissionClosed(true);
|
|
766
|
+
seal = true;
|
|
767
|
+
}
|
|
768
|
+
else {
|
|
769
|
+
seal = operation.activation.sealExecution('close');
|
|
770
|
+
}
|
|
677
771
|
}));
|
|
678
772
|
operation.authorityDecision = authorityPromise.then(() => undefined, () => undefined);
|
|
679
773
|
const authority = await authorityPromise;
|
|
680
774
|
if (authority === undefined)
|
|
681
|
-
return
|
|
775
|
+
return undefined;
|
|
682
776
|
operation.authority = authority;
|
|
683
|
-
if (
|
|
777
|
+
if (seal === undefined) {
|
|
684
778
|
throw new Error(`Spot '${String(spotId)}' Closing authority did not confirm its commit.`);
|
|
685
779
|
}
|
|
686
|
-
return
|
|
780
|
+
return seal;
|
|
687
781
|
}
|
|
688
782
|
async executeOnSpot(spotType, spotId, operation, signal) {
|
|
689
783
|
(0, abort_1.throwIfAborted)(signal);
|
|
@@ -732,6 +826,9 @@ class DefaultZLinkSpotManager {
|
|
|
732
826
|
async admitActorJoin(spotId, actor, request, commit, signal, leaveSource, contentType = 'application/json') {
|
|
733
827
|
const meshName = this.activations.resolveUnique(spotId)?.meshName;
|
|
734
828
|
this.options.admission?.requireRequest('Actor join admission', meshName);
|
|
829
|
+
if (meshName !== undefined && this.isSpotClosing(meshName, spotId)) {
|
|
830
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestRejected, `Spot '${String(spotId)}' is closing.`);
|
|
831
|
+
}
|
|
735
832
|
return await this.actorMembership.admitActorJoin(spotId, actor, request, commit, signal, leaveSource, contentType);
|
|
736
833
|
}
|
|
737
834
|
async leaveActor(spotId, actor, signal) {
|
|
@@ -841,7 +938,7 @@ class DefaultZLinkSpotManager {
|
|
|
841
938
|
if (target === undefined)
|
|
842
939
|
return;
|
|
843
940
|
for (;;) {
|
|
844
|
-
const current = this.
|
|
941
|
+
const current = this.resolveApplicationActivation(spotId, meshName);
|
|
845
942
|
if (current !== undefined &&
|
|
846
943
|
current.objectGeneration === target.objectGeneration &&
|
|
847
944
|
current.spotType === this.requireInstanceFactory(meshName, target.stableType))
|
|
@@ -868,7 +965,7 @@ class DefaultZLinkSpotManager {
|
|
|
868
965
|
this.traceInstanceMessage(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Received, meshName, spotId, record, envelope, 'activating');
|
|
869
966
|
try {
|
|
870
967
|
await this.ensureInstanceApplicationActivation(meshName, spotId);
|
|
871
|
-
const activation = this.
|
|
968
|
+
const activation = this.resolveApplicationActivation(spotId, meshName);
|
|
872
969
|
if (activation === undefined || activation.domain.kind !== 'instance') {
|
|
873
970
|
throw new configuration_1.ZLinkConfigurationException(`MeshNode Instance Spot target '${String(spotId)}' is not active.`);
|
|
874
971
|
}
|
|
@@ -885,9 +982,26 @@ class DefaultZLinkSpotManager {
|
|
|
885
982
|
channelName: envelope.header.channelName,
|
|
886
983
|
contentType: envelope.header.contentType,
|
|
887
984
|
awaitFirstHandlerTurn: record.kind === service_runtime_contracts_1.ReceiveKind.InstanceSpotActivation,
|
|
985
|
+
activationRecord: record,
|
|
986
|
+
onOneWayError: this.options.dispatchErrors?.captureEnabled() === true
|
|
987
|
+
? (error) => this.reportInstanceDispatchFailure(meshName, spotId, record, envelope, false, error)
|
|
988
|
+
: undefined,
|
|
888
989
|
workOptions: (0, serial_work_size_1.zlinkSerialWorkOptions)(envelope.payload.byteLength, record.applicationMetadata?.byteLength ??
|
|
889
990
|
(0, serial_work_size_1.zlinkMetadataByteLength)(envelope.header.metadata))
|
|
890
991
|
};
|
|
992
|
+
// Spot messaging §7 step 3: an Instance intent request that reaches an
|
|
993
|
+
// incarnation whose Close ended admission is refused before admission
|
|
994
|
+
// with the owner fence terminal, so its caller re-reads authority.
|
|
995
|
+
const instanceIntent = record.activationRecord?.activation === 'missing' ||
|
|
996
|
+
(record.activationRecord?.activation === 'ready' &&
|
|
997
|
+
record.activationRecord.instanceIntent);
|
|
998
|
+
const refusal = activation.serial.applicationAdmissionRefusal(instanceIntent === true);
|
|
999
|
+
if (request && refusal !== undefined && record.replyFailure !== undefined) {
|
|
1000
|
+
this.reportInstanceDispatchFailure(meshName, spotId, record, envelope, request, refusal);
|
|
1001
|
+
const terminal = (0, framework_errors_internal_1.internalFrameworkWireReply)(refusal);
|
|
1002
|
+
requireMeshSpotReply(record.replyFailure(terminal.terminalResult, terminal.failureCode));
|
|
1003
|
+
return;
|
|
1004
|
+
}
|
|
891
1005
|
this.traceInstanceMessage(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Admitted, meshName, spotId, record, envelope, 'ready', target?.stableType);
|
|
892
1006
|
if (!request) {
|
|
893
1007
|
this.traceInstanceMessage(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dispatched, meshName, spotId, record, envelope, 'ready', target?.stableType);
|
|
@@ -901,33 +1015,39 @@ class DefaultZLinkSpotManager {
|
|
|
901
1015
|
this.traceInstanceMessage(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Replied, meshName, spotId, record, envelope, 'ready', target?.stableType);
|
|
902
1016
|
}
|
|
903
1017
|
catch (error) {
|
|
904
|
-
|
|
1018
|
+
this.reportInstanceDispatchFailure(meshName, spotId, record, envelope, request, error);
|
|
1019
|
+
const reason = (0, dispatch_error_details_1.dispatchReasonFromError)(error);
|
|
905
1020
|
if (!request) {
|
|
906
1021
|
this.traceInstanceMessage(ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, meshName, spotId, record, envelope, 'closing', undefined, reason);
|
|
907
1022
|
return;
|
|
908
1023
|
}
|
|
909
|
-
this.options.dispatchErrors?.report({
|
|
910
|
-
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.InstanceSpot,
|
|
911
|
-
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request,
|
|
912
|
-
packetName: envelope.packetName,
|
|
913
|
-
channelName: envelope.header.channelName,
|
|
914
|
-
meshName,
|
|
915
|
-
correlationId: envelope.header.correlationId ?? undefined,
|
|
916
|
-
sourceRid: record.sourceNodeRid === null ? undefined : String(record.sourceNodeRid),
|
|
917
|
-
spotId: String(spotId),
|
|
918
|
-
instanceSpotType: this.options.instanceSpotApplicationTargetProvider?.(meshName, spotId)
|
|
919
|
-
?.stableType,
|
|
920
|
-
activationState: 'closing',
|
|
921
|
-
flowId: envelope.header.flowId,
|
|
922
|
-
flowOrigin: envelope.header.flowOrigin,
|
|
923
|
-
reason,
|
|
924
|
-
action: ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.ReplyError,
|
|
925
|
-
error
|
|
926
|
-
});
|
|
927
1024
|
requireMeshSpotReply(record.reply((0, channel_envelope_1.encodeChannelErrorReplyParts)(envelope.header, error)));
|
|
928
1025
|
}
|
|
929
1026
|
});
|
|
930
1027
|
}
|
|
1028
|
+
reportInstanceDispatchFailure(meshName, spotId, record, envelope, request, error) {
|
|
1029
|
+
const reporter = this.options.dispatchErrors;
|
|
1030
|
+
if (reporter?.captureEnabled() !== true)
|
|
1031
|
+
return;
|
|
1032
|
+
reporter.report({
|
|
1033
|
+
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.InstanceSpot,
|
|
1034
|
+
messageKind: request ? ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Request : ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
1035
|
+
packetName: envelope.packetName,
|
|
1036
|
+
channelName: envelope.header.channelName,
|
|
1037
|
+
meshName,
|
|
1038
|
+
correlationId: envelope.header.correlationId ?? undefined,
|
|
1039
|
+
sourceRid: record.sourceNodeRid === null ? undefined : String(record.sourceNodeRid),
|
|
1040
|
+
spotId: String(spotId),
|
|
1041
|
+
instanceSpotType: this.options.instanceSpotApplicationTargetProvider?.(meshName, spotId)
|
|
1042
|
+
?.stableType,
|
|
1043
|
+
activationState: 'closing',
|
|
1044
|
+
flowId: envelope.header.flowId,
|
|
1045
|
+
flowOrigin: envelope.header.flowOrigin,
|
|
1046
|
+
reason: (0, dispatch_error_details_1.dispatchReasonFromError)(error),
|
|
1047
|
+
action: request ? ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.ReplyError : ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorAction.Drop,
|
|
1048
|
+
error
|
|
1049
|
+
});
|
|
1050
|
+
}
|
|
931
1051
|
traceInstanceMessage(outcome, meshName, spotId, record, envelope, activationState, instanceSpotType, errorReason) {
|
|
932
1052
|
const flow = (0, diagnostics_1.flowIfEnabled)(this.options.dispatchErrors?.flow, outcome, undefined, envelope.header.flowId);
|
|
933
1053
|
if (flow === undefined)
|
|
@@ -960,9 +1080,6 @@ class DefaultZLinkSpotManager {
|
|
|
960
1080
|
throw new configuration_1.ZLinkConfigurationException('MeshNode Actor record is missing its Actor owner.');
|
|
961
1081
|
}
|
|
962
1082
|
const request = record.kind === service_runtime_contracts_1.ReceiveKind.ActorRequest;
|
|
963
|
-
if (record.sourceBindingGeneration > 0n) {
|
|
964
|
-
this.options.actorBindingGenerationObserver?.(actor.actorId, record.sourceBindingGeneration);
|
|
965
|
-
}
|
|
966
1083
|
const resolvedOwner = this.options.actorDispatchOwnerResolver?.(actor.actorId);
|
|
967
1084
|
const resolvedActorRef = resolvedOwner?.actorRef ?? {
|
|
968
1085
|
actorId: actor.actorId,
|
|
@@ -1016,36 +1133,41 @@ class DefaultZLinkSpotManager {
|
|
|
1016
1133
|
}
|
|
1017
1134
|
requireMeshSpotReply(record.reply(this.encodeMeshActorReply(record.parts[0], protocol_1.ZLinkStreamMessageKind.Error, {
|
|
1018
1135
|
message: error instanceof Error ? error.message : String(error),
|
|
1019
|
-
kind: error
|
|
1020
|
-
? error.kind
|
|
1021
|
-
: contracts_1.ZLinkFrameworkErrorKind.InternalFailure
|
|
1136
|
+
kind: spotActorFailureKind(error)
|
|
1022
1137
|
})));
|
|
1023
1138
|
}
|
|
1024
1139
|
}
|
|
1025
1140
|
async dispatchMeshActorJoin(meshName, owner, record) {
|
|
1026
1141
|
const spotId = owner.spotId;
|
|
1027
1142
|
const activation = spotId === null ? undefined : this.activations.resolve(meshName, spotId);
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
}
|
|
1037
|
-
else {
|
|
1038
|
-
requireMeshSpotReply(record.replyActorJoin(1, []));
|
|
1039
|
-
}
|
|
1040
|
-
return;
|
|
1143
|
+
const replyState = { targetCommitPublished: false };
|
|
1144
|
+
try {
|
|
1145
|
+
if (record.kindData?.kind === 'actorControl' &&
|
|
1146
|
+
record.kindData.canonicalActorJoin !== undefined) {
|
|
1147
|
+
const entrySpotId = this.options.entryNodeRidProvider?.() ?? this.options.entryNodeRid;
|
|
1148
|
+
if (spotId !== null && entrySpotId !== undefined && String(spotId) === String(entrySpotId)
|
|
1149
|
+
? this.options.dispatchEntryActorJoin === undefined
|
|
1150
|
+
: activation === undefined) {
|
|
1151
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `Spot '${String(spotId)}' is not active on this node.`);
|
|
1041
1152
|
}
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1153
|
+
}
|
|
1154
|
+
if (activation?.domain.kind === 'user') {
|
|
1155
|
+
await activation.serial.executeLifecycleOperation(() => this.dispatchMeshActorJoinCore(meshName, owner, record, replyState));
|
|
1156
|
+
return;
|
|
1157
|
+
}
|
|
1158
|
+
await this.dispatchMeshActorJoinCore(meshName, owner, record, replyState);
|
|
1159
|
+
}
|
|
1160
|
+
catch (error) {
|
|
1161
|
+
if (replyState.targetCommitPublished || record.replyFailure === undefined)
|
|
1162
|
+
throw error;
|
|
1163
|
+
const failure = error instanceof contracts_1.ZLinkFrameworkException
|
|
1164
|
+
? error
|
|
1165
|
+
: (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, 'Actor Join target admission failed.', error);
|
|
1166
|
+
const terminal = (0, framework_errors_internal_1.internalFrameworkWireReply)(failure);
|
|
1167
|
+
requireMeshSpotReply(record.replyFailure(terminal.terminalResult, terminal.failureCode));
|
|
1045
1168
|
}
|
|
1046
|
-
await this.dispatchMeshActorJoinCore(meshName, owner, record);
|
|
1047
1169
|
}
|
|
1048
|
-
async dispatchMeshActorJoinCore(meshName, owner, record) {
|
|
1170
|
+
async dispatchMeshActorJoinCore(meshName, owner, record, replyState) {
|
|
1049
1171
|
const spotId = owner.spotId;
|
|
1050
1172
|
const control = record.kindData;
|
|
1051
1173
|
if (control?.kind !== 'actorControl') {
|
|
@@ -1098,15 +1220,11 @@ class DefaultZLinkSpotManager {
|
|
|
1098
1220
|
admissionRecord = provisional.record;
|
|
1099
1221
|
canonicalAdmissionCreated = provisional.created;
|
|
1100
1222
|
try {
|
|
1223
|
+
(0, application_job_queue_scope_1.releaseApplicationJobPermitBeforeHandler)();
|
|
1101
1224
|
canonicalActorType = (await resolver({ actorId, ...control.canonicalActorJoin })).actorType;
|
|
1102
1225
|
}
|
|
1103
1226
|
catch (error) {
|
|
1104
1227
|
this.formalRemoteActorAdmissions.fail(control.canonicalActorJoin.handoffId, error);
|
|
1105
|
-
if (error instanceof contracts_1.ZLinkFrameworkException && record.replyFailure !== undefined) {
|
|
1106
|
-
const terminal = (0, framework_errors_internal_1.internalFrameworkWireReply)(error);
|
|
1107
|
-
requireMeshSpotReply(record.replyFailure(terminal.terminalResult, terminal.failureCode));
|
|
1108
|
-
return;
|
|
1109
|
-
}
|
|
1110
1228
|
throw error;
|
|
1111
1229
|
}
|
|
1112
1230
|
}
|
|
@@ -1134,7 +1252,6 @@ class DefaultZLinkSpotManager {
|
|
|
1134
1252
|
let admissionOutcome;
|
|
1135
1253
|
let accepted = false;
|
|
1136
1254
|
let committedAdmissionReplay = isRemoteCommit && admissionRecord?.state === 'committed';
|
|
1137
|
-
let targetCommitPublished;
|
|
1138
1255
|
const actorJoinIsCurrent = () => (record.deadlineUnixMs === undefined || record.deadlineUnixMs > BigInt(Date.now())) &&
|
|
1139
1256
|
(record.isPending?.() ?? true);
|
|
1140
1257
|
const abandonStaleAdmission = () => {
|
|
@@ -1185,13 +1302,10 @@ class DefaultZLinkSpotManager {
|
|
|
1185
1302
|
if (canonicalAdmissionCreated) {
|
|
1186
1303
|
if (targetsEntrySpot) {
|
|
1187
1304
|
admissionOutcome = {
|
|
1188
|
-
accepted:
|
|
1305
|
+
accepted: true,
|
|
1189
1306
|
actorRef
|
|
1190
1307
|
};
|
|
1191
1308
|
}
|
|
1192
|
-
else if (activation === undefined) {
|
|
1193
|
-
admissionOutcome = { accepted: false, actorRef };
|
|
1194
|
-
}
|
|
1195
1309
|
else {
|
|
1196
1310
|
const response = await activation.serial.execute(async () => activation.spot.onActorJoin(actorRef.actorId, (0, payload_codec_1.wrapFrameworkPayloadMessage)(callbackRequest, this.options.messageSerializers, requestContentType)));
|
|
1197
1311
|
let encodedReply;
|
|
@@ -1446,16 +1560,6 @@ class DefaultZLinkSpotManager {
|
|
|
1446
1560
|
return;
|
|
1447
1561
|
}
|
|
1448
1562
|
}
|
|
1449
|
-
if (accepted &&
|
|
1450
|
-
transferRequest !== undefined &&
|
|
1451
|
-
this.options.actorTransferRuntime !== undefined &&
|
|
1452
|
-
!isRemoteAdmission) {
|
|
1453
|
-
// A lightweight Core actor-join notification can create the Actor
|
|
1454
|
-
// before the formal transfer request reaches this branch. Preserve
|
|
1455
|
-
// the full relocation fence in that race so a later Session bind
|
|
1456
|
-
// refresh cannot erase the seal.
|
|
1457
|
-
this.options.actorTransferRuntime.rememberRoutedActorTransferTarget(actorId, transferRequest.remoteBoundSessionTarget);
|
|
1458
|
-
}
|
|
1459
1563
|
if (accepted &&
|
|
1460
1564
|
actor !== undefined &&
|
|
1461
1565
|
transferRequest !== undefined &&
|
|
@@ -1466,7 +1570,8 @@ class DefaultZLinkSpotManager {
|
|
|
1466
1570
|
spotId,
|
|
1467
1571
|
transferId: transferRequest.transferId,
|
|
1468
1572
|
handoffBacklog: transferRequest.handoffBacklog,
|
|
1469
|
-
deferredJoinCompletion
|
|
1573
|
+
deferredJoinCompletion,
|
|
1574
|
+
sealedSession: transferRequest.remoteBoundSessionTarget
|
|
1470
1575
|
});
|
|
1471
1576
|
if (isRemoteCommit && admissionRecord !== undefined) {
|
|
1472
1577
|
this.formalRemoteActorAdmissions.markCommitted(transferRequest.transferId, actor);
|
|
@@ -1482,7 +1587,7 @@ class DefaultZLinkSpotManager {
|
|
|
1482
1587
|
// Core commits the target membership while it accepts this reply.
|
|
1483
1588
|
// From this call onward a later callback/transport failure is
|
|
1484
1589
|
// post-commit and must not roll the materialized Actor back.
|
|
1485
|
-
targetCommitPublished = true;
|
|
1590
|
+
replyState.targetCommitPublished = true;
|
|
1486
1591
|
}
|
|
1487
1592
|
requireMeshSpotReply(joinReplyResult);
|
|
1488
1593
|
return true;
|
|
@@ -1512,38 +1617,52 @@ class DefaultZLinkSpotManager {
|
|
|
1512
1617
|
return;
|
|
1513
1618
|
const commitEntryTransfer = async () => {
|
|
1514
1619
|
try {
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1620
|
+
try {
|
|
1621
|
+
await this.options.dispatchEntryActorJoin?.(meshName, entryActor, []);
|
|
1622
|
+
}
|
|
1623
|
+
finally {
|
|
1624
|
+
this.formalRemoteTransfers.completeTargetLifecycle(entryActor.context.actorId, pendingTransfer.transferId);
|
|
1625
|
+
}
|
|
1626
|
+
const sourceLeaveSubmitted = await pendingTransfer.sourceLeaveSubmitted;
|
|
1627
|
+
if (!sourceLeaveSubmitted) {
|
|
1628
|
+
throw new Error(`Actor '${entryActor.context.actorId}' source authority commit failed before leave submission.`);
|
|
1629
|
+
}
|
|
1630
|
+
const handoffResults = await (0, actor_handoff_1.replayActorHandoffBacklog)(pendingTransfer.handoffBacklog, async (parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef) => {
|
|
1631
|
+
if (this.options.dispatchEntryActorPacket === undefined) {
|
|
1632
|
+
throw new Error('Entry Spot saved handoff replay requires its Actor packet runtime.');
|
|
1633
|
+
}
|
|
1634
|
+
return await this.options.dispatchEntryActorPacket(entryActor.context.actorId, parts, returnResponse, remoteBoundSessionTarget, fallbackActorRef);
|
|
1635
|
+
}, (index) => this.options.runtimeEventPublisher?.publish({
|
|
1636
|
+
sourceName: 'zlink.framework.actor-handoff',
|
|
1637
|
+
timestamp: new Date(),
|
|
1638
|
+
marker: 'backlog_enqueued',
|
|
1639
|
+
actorId: entryActor.context.actorId,
|
|
1640
|
+
index
|
|
1641
|
+
}));
|
|
1642
|
+
const failedHandoff = handoffResults.find((result) => !result.ok);
|
|
1643
|
+
if (failedHandoff !== undefined) {
|
|
1644
|
+
throw new Error(`Actor '${entryActor.context.actorId}' saved Entry handoff packet ` +
|
|
1645
|
+
`${failedHandoff.index} failed: ${(0, diagnostic_text_1.diagnosticTextOrAbsent)(failedHandoff.error)}.`);
|
|
1646
|
+
}
|
|
1523
1647
|
}
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1648
|
+
catch (error) {
|
|
1649
|
+
const completion = pendingTransfer.deferredJoinCompletion;
|
|
1650
|
+
if (completion !== undefined) {
|
|
1651
|
+
await this.options.actorTransferRuntime?.deliverDeferredJoinCompletion({
|
|
1652
|
+
...completion,
|
|
1653
|
+
status: 'failed',
|
|
1654
|
+
kind: spotActorFailureKind(error)
|
|
1655
|
+
}, entryActor, completion.actor, (operation) => this.options.executeEntryActor(meshName, entryActor.context.actorId, operation));
|
|
1527
1656
|
}
|
|
1528
|
-
|
|
1529
|
-
}
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
actorId: entryActor.context.actorId,
|
|
1534
|
-
index
|
|
1535
|
-
}));
|
|
1536
|
-
const failedHandoff = handoffResults.find((result) => !result.ok);
|
|
1537
|
-
if (failedHandoff !== undefined) {
|
|
1538
|
-
throw new Error(`Actor '${entryActor.context.actorId}' saved Entry handoff packet ` +
|
|
1539
|
-
`${failedHandoff.index} failed: ${failedHandoff.error ?? 'unknown error'}.`);
|
|
1657
|
+
throw error;
|
|
1658
|
+
}
|
|
1659
|
+
const completion = pendingTransfer.deferredJoinCompletion;
|
|
1660
|
+
if (completion !== undefined) {
|
|
1661
|
+
await this.options.actorTransferRuntime?.deliverDeferredJoinCompletion(completion, entryActor, completion.actor, (operation) => this.options.executeEntryActor(meshName, entryActor.context.actorId, operation));
|
|
1540
1662
|
}
|
|
1541
1663
|
this.formalRemoteTransfers.delete(entryActor.context.actorId);
|
|
1542
1664
|
};
|
|
1543
|
-
this.options.detachedTaskRunner
|
|
1544
|
-
if (this.options.detachedTaskRunner === undefined) {
|
|
1545
|
-
void commitEntryTransfer().catch(() => undefined);
|
|
1546
|
-
}
|
|
1665
|
+
this.options.detachedTaskRunner.runDetached(`actor Entry Spot transfer ${entryActor.context.actorId}`, commitEntryTransfer);
|
|
1547
1666
|
}
|
|
1548
1667
|
}
|
|
1549
1668
|
else {
|
|
@@ -1555,10 +1674,10 @@ class DefaultZLinkSpotManager {
|
|
|
1555
1674
|
if (control.canonicalActorJoin !== undefined) {
|
|
1556
1675
|
this.formalRemoteActorAdmissions.fail(control.canonicalActorJoin.handoffId, error);
|
|
1557
1676
|
}
|
|
1558
|
-
if (targetCommitPublished
|
|
1677
|
+
if (!replyState.targetCommitPublished) {
|
|
1559
1678
|
this.formalRemoteTransfers.delete(actorId);
|
|
1560
1679
|
}
|
|
1561
|
-
if (materialized && targetCommitPublished
|
|
1680
|
+
if (materialized && !replyState.targetCommitPublished) {
|
|
1562
1681
|
await this.options.actorTransferRuntime?.rollbackRoutedActor(actor);
|
|
1563
1682
|
}
|
|
1564
1683
|
throw error;
|
|
@@ -1587,9 +1706,7 @@ class DefaultZLinkSpotManager {
|
|
|
1587
1706
|
control.lifecycleKind === service_runtime_contracts_1.ActorLifecycleKind.Joined &&
|
|
1588
1707
|
actorId !== undefined &&
|
|
1589
1708
|
this.formalRemoteTransfers.get(actorId) !== undefined) {
|
|
1590
|
-
this.options.detachedTaskRunner
|
|
1591
|
-
if (this.options.detachedTaskRunner === undefined)
|
|
1592
|
-
void operation.catch(() => undefined);
|
|
1709
|
+
this.options.detachedTaskRunner.runDetached(`actor transfer target commit ${actorId}`, async () => await operation);
|
|
1593
1710
|
return;
|
|
1594
1711
|
}
|
|
1595
1712
|
await operation;
|
|
@@ -1668,7 +1785,7 @@ class DefaultZLinkSpotManager {
|
|
|
1668
1785
|
if (currentRef === null) {
|
|
1669
1786
|
throw new Error(`Actor '${actor.context.actorId}' has no target ref for deferred Join completion.`);
|
|
1670
1787
|
}
|
|
1671
|
-
await this.options.actorTransferRuntime?.
|
|
1788
|
+
await this.options.actorTransferRuntime?.deliverDeferredJoinCompletion(deferredJoinCompletion, actor, currentRef, (operation) => activation.executeActor(actor.context.actorId, async () => await operation()));
|
|
1672
1789
|
}
|
|
1673
1790
|
};
|
|
1674
1791
|
const completeTargetReady = async () => {
|
|
@@ -1683,7 +1800,7 @@ class DefaultZLinkSpotManager {
|
|
|
1683
1800
|
const failedHandoff = handoffResults.find((result) => !result.ok);
|
|
1684
1801
|
if (failedHandoff !== undefined) {
|
|
1685
1802
|
throw new Error(`Actor '${actor.context.actorId}' saved handoff packet ` +
|
|
1686
|
-
`${failedHandoff.index} failed: ${failedHandoff.error
|
|
1803
|
+
`${failedHandoff.index} failed: ${(0, diagnostic_text_1.diagnosticTextOrAbsent)(failedHandoff.error)}.`);
|
|
1687
1804
|
}
|
|
1688
1805
|
// Spec 15 §4.2 relocation temporary queue: arrivals parked at
|
|
1689
1806
|
// this target directly (not relayed through the source's
|
|
@@ -1696,13 +1813,14 @@ class DefaultZLinkSpotManager {
|
|
|
1696
1813
|
// the Session binding aggregate after this boundary.
|
|
1697
1814
|
this.formalRemoteTransfers.delete(actor.context.actorId);
|
|
1698
1815
|
}
|
|
1816
|
+
const sealedSession = pendingTransfer?.sealedSession;
|
|
1699
1817
|
const updateBoundSessionRoute = async () => {
|
|
1700
|
-
await this.options.actorTransferRuntime?.publishRoutedActorOwnership(actor);
|
|
1818
|
+
await this.options.actorTransferRuntime?.publishRoutedActorOwnership(actor, sealedSession);
|
|
1701
1819
|
await this.options.actorTransferRuntime?.openRoutedActorSession(actor);
|
|
1702
1820
|
};
|
|
1703
|
-
// Session routing is an independent post-Ready branch.
|
|
1704
|
-
//
|
|
1705
|
-
if (pendingTransfer !== undefined
|
|
1821
|
+
// Session routing is an independent post-Ready branch. The Session
|
|
1822
|
+
// owner submits current-binding pushes while the route seal remains installed.
|
|
1823
|
+
if (pendingTransfer !== undefined) {
|
|
1706
1824
|
this.options.detachedTaskRunner.runDetached(`actor transfer Session route ${actor.context.actorId}`, updateBoundSessionRoute);
|
|
1707
1825
|
}
|
|
1708
1826
|
else {
|
|
@@ -1731,10 +1849,7 @@ class DefaultZLinkSpotManager {
|
|
|
1731
1849
|
onDetachedTerminal(terminal);
|
|
1732
1850
|
}
|
|
1733
1851
|
else {
|
|
1734
|
-
this.options.detachedTaskRunner
|
|
1735
|
-
if (this.options.detachedTaskRunner === undefined) {
|
|
1736
|
-
void terminal.catch(() => undefined);
|
|
1737
|
-
}
|
|
1852
|
+
this.options.detachedTaskRunner.runDetached(`actor transfer target commit ${actor.context.actorId}`, async () => await terminal);
|
|
1738
1853
|
}
|
|
1739
1854
|
return;
|
|
1740
1855
|
}
|
|
@@ -1784,30 +1899,48 @@ class DefaultZLinkSpotManager {
|
|
|
1784
1899
|
}
|
|
1785
1900
|
const entrySpotId = this.options.entryNodeRidProvider?.() ?? this.options.entryNodeRid;
|
|
1786
1901
|
const targetsEntry = entrySpotId !== undefined && String(admission.admission.spotId) === String(entrySpotId);
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
if (
|
|
1793
|
-
|
|
1902
|
+
const activation = targetsEntry
|
|
1903
|
+
? undefined
|
|
1904
|
+
: this.activations.resolve(meshName, admission.admission.spotId);
|
|
1905
|
+
let lifecycleFailure;
|
|
1906
|
+
try {
|
|
1907
|
+
if (targetsEntry) {
|
|
1908
|
+
await this.options.dispatchEntryActorJoin?.(meshName, actor, []);
|
|
1909
|
+
}
|
|
1910
|
+
else {
|
|
1911
|
+
if (activation === undefined) {
|
|
1912
|
+
throw new Error(`Actor Join relocation '${relocationId}' target Spot is not active.`);
|
|
1913
|
+
}
|
|
1914
|
+
await activation.serial.execute(() => activation.spot.onJoinedActor(actor));
|
|
1794
1915
|
}
|
|
1795
|
-
await activation.serial.execute(() => activation.spot.onJoinedActor(actor));
|
|
1796
1916
|
}
|
|
1797
|
-
|
|
1917
|
+
catch (error) {
|
|
1918
|
+
lifecycleFailure = { error };
|
|
1919
|
+
}
|
|
1920
|
+
if (lifecycleFailure === undefined) {
|
|
1921
|
+
const sourceLeave = submitSourceLeave(admission.admission.actorRef.nodeRid);
|
|
1922
|
+
this.options.detachedTaskRunner.runDetached(`actor Join source leave ${actor.context.actorId}`, () => sourceLeave);
|
|
1923
|
+
}
|
|
1798
1924
|
if (outcome.deferredJoinCompletion !== undefined &&
|
|
1799
1925
|
this.options.actorTransferRuntime !== undefined) {
|
|
1800
1926
|
const submitMailbox = targetsEntry
|
|
1801
1927
|
? (operation) => operation()
|
|
1802
1928
|
: (operation) => {
|
|
1803
|
-
const activation = this.activations.resolve(meshName, admission.admission.spotId);
|
|
1804
1929
|
if (activation === undefined) {
|
|
1805
1930
|
throw new Error(`Actor Join relocation '${relocationId}' target mailbox is missing.`);
|
|
1806
1931
|
}
|
|
1807
1932
|
return activation.executeActor(actor.context.actorId, operation);
|
|
1808
1933
|
};
|
|
1809
|
-
await this.options.actorTransferRuntime.
|
|
1810
|
-
|
|
1934
|
+
await this.options.actorTransferRuntime.deliverDeferredJoinCompletion(lifecycleFailure === undefined
|
|
1935
|
+
? outcome.deferredJoinCompletion
|
|
1936
|
+
: {
|
|
1937
|
+
...outcome.deferredJoinCompletion,
|
|
1938
|
+
status: 'failed',
|
|
1939
|
+
kind: spotActorFailureKind(lifecycleFailure.error)
|
|
1940
|
+
}, actor, actorRef, submitMailbox, signal);
|
|
1941
|
+
}
|
|
1942
|
+
if (lifecycleFailure !== undefined)
|
|
1943
|
+
throw lifecycleFailure.error;
|
|
1811
1944
|
this.formalRemoteActorAdmissions.markCommitted(relocationId, actor);
|
|
1812
1945
|
return true;
|
|
1813
1946
|
}
|
|
@@ -1934,17 +2067,10 @@ class DefaultZLinkSpotManager {
|
|
|
1934
2067
|
}
|
|
1935
2068
|
}
|
|
1936
2069
|
exports.DefaultZLinkSpotManager = DefaultZLinkSpotManager;
|
|
1937
|
-
function
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotMoving ||
|
|
1942
|
-
kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotRouteNotFound ||
|
|
1943
|
-
kind === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound) {
|
|
1944
|
-
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.StaleTarget;
|
|
1945
|
-
}
|
|
1946
|
-
}
|
|
1947
|
-
return ZLinkDispatchOptions_1.ZLinkRuntimeDispatchErrorReason.HandlerException;
|
|
2070
|
+
function spotActorFailureKind(error) {
|
|
2071
|
+
return error instanceof contracts_1.ZLinkFrameworkException
|
|
2072
|
+
? error.kind
|
|
2073
|
+
: contracts_1.ZLinkFrameworkErrorKind.InternalFailure;
|
|
1948
2074
|
}
|
|
1949
2075
|
function decodeFormalRemoteTransferRequest(message) {
|
|
1950
2076
|
return decodeFormalRemoteTransferRequestBytes(message.data());
|