@zlink-systems/framework 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -2,23 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultZLinkActorClient = void 0;
|
|
4
4
|
exports.forwardEncodedActorPacket = forwardEncodedActorPacket;
|
|
5
|
-
const
|
|
6
|
-
const runtime_message_1 = require("../backend/runtime-message");
|
|
7
|
-
const runtime_values_1 = require("../backend/runtime-values");
|
|
5
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
8
6
|
const contracts_1 = require("../../contracts");
|
|
9
|
-
const
|
|
10
|
-
const submission_result_1 = require("../messaging/submission-result");
|
|
11
|
-
const backend_1 = require("../backend");
|
|
7
|
+
const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
|
|
12
8
|
const abort_1 = require("../abort");
|
|
13
|
-
const
|
|
9
|
+
const backend_1 = require("../backend");
|
|
10
|
+
const runtime_message_1 = require("../backend/runtime-message");
|
|
11
|
+
const runtime_values_1 = require("../backend/runtime-values");
|
|
12
|
+
const configuration_1 = require("../configuration");
|
|
13
|
+
const execution_1 = require("../execution");
|
|
14
|
+
const actor_request_deadline_1 = require("./actor-request-deadline");
|
|
15
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
14
16
|
const packet_name_1 = require("../messaging/packet-name");
|
|
17
|
+
const payload_codec_1 = require("../messaging/payload-codec");
|
|
18
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
15
19
|
const protocol_1 = require("../streams/protocol");
|
|
20
|
+
const actor_execution_context_1 = require("./actor-execution-context");
|
|
21
|
+
const actor_message_follow_context_1 = require("./actor-message-follow-context");
|
|
16
22
|
const actor_packet_relay_wire_1 = require("./actor-packet-relay-wire");
|
|
17
23
|
const actor_routed_json_request_1 = require("./actor-routed-json-request");
|
|
18
|
-
const actor_message_follow_context_1 = require("./actor-message-follow-context");
|
|
19
|
-
const execution_1 = require("../execution");
|
|
20
|
-
const configuration_1 = require("../configuration");
|
|
21
|
-
const actor_execution_context_1 = require("./actor-execution-context");
|
|
22
24
|
class DefaultZLinkActorClient {
|
|
23
25
|
options;
|
|
24
26
|
constructor(options) {
|
|
@@ -53,7 +55,7 @@ class DefaultZLinkActorClient {
|
|
|
53
55
|
submissions.push(duplicate);
|
|
54
56
|
}
|
|
55
57
|
await (0, abort_1.awaitWithAbort)(Promise.all(submissions), signal);
|
|
56
|
-
return
|
|
58
|
+
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
57
59
|
}
|
|
58
60
|
const node = this.requireNode(meshName);
|
|
59
61
|
if (this.options.routeTransport !== undefined &&
|
|
@@ -66,8 +68,8 @@ class DefaultZLinkActorClient {
|
|
|
66
68
|
actorRef: actor,
|
|
67
69
|
returnResponse: false,
|
|
68
70
|
messageFollowContext: messageFollow
|
|
69
|
-
}), { packetName:
|
|
70
|
-
return
|
|
71
|
+
}), { packetName: actor_packet_relay_wire_1.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET });
|
|
72
|
+
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
71
73
|
}
|
|
72
74
|
return await this.submitActorSend(meshName, toBackendActorRef(actor), parts);
|
|
73
75
|
}
|
|
@@ -89,7 +91,7 @@ class DefaultZLinkActorClient {
|
|
|
89
91
|
const effectiveTimeoutMs = timeoutMs ?? this.options.defaultRequestTimeoutMs;
|
|
90
92
|
const deadlineMs = effectiveTimeoutMs === undefined ? undefined : performance.now() + effectiveTimeoutMs;
|
|
91
93
|
const deadlineUnixMs = effectiveTimeoutMs === undefined ? undefined : Date.now() + effectiveTimeoutMs;
|
|
92
|
-
const route = await this.resolveActorRoute(actorId, signal);
|
|
94
|
+
const route = await this.resolveActorRoute(actorId, signal, deadlineMs);
|
|
93
95
|
if (waitPolicy === 'async' &&
|
|
94
96
|
sourceSpotId !== undefined &&
|
|
95
97
|
sameSpotRoute(sourceSpotId, route)) {
|
|
@@ -104,9 +106,12 @@ class DefaultZLinkActorClient {
|
|
|
104
106
|
const messageFollow = createActorMessageFollowContext(route, parts, true, deadlineUnixMs, correlationId, operationId);
|
|
105
107
|
const routedActor = (0, actor_message_follow_context_1.attachActorMessageFollowContext)(actor, messageFollow);
|
|
106
108
|
try {
|
|
107
|
-
const
|
|
109
|
+
const delivery = this.options
|
|
108
110
|
.transportDeliveryGate?.()
|
|
109
|
-
?.waitBeforeSubmit(actorId, 'request', signal)
|
|
111
|
+
?.waitBeforeSubmit(actorId, 'request', signal);
|
|
112
|
+
const submissionCopies = delivery === undefined
|
|
113
|
+
? 1
|
|
114
|
+
: ((await (0, actor_request_deadline_1.waitActorReply)(delivery, actorId, deadlineMs, signal)) ?? 1);
|
|
110
115
|
const handoff = this.options.handoffCapture?.(meshName, actor.actorId, parts, true, routedActor, deadlineUnixMs);
|
|
111
116
|
if (handoff !== undefined) {
|
|
112
117
|
const submissions = [handoff];
|
|
@@ -115,10 +120,10 @@ class DefaultZLinkActorClient {
|
|
|
115
120
|
if (duplicate !== undefined)
|
|
116
121
|
submissions.push(duplicate);
|
|
117
122
|
}
|
|
118
|
-
const replies = await
|
|
123
|
+
const replies = await (0, actor_request_deadline_1.waitActorReply)(Promise.all(submissions), actorId, deadlineMs, signal);
|
|
119
124
|
return replies[0];
|
|
120
125
|
}
|
|
121
|
-
return await this.submitActorRequest(meshName, toBackendActorRef(actor), parts, remainingActorRequestTimeout(actorId, deadlineMs), signal, route, messageFollow);
|
|
126
|
+
return await this.submitActorRequest(meshName, toBackendActorRef(actor), parts, (0, actor_request_deadline_1.remainingActorRequestTimeout)(actorId, deadlineMs), signal, route, messageFollow);
|
|
122
127
|
}
|
|
123
128
|
catch (error) {
|
|
124
129
|
if (isStaleActorError(error)) {
|
|
@@ -132,12 +137,12 @@ class DefaultZLinkActorClient {
|
|
|
132
137
|
closeMessages(parts);
|
|
133
138
|
}
|
|
134
139
|
}
|
|
135
|
-
async resolveActorRoute(actorId, signal) {
|
|
140
|
+
async resolveActorRoute(actorId, signal, deadlineMs) {
|
|
136
141
|
const resolver = this.options.locationResolver();
|
|
137
142
|
if (resolver === undefined) {
|
|
138
143
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, 'Actor direct messaging requires a Location Store.');
|
|
139
144
|
}
|
|
140
|
-
const resolution = await resolver.resolveDirectActorRoute(actorId, signal);
|
|
145
|
+
const resolution = await resolver.resolveDirectActorRoute(actorId, signal, deadlineMs);
|
|
141
146
|
if (resolution.kind === 'missing') {
|
|
142
147
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor route '${actorId}' was not found.`);
|
|
143
148
|
}
|
|
@@ -191,17 +196,15 @@ class DefaultZLinkActorClient {
|
|
|
191
196
|
async submitActorSend(meshName, actor, parts) {
|
|
192
197
|
const node = this.requireNode(meshName);
|
|
193
198
|
try {
|
|
194
|
-
return
|
|
199
|
+
return (0, submission_result_1.classifySubmitResult)(await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
195
200
|
flags: runtime_values_1.ZLINK_BACKEND_SEND_NONE
|
|
196
201
|
}), 'Actor send');
|
|
197
202
|
}
|
|
198
203
|
catch (error) {
|
|
199
204
|
if ((0, runtime_values_1.isZLinkBackendResultError)(error)) {
|
|
200
|
-
return
|
|
205
|
+
return (0, submission_result_1.classifySubmitResult)(error.result, 'Actor send', error.phase);
|
|
201
206
|
}
|
|
202
|
-
throw (
|
|
203
|
-
? mapRequestError(error, 'Actor send')
|
|
204
|
-
: mapSubmitError(error, 'Actor send');
|
|
207
|
+
throw mapSubmitError(error, 'Actor send');
|
|
205
208
|
}
|
|
206
209
|
}
|
|
207
210
|
async submitActorRequest(meshName, actor, parts, timeoutMs, signal, route, messageFollowContext) {
|
|
@@ -296,36 +299,10 @@ function remoteRelayErrorKind(value) {
|
|
|
296
299
|
? value
|
|
297
300
|
: framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
298
301
|
}
|
|
299
|
-
function remainingActorRequestTimeout(actorId, deadlineMs) {
|
|
300
|
-
if (deadlineMs === undefined)
|
|
301
|
-
return undefined;
|
|
302
|
-
const remaining = deadlineMs - performance.now();
|
|
303
|
-
if (remaining <= 0) {
|
|
304
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.DeadlineExceeded, `Actor request '${actorId}' exceeded its deadline before submission.`);
|
|
305
|
-
}
|
|
306
|
-
return Math.max(1, Math.ceil(remaining));
|
|
307
|
-
}
|
|
308
302
|
function requireActorId(actorId) {
|
|
309
303
|
const byteLength = Buffer.byteLength(actorId, 'utf8');
|
|
310
|
-
if (byteLength < 1 || byteLength >
|
|
311
|
-
throw new configuration_1.ZLinkConfigurationException(
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
async function waitHandoffReply(reply, timeoutMs) {
|
|
315
|
-
if (timeoutMs === undefined)
|
|
316
|
-
return (await reply);
|
|
317
|
-
let deadline;
|
|
318
|
-
try {
|
|
319
|
-
return await Promise.race([
|
|
320
|
-
reply,
|
|
321
|
-
new Promise((_resolve, reject) => {
|
|
322
|
-
deadline = setTimeout(() => reject((0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, 'Actor handoff request timed out.', true)), timeoutMs);
|
|
323
|
-
})
|
|
324
|
-
]);
|
|
325
|
-
}
|
|
326
|
-
finally {
|
|
327
|
-
if (deadline !== undefined)
|
|
328
|
-
clearTimeout(deadline);
|
|
304
|
+
if (byteLength < 1 || byteLength > CoreTypes_1.ZLINK_MAX_ACTOR_ID_BYTES) {
|
|
305
|
+
throw new configuration_1.ZLinkConfigurationException(`Actor ID must contain 1..${CoreTypes_1.ZLINK_MAX_ACTOR_ID_BYTES} UTF-8 bytes.`);
|
|
329
306
|
}
|
|
330
307
|
}
|
|
331
308
|
async function forwardEncodedActorPacket(node, completions, actor, header, payload, returnResponse, timeoutMs, serializers) {
|
|
@@ -493,97 +470,20 @@ function decodeActorReplyPayload(kind, payload, serializers, packetName) {
|
|
|
493
470
|
const wireKind = error.kind;
|
|
494
471
|
const publicKind = typeof wireKind === 'number' &&
|
|
495
472
|
Number.isInteger(wireKind) &&
|
|
496
|
-
wireKind >=
|
|
497
|
-
wireKind <=
|
|
473
|
+
wireKind >= contracts_1.ZLinkFrameworkErrorKind.NotFound &&
|
|
474
|
+
wireKind <= contracts_1.ZLinkFrameworkErrorKind.InternalFailure
|
|
498
475
|
? wireKind
|
|
499
|
-
:
|
|
500
|
-
throw new
|
|
476
|
+
: contracts_1.ZLinkFrameworkErrorKind.InternalFailure;
|
|
477
|
+
throw new contracts_1.ZLinkFrameworkException(publicKind, error.message ?? 'Actor request failed.');
|
|
501
478
|
}
|
|
502
|
-
return (0, payload_codec_1.decodeFrameworkPayloadMessage)(payload, serializers, undefined,
|
|
479
|
+
return (0, payload_codec_1.decodeFrameworkPayloadMessage)(payload, serializers, undefined, stream_wire_1.ZlinkStreamContentType.Json, packetName, 'reply');
|
|
503
480
|
}
|
|
504
481
|
function mapSubmitError(error, operationName) {
|
|
505
|
-
if (error instanceof
|
|
482
|
+
if (error instanceof contracts_1.ZLinkFrameworkException) {
|
|
506
483
|
return error;
|
|
507
484
|
}
|
|
508
|
-
if ((0, runtime_values_1.isZLinkBackendResultError)(error)) {
|
|
509
|
-
switch (error.result) {
|
|
510
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
511
|
-
return routeNotConnected(`${operationName} failed because the target route is not connected.`, error);
|
|
512
|
-
case runtime_values_1.SubmitResult.NotFound:
|
|
513
|
-
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `${operationName} failed because the actor route was not found.`, false, error);
|
|
514
|
-
default:
|
|
515
|
-
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, `${operationName} failed with submit result ${error.result}.`, false, error);
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
485
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `${operationName} failed before a reply was received.`, true, error);
|
|
519
486
|
}
|
|
520
|
-
function mapSubmitResult(result, operationName) {
|
|
521
|
-
switch (result) {
|
|
522
|
-
case runtime_values_1.SubmitResult.Ok:
|
|
523
|
-
return submitted();
|
|
524
|
-
case runtime_values_1.SubmitResult.Backpressured:
|
|
525
|
-
case runtime_values_1.SubmitResult.NotAdmitted:
|
|
526
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
527
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
528
|
-
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
529
|
-
case runtime_values_1.SubmitResult.NotFound:
|
|
530
|
-
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
531
|
-
case runtime_values_1.SubmitResult.Terminated:
|
|
532
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
|
|
533
|
-
default:
|
|
534
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed, `${operationName} failed with submit result ${result}.`);
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
function submitted() {
|
|
538
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
539
|
-
}
|
|
540
|
-
// Ownership-aware Actor remote-reply translator (spec 32:81-118, 99-103):
|
|
541
|
-
// the reply comes from a remote target, so a fine framework failure code
|
|
542
|
-
// refines the coarse terminal, and a terminal-only conflict/busy is the
|
|
543
|
-
// target's owner/queue state (retryable stale/Unavailable), never a
|
|
544
|
-
// source-owned queue exhaustion. Backpressure never appears on this reply
|
|
545
|
-
// path. Internal kinds are preserved so the stale-actor re-resolve retry
|
|
546
|
-
// (isStaleActorError) keeps working.
|
|
547
|
-
function actorFailureCodeKind(failureErrno) {
|
|
548
|
-
switch (failureErrno) {
|
|
549
|
-
case 3:
|
|
550
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorAlreadyExists;
|
|
551
|
-
case 4:
|
|
552
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorTypeMismatch;
|
|
553
|
-
case 7:
|
|
554
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.SpotTypeMismatch;
|
|
555
|
-
case 8:
|
|
556
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorSessionNotBound;
|
|
557
|
-
case 9:
|
|
558
|
-
case 14:
|
|
559
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestTargetNotFound;
|
|
560
|
-
case 12:
|
|
561
|
-
case 16:
|
|
562
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestProtocolError;
|
|
563
|
-
// routeNotConnected(13) and a remote worker queue full(18) are Unavailable.
|
|
564
|
-
case 13:
|
|
565
|
-
case 18:
|
|
566
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
567
|
-
case 15:
|
|
568
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestRejected;
|
|
569
|
-
case 19:
|
|
570
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.WorkerTimedOut;
|
|
571
|
-
case 17:
|
|
572
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
573
|
-
case 20:
|
|
574
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.WorkerFailed;
|
|
575
|
-
case 21:
|
|
576
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
577
|
-
case 33:
|
|
578
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorGenerationStale;
|
|
579
|
-
case 34:
|
|
580
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving;
|
|
581
|
-
case 35:
|
|
582
|
-
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RelocationDataLost;
|
|
583
|
-
default:
|
|
584
|
-
return undefined;
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
487
|
function actorTerminalKind(result) {
|
|
588
488
|
switch (result) {
|
|
589
489
|
case runtime_values_1.RequestResult.TimedOut:
|
|
@@ -599,7 +499,7 @@ function actorTerminalKind(result) {
|
|
|
599
499
|
case runtime_values_1.RequestResult.NotConnected:
|
|
600
500
|
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
601
501
|
// A terminal-only conflict/busy on a remote actor reply is the target's
|
|
602
|
-
// stale/owner state:
|
|
502
|
+
// stale/owner state: ActorLocationStale (Unavailable).
|
|
603
503
|
case runtime_values_1.RequestResult.Conflict:
|
|
604
504
|
case runtime_values_1.RequestResult.Busy:
|
|
605
505
|
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
@@ -607,19 +507,18 @@ function actorTerminalKind(result) {
|
|
|
607
507
|
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
608
508
|
}
|
|
609
509
|
}
|
|
510
|
+
// The shared table preserves Actor fine kinds; without a recognized fine code,
|
|
511
|
+
// the remote owner/queue terminal supplies the classification.
|
|
610
512
|
function mapRequestResult(result, failureErrno, operationName) {
|
|
611
|
-
const kind =
|
|
513
|
+
const kind = (0, framework_errors_internal_1.internalFrameworkErrorKindFromWireFailureCode)(failureErrno) ?? actorTerminalKind(result);
|
|
612
514
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `${operationName} failed with request result ${result}` +
|
|
613
515
|
(failureErrno !== 0 ? ` (failure code ${failureErrno}).` : '.'));
|
|
614
516
|
}
|
|
615
|
-
function mapRequestError(error, operationName) {
|
|
616
|
-
return mapRequestResult(error.result, error.failureErrno ?? 0, operationName);
|
|
617
|
-
}
|
|
618
517
|
function routeNotConnected(message, cause) {
|
|
619
518
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, message, true, cause);
|
|
620
519
|
}
|
|
621
520
|
function isStaleActorError(error) {
|
|
622
|
-
return (error instanceof
|
|
521
|
+
return (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
623
522
|
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
|
|
624
523
|
}
|
|
625
524
|
function actorLocationStale(actorId, cause) {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type ZLinkMessageSerializer } from '../../contracts';
|
|
3
|
-
import { ZLinkActorRuntimeState } from './actor-runtime-state';
|
|
4
|
-
import type { ZLinkActorBoundSessionFactory, ZLinkActorJoinCoordinator } from './actor-runtime-contracts';
|
|
5
|
-
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
1
|
+
import { type RoutingId, type SpotId, type ZLinkActorContext, type ZLinkActorJoinEntrySpotCall, type ZLinkActorJoinSpotCall, type ZLinkBoundSession, type ZLinkMessageSerializer } from '../../contracts';
|
|
6
2
|
import { ZLINK_ACTOR_LIFECYCLE_SNAPSHOT, type ZLinkActorLifecycleSnapshotSource } from './actor-lifecycle-snapshot';
|
|
3
|
+
import type { ZLinkActorBoundSessionFactory, ZLinkActorJoinCoordinator, ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
4
|
+
import { ZLinkActorRuntimeState } from './actor-runtime-state';
|
|
7
5
|
export declare const ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME: unique symbol;
|
|
8
6
|
export declare class DefaultZLinkActorContext implements ZLinkActorContext {
|
|
9
7
|
private readonly state;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultZLinkActorContext = exports.ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME = void 0;
|
|
4
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
5
4
|
const contracts_1 = require("../../contracts");
|
|
5
|
+
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
6
6
|
const runtime_message_1 = require("../backend/runtime-message");
|
|
7
7
|
const configuration_1 = require("../configuration");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const actor_runtime_state_1 = require("./actor-runtime-state");
|
|
11
|
-
const actor_lifecycle_snapshot_1 = require("./actor-lifecycle-snapshot");
|
|
8
|
+
const dispatch_error_details_1 = require("../diagnostics/dispatch-error-details");
|
|
9
|
+
const execution_1 = require("../execution");
|
|
12
10
|
const operation_identity_1 = require("../foundation/operation-identity");
|
|
11
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
12
|
+
const payload_codec_1 = require("../messaging/payload-codec");
|
|
13
13
|
const actor_join_deferred_scope_1 = require("./actor-join-deferred-scope");
|
|
14
|
-
const
|
|
15
|
-
const
|
|
14
|
+
const actor_lifecycle_snapshot_1 = require("./actor-lifecycle-snapshot");
|
|
15
|
+
const actor_runtime_state_1 = require("./actor-runtime-state");
|
|
16
|
+
const DEFAULT_ACTOR_JOIN_TIMEOUT_MS = 5_000;
|
|
17
|
+
const MAX_ACTOR_JOIN_TIMEOUT_MS = 2_147_483_647;
|
|
16
18
|
exports.ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME = Symbol('zlink.actor.join-entry-spot-runtime');
|
|
17
19
|
class DefaultZLinkActorContext {
|
|
18
20
|
state;
|
|
@@ -105,7 +107,7 @@ class DefaultZLinkActorJoinSpotCall {
|
|
|
105
107
|
spotId;
|
|
106
108
|
request;
|
|
107
109
|
messageSerializers;
|
|
108
|
-
timeoutMs =
|
|
110
|
+
timeoutMs = DEFAULT_ACTOR_JOIN_TIMEOUT_MS;
|
|
109
111
|
deferred = false;
|
|
110
112
|
turn = (0, execution_1.captureZLinkSpotSerialTurn)();
|
|
111
113
|
constructor(state, actor, coordinator, spotId, request, messageSerializers) {
|
|
@@ -146,7 +148,7 @@ class DefaultZLinkActorJoinSpotCall {
|
|
|
146
148
|
discarded = true;
|
|
147
149
|
this.state.endDeferredJoin();
|
|
148
150
|
try {
|
|
149
|
-
await this.coordinator.abortDeferredJoin?.(this.actor, this.state
|
|
151
|
+
await this.coordinator.abortDeferredJoin?.(this.actor, this.state);
|
|
150
152
|
}
|
|
151
153
|
finally {
|
|
152
154
|
deadline.close();
|
|
@@ -164,7 +166,7 @@ class DefaultZLinkActorJoinSpotCall {
|
|
|
164
166
|
// The provisional ingress fence is installed only after the
|
|
165
167
|
// handler terminal. Target admission starts before reply encoding,
|
|
166
168
|
// while completion and finalization remain in execute().
|
|
167
|
-
this.coordinator.beginDeferredJoin?.(this.actor, this.state
|
|
169
|
+
this.coordinator.beginDeferredJoin?.(this.actor, this.state);
|
|
168
170
|
pendingJoin = this.coordinator.joinSpot(this.actor, this.state, this.spotId, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
|
|
169
171
|
if (this.turn === undefined) {
|
|
170
172
|
await pendingJoin.catch(() => undefined);
|
|
@@ -189,7 +191,7 @@ class DefaultZLinkActorJoinSpotCall {
|
|
|
189
191
|
catch (error) {
|
|
190
192
|
this.state.endDeferredJoin();
|
|
191
193
|
await this.coordinator
|
|
192
|
-
.abortDeferredJoin?.(this.actor, this.state
|
|
194
|
+
.abortDeferredJoin?.(this.actor, this.state)
|
|
193
195
|
.catch(() => undefined);
|
|
194
196
|
await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
|
|
195
197
|
return;
|
|
@@ -231,7 +233,7 @@ class DefaultZLinkActorJoinEntrySpotCall {
|
|
|
231
233
|
coordinator;
|
|
232
234
|
request;
|
|
233
235
|
messageSerializers;
|
|
234
|
-
timeoutMs =
|
|
236
|
+
timeoutMs = DEFAULT_ACTOR_JOIN_TIMEOUT_MS;
|
|
235
237
|
deferred = false;
|
|
236
238
|
turn = (0, execution_1.captureZLinkSpotSerialTurn)();
|
|
237
239
|
constructor(state, actor, coordinator, request, messageSerializers) {
|
|
@@ -271,7 +273,7 @@ class DefaultZLinkActorJoinEntrySpotCall {
|
|
|
271
273
|
discarded = true;
|
|
272
274
|
this.state.endDeferredJoin();
|
|
273
275
|
try {
|
|
274
|
-
await this.coordinator.abortDeferredJoin?.(this.actor, this.state
|
|
276
|
+
await this.coordinator.abortDeferredJoin?.(this.actor, this.state);
|
|
275
277
|
}
|
|
276
278
|
finally {
|
|
277
279
|
deadline.close();
|
|
@@ -286,7 +288,7 @@ class DefaultZLinkActorJoinEntrySpotCall {
|
|
|
286
288
|
prepared = true;
|
|
287
289
|
this.state.endDeferredJoin();
|
|
288
290
|
try {
|
|
289
|
-
this.coordinator.beginDeferredJoin?.(this.actor, this.state
|
|
291
|
+
this.coordinator.beginDeferredJoin?.(this.actor, this.state);
|
|
290
292
|
pendingJoin = this.coordinator.joinEntrySpot(this.actor, this.state, undefined, requestMessage, remainingJoinTimeout(deadline.atMs), deadline.signal, operationId);
|
|
291
293
|
if (this.turn === undefined) {
|
|
292
294
|
await pendingJoin.catch(() => undefined);
|
|
@@ -311,7 +313,7 @@ class DefaultZLinkActorJoinEntrySpotCall {
|
|
|
311
313
|
catch (error) {
|
|
312
314
|
this.state.endDeferredJoin();
|
|
313
315
|
await this.coordinator
|
|
314
|
-
.abortDeferredJoin?.(this.actor, this.state
|
|
316
|
+
.abortDeferredJoin?.(this.actor, this.state)
|
|
315
317
|
.catch(() => undefined);
|
|
316
318
|
await notifyJoinFailure(this.actor, operationId, error, this.coordinator);
|
|
317
319
|
return;
|
|
@@ -375,8 +377,8 @@ function encodeJoinRequest(request, serializers) {
|
|
|
375
377
|
}
|
|
376
378
|
function validateJoinTimeout(timeoutMs) {
|
|
377
379
|
const rounded = Math.ceil(timeoutMs);
|
|
378
|
-
if (!Number.isFinite(timeoutMs) || rounded < 1 || rounded >
|
|
379
|
-
throw new configuration_1.ZLinkConfigurationException(
|
|
380
|
+
if (!Number.isFinite(timeoutMs) || rounded < 1 || rounded > MAX_ACTOR_JOIN_TIMEOUT_MS) {
|
|
381
|
+
throw new configuration_1.ZLinkConfigurationException(`Actor join timeout must be a finite value from 1 through ${MAX_ACTOR_JOIN_TIMEOUT_MS} milliseconds.`);
|
|
380
382
|
}
|
|
381
383
|
return rounded;
|
|
382
384
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { ActorRef, RoutingId } from '../../contracts';
|
|
1
|
+
import { type ActorRef, type RoutingId } from '../../contracts';
|
|
3
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
4
3
|
import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
|
|
4
|
+
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
5
5
|
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
6
|
+
import { type ZLinkActorMessageFollowContext, type ZLinkActorMessageFollowOwnerFence } from './actor-message-follow-context';
|
|
6
7
|
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
7
8
|
import type { ZLinkRemoteBoundSessionTarget } from './actor-runtime-state';
|
|
8
|
-
|
|
9
|
-
export declare const DEFAULT_MESSAGE_FOLLOW_DURATION_MS = 30000;
|
|
9
|
+
export declare const DEFAULT_MESSAGE_FOLLOW_DURATION_MS: number;
|
|
10
10
|
export interface ZLinkActorHandoffPacket {
|
|
11
11
|
readonly index: number;
|
|
12
12
|
readonly header: string;
|
|
@@ -115,14 +115,14 @@ export declare class ZLinkActorHandoffCoordinator {
|
|
|
115
115
|
private readonly replyRoutes;
|
|
116
116
|
constructor(options: ZLinkActorHandoffCoordinatorOptions);
|
|
117
117
|
begin(actorId: string, oldGeneration: bigint): void;
|
|
118
|
-
beginProvisional(actorId: string,
|
|
118
|
+
beginProvisional(actorId: string, oldGeneration: bigint): void;
|
|
119
119
|
private startHandoff;
|
|
120
120
|
isActive(actorId: string): boolean;
|
|
121
121
|
isProvisional(actorId: string): boolean;
|
|
122
|
-
promoteProvisional(actorId: string
|
|
122
|
+
promoteProvisional(actorId: string): void;
|
|
123
123
|
sealConnectionBoundIngress(actorId: string): void;
|
|
124
124
|
activeSourceOwner(actorId: string): ZLinkActorMessageFollowOwnerFence | undefined;
|
|
125
|
-
releaseDeferred(actorId: string,
|
|
125
|
+
releaseDeferred(actorId: string, dispatch?: ZLinkActorHandoffDispatch, admission?: ZLinkActorHandoffReplayAdmission): Promise<void>;
|
|
126
126
|
releaseCanceled(actorId: string, dispatch: ZLinkActorHandoffDispatch, admission?: ZLinkActorHandoffReplayAdmission): Promise<void>;
|
|
127
127
|
private admitHandoffPrefix;
|
|
128
128
|
private admitPendingPrefix;
|
|
@@ -134,6 +134,12 @@ export declare class ZLinkActorHandoffCoordinator {
|
|
|
134
134
|
private replayReleasedBacklog;
|
|
135
135
|
private replayReleasedPending;
|
|
136
136
|
private failReleasedPending;
|
|
137
|
+
/**
|
|
138
|
+
* Expired-owner terminal of a relocation (spec 28 §4.4): every pending
|
|
139
|
+
* record without a terminal fails once with `reason`. The handoff stays
|
|
140
|
+
* active, so the source never dispatches the Actor again.
|
|
141
|
+
*/
|
|
142
|
+
failPending(actorId: string, reason: unknown): void;
|
|
137
143
|
cancel(actorId: string): void;
|
|
138
144
|
capture(actorId: string, parts: readonly Message[], returnResponse?: boolean, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, deadlineUnixMs?: number, messageFollowOrigin?: ZLinkMessageFollowOrigin, provisionalReplay?: ZLinkActorHandoffDispatch): Promise<unknown> | undefined;
|
|
139
145
|
snapshot(actorId: string): readonly ZLinkActorHandoffPacket[];
|
|
@@ -3,18 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZLinkActorHandoffCoordinator = exports.DEFAULT_MESSAGE_FOLLOW_DURATION_MS = void 0;
|
|
4
4
|
exports.decodeHandoffPacket = decodeHandoffPacket;
|
|
5
5
|
exports.replayActorHandoffBacklog = replayActorHandoffBacklog;
|
|
6
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
7
|
-
const runtime_message_1 = require("../backend/runtime-message");
|
|
8
6
|
const contracts_1 = require("../../contracts");
|
|
7
|
+
const Options_1 = require("../../contracts/Locations/Options");
|
|
8
|
+
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
9
|
+
const runtime_message_1 = require("../backend/runtime-message");
|
|
9
10
|
const message_follow_suppression_registry_1 = require("../foundation/message-follow-suppression-registry");
|
|
11
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
10
12
|
const routing_id_1 = require("../routing-id");
|
|
11
|
-
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
12
13
|
const protocol_1 = require("../streams/protocol");
|
|
13
|
-
const actor_routed_json_request_1 = require("./actor-routed-json-request");
|
|
14
|
-
const actor_packet_relay_wire_1 = require("./actor-packet-relay-wire");
|
|
15
14
|
const actor_message_follow_context_1 = require("./actor-message-follow-context");
|
|
16
|
-
|
|
17
|
-
const
|
|
15
|
+
const actor_packet_relay_wire_1 = require("./actor-packet-relay-wire");
|
|
16
|
+
const actor_routed_json_request_1 = require("./actor-routed-json-request");
|
|
17
|
+
exports.DEFAULT_MESSAGE_FOLLOW_DURATION_MS = Options_1.zlinkDefaultLocationOptions.messageFollowDurationMs;
|
|
18
18
|
const RELOCATION_REPLY_RETENTION_MS = 24 * 60 * 60 * 1_000;
|
|
19
19
|
function requireExactTargetOwnerFence(actorId, fence) {
|
|
20
20
|
if (fence === undefined) {
|
|
@@ -50,12 +50,12 @@ class ZLinkActorHandoffCoordinator {
|
|
|
50
50
|
options.messageFollowDurationMs ?? exports.DEFAULT_MESSAGE_FOLLOW_DURATION_MS;
|
|
51
51
|
}
|
|
52
52
|
begin(actorId, oldGeneration) {
|
|
53
|
-
this.startHandoff(actorId, oldGeneration,
|
|
53
|
+
this.startHandoff(actorId, oldGeneration, 'relocating');
|
|
54
54
|
}
|
|
55
|
-
beginProvisional(actorId,
|
|
56
|
-
this.startHandoff(actorId, oldGeneration,
|
|
55
|
+
beginProvisional(actorId, oldGeneration) {
|
|
56
|
+
this.startHandoff(actorId, oldGeneration, 'provisional');
|
|
57
57
|
}
|
|
58
|
-
startHandoff(actorId, oldGeneration,
|
|
58
|
+
startHandoff(actorId, oldGeneration, phase) {
|
|
59
59
|
if (this.active.has(actorId)) {
|
|
60
60
|
throw new Error(`Actor '${actorId}' already has an active packet handoff.`);
|
|
61
61
|
}
|
|
@@ -98,8 +98,8 @@ class ZLinkActorHandoffCoordinator {
|
|
|
98
98
|
oldNodeRidHex: sourceEvidence.nodeRidHex,
|
|
99
99
|
sourceEvidence,
|
|
100
100
|
sourceOwner,
|
|
101
|
-
phase
|
|
102
|
-
|
|
101
|
+
phase,
|
|
102
|
+
deferredJoin: phase === 'provisional',
|
|
103
103
|
connectionBoundSealed: false,
|
|
104
104
|
pending: [],
|
|
105
105
|
nextIndex: 0,
|
|
@@ -113,14 +113,11 @@ class ZLinkActorHandoffCoordinator {
|
|
|
113
113
|
isProvisional(actorId) {
|
|
114
114
|
return this.active.get(actorId)?.phase === 'provisional';
|
|
115
115
|
}
|
|
116
|
-
promoteProvisional(actorId
|
|
116
|
+
promoteProvisional(actorId) {
|
|
117
117
|
const handoff = this.active.get(actorId);
|
|
118
|
-
if (handoff
|
|
118
|
+
if (handoff?.phase !== 'provisional') {
|
|
119
119
|
throw new Error(`Actor '${actorId}' does not have a provisional packet handoff.`);
|
|
120
120
|
}
|
|
121
|
-
if (handoff.phase !== 'provisional' || handoff.operationId !== operationId) {
|
|
122
|
-
throw new Error(`Actor '${actorId}' packet handoff belongs to another operation.`);
|
|
123
|
-
}
|
|
124
121
|
handoff.phase = 'relocating';
|
|
125
122
|
}
|
|
126
123
|
sealConnectionBoundIngress(actorId) {
|
|
@@ -131,12 +128,12 @@ class ZLinkActorHandoffCoordinator {
|
|
|
131
128
|
activeSourceOwner(actorId) {
|
|
132
129
|
return this.active.get(actorId)?.sourceOwner;
|
|
133
130
|
}
|
|
134
|
-
async releaseDeferred(actorId,
|
|
131
|
+
async releaseDeferred(actorId, dispatch, admission) {
|
|
135
132
|
const handoff = this.active.get(actorId);
|
|
136
133
|
if (handoff === undefined)
|
|
137
134
|
return;
|
|
138
|
-
if (handoff.
|
|
139
|
-
throw new Error(`Actor '${actorId}' packet handoff
|
|
135
|
+
if (!handoff.deferredJoin) {
|
|
136
|
+
throw new Error(`Actor '${actorId}' packet handoff was not started by a deferred Join.`);
|
|
140
137
|
}
|
|
141
138
|
await this.releaseHandoff(actorId, handoff, dispatch ?? handoff.replay, admission);
|
|
142
139
|
}
|
|
@@ -153,12 +150,12 @@ class ZLinkActorHandoffCoordinator {
|
|
|
153
150
|
*
|
|
154
151
|
* @internal
|
|
155
152
|
*/
|
|
156
|
-
admitDeferredPrefix(actorId,
|
|
153
|
+
admitDeferredPrefix(actorId, queue, preparation, start = Promise.resolve()) {
|
|
157
154
|
const handoff = this.active.get(actorId);
|
|
158
155
|
if (handoff === undefined)
|
|
159
156
|
return { terminal: Promise.resolve() };
|
|
160
|
-
if (handoff.
|
|
161
|
-
throw new Error(`Actor '${actorId}' packet handoff
|
|
157
|
+
if (!handoff.deferredJoin) {
|
|
158
|
+
throw new Error(`Actor '${actorId}' packet handoff was not started by a deferred Join.`);
|
|
162
159
|
}
|
|
163
160
|
return this.admitHandoffPrefix(actorId, handoff, queue, preparation, start);
|
|
164
161
|
}
|
|
@@ -396,6 +393,20 @@ class ZLinkActorHandoffCoordinator {
|
|
|
396
393
|
}
|
|
397
394
|
pending.reject?.(error);
|
|
398
395
|
}
|
|
396
|
+
/**
|
|
397
|
+
* Expired-owner terminal of a relocation (spec 28 §4.4): every pending
|
|
398
|
+
* record without a terminal fails once with `reason`. The handoff stays
|
|
399
|
+
* active, so the source never dispatches the Actor again.
|
|
400
|
+
*/
|
|
401
|
+
failPending(actorId, reason) {
|
|
402
|
+
const handoff = this.active.get(actorId);
|
|
403
|
+
if (handoff === undefined)
|
|
404
|
+
return;
|
|
405
|
+
for (const pending of handoff.pending.splice(0))
|
|
406
|
+
this.failReleasedPending(pending, reason);
|
|
407
|
+
handoff.snapshotIndex = -1;
|
|
408
|
+
handoff.pendingBytes = 0;
|
|
409
|
+
}
|
|
399
410
|
cancel(actorId) {
|
|
400
411
|
const handoff = this.active.get(actorId);
|
|
401
412
|
if (handoff === undefined)
|
|
@@ -929,7 +940,7 @@ class ZLinkActorHandoffCoordinator {
|
|
|
929
940
|
return duplicate.result;
|
|
930
941
|
}
|
|
931
942
|
const bytes = packetBytes(packet);
|
|
932
|
-
if (context.hopCount >=
|
|
943
|
+
if (context.hopCount >= actor_message_follow_context_1.ZLINK_MESSAGE_FOLLOW_MAX_HOPS) {
|
|
933
944
|
this.options.onMarker?.('message_follow_rejected', actorId);
|
|
934
945
|
return Promise.reject(actorLocationStale(actorId));
|
|
935
946
|
}
|
|
@@ -5,6 +5,7 @@ exports.actorJoinIdentity = actorJoinIdentity;
|
|
|
5
5
|
exports.createActorJoinRequest = createActorJoinRequest;
|
|
6
6
|
exports.createActorMembership = createActorMembership;
|
|
7
7
|
const configuration_1 = require("../configuration");
|
|
8
|
+
const diagnostic_text_1 = require("../diagnostics/diagnostic-text");
|
|
8
9
|
exports.ZLINK_ACTOR_LIFECYCLE_SNAPSHOT = Symbol('zlink.actor.lifecycle-snapshot');
|
|
9
10
|
/**
|
|
10
11
|
* Identity an admission callback observes. Join admission decides on the Actor's
|
|
@@ -37,7 +38,7 @@ function lifecycleSource(actor) {
|
|
|
37
38
|
: undefined;
|
|
38
39
|
// A caller can hand in a value that carries no Framework context at all, so the
|
|
39
40
|
// failure path reports the configuration error instead of dereferencing it.
|
|
40
|
-
const actorId = context?.actorId
|
|
41
|
+
const actorId = (0, diagnostic_text_1.diagnosticTextOrAbsent)(context?.actorId);
|
|
41
42
|
const snapshot = context?.[exports.ZLINK_ACTOR_LIFECYCLE_SNAPSHOT];
|
|
42
43
|
const source = snapshot === undefined ? undefined : snapshot.call(context);
|
|
43
44
|
if (source === undefined) {
|