@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,41 +1,57 @@
|
|
|
1
|
+
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
1
2
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
type ActorRef,
|
|
4
|
+
type RoutingId,
|
|
5
|
+
type ZLinkActorClient,
|
|
6
|
+
type ZLinkActorRequestCall,
|
|
7
|
+
type ZLinkActorSendCall,
|
|
8
|
+
type ZLinkMessageSerializer,
|
|
9
|
+
ZLinkFrameworkErrorKind,
|
|
10
|
+
ZLinkFrameworkException,
|
|
11
|
+
ZLinkSpotKind
|
|
12
|
+
} from '../../contracts';
|
|
13
|
+
|
|
14
|
+
import { ZLINK_MAX_ACTOR_ID_BYTES } from '../../contracts/Common/CoreTypes';
|
|
15
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
16
|
+
import { throwIfAborted } from '../abort';
|
|
17
|
+
import {
|
|
18
|
+
type ZLinkBackendActorRef,
|
|
19
|
+
type ZLinkBackendMeshNode,
|
|
20
|
+
type ZLinkMeshCompletionTable,
|
|
21
|
+
closeMeshCompletion
|
|
22
|
+
} from '../backend';
|
|
23
|
+
|
|
6
24
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
7
25
|
import {
|
|
26
|
+
isZLinkBackendResultError,
|
|
8
27
|
RequestResult,
|
|
9
28
|
SubmitResult,
|
|
10
|
-
isZLinkBackendResultError,
|
|
11
29
|
ZLINK_BACKEND_SEND_NONE
|
|
12
30
|
} from '../backend/runtime-values';
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} from '
|
|
21
|
-
import { ZLinkSpotKind } from '../../contracts';
|
|
22
|
-
import { ZLinkFrameworkException, ZLinkFrameworkErrorKind } from '../../contracts';
|
|
31
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
32
|
+
import {
|
|
33
|
+
captureZLinkSpotSerialTurn,
|
|
34
|
+
currentZLinkSpotSerialSourceId,
|
|
35
|
+
requireZLinkYieldTurn,
|
|
36
|
+
type ZLinkSpotSerialTurn
|
|
37
|
+
} from '../execution';
|
|
38
|
+
import { remainingActorRequestTimeout, waitActorReply } from './actor-request-deadline';
|
|
23
39
|
import {
|
|
40
|
+
createInternalFrameworkException,
|
|
41
|
+
internalFrameworkErrorKind,
|
|
42
|
+
internalFrameworkErrorKindFromWireFailureCode,
|
|
43
|
+
ZLinkFrameworkInternalErrorKind
|
|
44
|
+
} from '../framework-errors-internal';
|
|
45
|
+
import type { ZLinkResolvedActorRoute, ZLinkStoreLocationResolvers } from '../locations';
|
|
46
|
+
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
47
|
+
import { decodeFrameworkPayloadMessage, encodeFrameworkPayload } from '../messaging/payload-codec';
|
|
48
|
+
import {
|
|
49
|
+
classifySubmitResult,
|
|
24
50
|
requireOneWayCompletion,
|
|
25
51
|
throwAlreadySubmitted,
|
|
26
52
|
ZLinkSubmitStatus,
|
|
27
53
|
type ZLinkSubmitResult
|
|
28
54
|
} from '../messaging/submission-result';
|
|
29
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
30
|
-
import type {
|
|
31
|
-
ZLinkBackendActorRef,
|
|
32
|
-
ZLinkBackendMeshNode,
|
|
33
|
-
ZLinkMeshCompletionTable
|
|
34
|
-
} from '../backend';
|
|
35
|
-
import { closeMeshCompletion } from '../backend';
|
|
36
|
-
import { awaitWithAbort, throwIfAborted } from '../abort';
|
|
37
|
-
import { encodeFrameworkPayload, decodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
38
|
-
import { resolveFrameworkPacketName } from '../messaging/packet-name';
|
|
39
55
|
import {
|
|
40
56
|
actorRequestDeadlineMetadata,
|
|
41
57
|
decodeStreamHeader,
|
|
@@ -45,11 +61,7 @@ import {
|
|
|
45
61
|
ZLinkStreamHeaderFlags,
|
|
46
62
|
ZLinkStreamMessageKind
|
|
47
63
|
} from '../streams/protocol';
|
|
48
|
-
import
|
|
49
|
-
import type { ZLinkResolvedActorRoute } from '../locations';
|
|
50
|
-
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
51
|
-
import { encodeRemoteActorPacketRelayPayload } from './actor-packet-relay-wire';
|
|
52
|
-
import { requestRoutedJsonReply } from './actor-routed-json-request';
|
|
64
|
+
import { currentZLinkActorExecution } from './actor-execution-context';
|
|
53
65
|
import {
|
|
54
66
|
attachActorMessageFollowContext,
|
|
55
67
|
createInitialActorMessageFollowContext,
|
|
@@ -57,13 +69,11 @@ import {
|
|
|
57
69
|
type ZLinkActorMessageFollowContext
|
|
58
70
|
} from './actor-message-follow-context';
|
|
59
71
|
import {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
} from '
|
|
65
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
66
|
-
import { currentZLinkActorExecution } from './actor-execution-context';
|
|
72
|
+
encodeRemoteActorPacketRelayPayload,
|
|
73
|
+
ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
|
|
74
|
+
} from './actor-packet-relay-wire';
|
|
75
|
+
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
76
|
+
import { requestRoutedJsonReply } from './actor-routed-json-request';
|
|
67
77
|
|
|
68
78
|
export interface ZLinkActorClientOptions {
|
|
69
79
|
readonly nodeProvider: (meshName: string) => ZLinkBackendMeshNode | undefined;
|
|
@@ -100,7 +110,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
100
110
|
sendToActor(actorId: string, message: unknown): ZLinkActorSendCall {
|
|
101
111
|
requireActorId(actorId);
|
|
102
112
|
return new DefaultZLinkActorSendCall(
|
|
103
|
-
(packetName, metadata
|
|
113
|
+
(packetName, metadata) => this.send(actorId, packetName, message, metadata),
|
|
104
114
|
message
|
|
105
115
|
);
|
|
106
116
|
}
|
|
@@ -122,11 +132,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
122
132
|
actorId: string,
|
|
123
133
|
explicitPacketName: string | undefined,
|
|
124
134
|
message: unknown,
|
|
125
|
-
metadata: ReadonlyMap<string, string
|
|
126
|
-
signal?: AbortSignal
|
|
135
|
+
metadata: ReadonlyMap<string, string>
|
|
127
136
|
): Promise<ZLinkSubmitResult> {
|
|
128
|
-
|
|
129
|
-
const route = await this.resolveActorRoute(actorId, signal);
|
|
137
|
+
const route = await this.resolveActorRoute(actorId);
|
|
130
138
|
const { meshName, actorRef: actor } = route;
|
|
131
139
|
this.throwIfKnownStale(meshName, actor);
|
|
132
140
|
const parts = this.createPacketParts(
|
|
@@ -140,9 +148,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
140
148
|
const routedActor = attachActorMessageFollowContext(actor, messageFollow);
|
|
141
149
|
try {
|
|
142
150
|
const submissionCopies =
|
|
143
|
-
(await this.options
|
|
144
|
-
.transportDeliveryGate?.()
|
|
145
|
-
?.waitBeforeSubmit(actorId, 'oneWay', signal)) ?? 1;
|
|
151
|
+
(await this.options.transportDeliveryGate?.()?.waitBeforeSubmit(actorId, 'oneWay')) ?? 1;
|
|
146
152
|
const handoff = this.options.handoffCapture?.(
|
|
147
153
|
meshName,
|
|
148
154
|
actor.actorId,
|
|
@@ -162,8 +168,8 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
162
168
|
);
|
|
163
169
|
if (duplicate !== undefined) submissions.push(duplicate);
|
|
164
170
|
}
|
|
165
|
-
await
|
|
166
|
-
return
|
|
171
|
+
await Promise.all(submissions);
|
|
172
|
+
return { status: ZLinkSubmitStatus.Submitted };
|
|
167
173
|
}
|
|
168
174
|
const node = this.requireNode(meshName);
|
|
169
175
|
if (
|
|
@@ -181,9 +187,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
181
187
|
returnResponse: false,
|
|
182
188
|
messageFollowContext: messageFollow
|
|
183
189
|
}),
|
|
184
|
-
{ packetName:
|
|
190
|
+
{ packetName: ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET }
|
|
185
191
|
);
|
|
186
|
-
return
|
|
192
|
+
return { status: ZLinkSubmitStatus.Submitted };
|
|
187
193
|
}
|
|
188
194
|
return await this.submitActorSend(meshName, toBackendActorRef(actor), parts);
|
|
189
195
|
} catch (error) {
|
|
@@ -214,7 +220,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
214
220
|
effectiveTimeoutMs === undefined ? undefined : performance.now() + effectiveTimeoutMs;
|
|
215
221
|
const deadlineUnixMs =
|
|
216
222
|
effectiveTimeoutMs === undefined ? undefined : Date.now() + effectiveTimeoutMs;
|
|
217
|
-
const route = await this.resolveActorRoute(actorId, signal);
|
|
223
|
+
const route = await this.resolveActorRoute(actorId, signal, deadlineMs);
|
|
218
224
|
if (
|
|
219
225
|
waitPolicy === 'async' &&
|
|
220
226
|
sourceSpotId !== undefined &&
|
|
@@ -248,10 +254,13 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
248
254
|
);
|
|
249
255
|
const routedActor = attachActorMessageFollowContext(actor, messageFollow);
|
|
250
256
|
try {
|
|
257
|
+
const delivery = this.options
|
|
258
|
+
.transportDeliveryGate?.()
|
|
259
|
+
?.waitBeforeSubmit(actorId, 'request', signal);
|
|
251
260
|
const submissionCopies =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
261
|
+
delivery === undefined
|
|
262
|
+
? 1
|
|
263
|
+
: ((await waitActorReply(delivery, actorId, deadlineMs, signal)) ?? 1);
|
|
255
264
|
const handoff = this.options.handoffCapture?.(
|
|
256
265
|
meshName,
|
|
257
266
|
actor.actorId,
|
|
@@ -273,9 +282,11 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
273
282
|
);
|
|
274
283
|
if (duplicate !== undefined) submissions.push(duplicate);
|
|
275
284
|
}
|
|
276
|
-
const replies = await
|
|
285
|
+
const replies = await waitActorReply<unknown[]>(
|
|
277
286
|
Promise.all(submissions),
|
|
278
|
-
|
|
287
|
+
actorId,
|
|
288
|
+
deadlineMs,
|
|
289
|
+
signal
|
|
279
290
|
);
|
|
280
291
|
return replies[0] as TReply;
|
|
281
292
|
}
|
|
@@ -302,7 +313,8 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
302
313
|
|
|
303
314
|
private async resolveActorRoute(
|
|
304
315
|
actorId: string,
|
|
305
|
-
signal?: AbortSignal
|
|
316
|
+
signal?: AbortSignal,
|
|
317
|
+
deadlineMs?: number
|
|
306
318
|
): Promise<ZLinkResolvedActorRoute> {
|
|
307
319
|
const resolver = this.options.locationResolver();
|
|
308
320
|
if (resolver === undefined) {
|
|
@@ -311,7 +323,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
311
323
|
'Actor direct messaging requires a Location Store.'
|
|
312
324
|
);
|
|
313
325
|
}
|
|
314
|
-
const resolution = await resolver.resolveDirectActorRoute(actorId, signal);
|
|
326
|
+
const resolution = await resolver.resolveDirectActorRoute(actorId, signal, deadlineMs);
|
|
315
327
|
if (resolution.kind === 'missing') {
|
|
316
328
|
throw createInternalFrameworkException(
|
|
317
329
|
ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
|
|
@@ -390,7 +402,7 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
390
402
|
): Promise<ZLinkSubmitResult> {
|
|
391
403
|
const node = this.requireNode(meshName);
|
|
392
404
|
try {
|
|
393
|
-
return
|
|
405
|
+
return classifySubmitResult(
|
|
394
406
|
await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
395
407
|
flags: ZLINK_BACKEND_SEND_NONE
|
|
396
408
|
}),
|
|
@@ -398,11 +410,9 @@ export class DefaultZLinkActorClient implements ZLinkActorClient {
|
|
|
398
410
|
);
|
|
399
411
|
} catch (error) {
|
|
400
412
|
if (isZLinkBackendResultError(error)) {
|
|
401
|
-
return
|
|
413
|
+
return classifySubmitResult(error.result, 'Actor send', error.phase);
|
|
402
414
|
}
|
|
403
|
-
throw
|
|
404
|
-
? mapRequestError(error, 'Actor send')
|
|
405
|
-
: mapSubmitError(error, 'Actor send');
|
|
415
|
+
throw mapSubmitError(error, 'Actor send');
|
|
406
416
|
}
|
|
407
417
|
}
|
|
408
418
|
|
|
@@ -560,53 +570,12 @@ function remoteRelayErrorKind(value: unknown): ZLinkFrameworkInternalErrorKind {
|
|
|
560
570
|
: ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
561
571
|
}
|
|
562
572
|
|
|
563
|
-
function remainingActorRequestTimeout(
|
|
564
|
-
actorId: string,
|
|
565
|
-
deadlineMs: number | undefined
|
|
566
|
-
): number | undefined {
|
|
567
|
-
if (deadlineMs === undefined) return undefined;
|
|
568
|
-
const remaining = deadlineMs - performance.now();
|
|
569
|
-
if (remaining <= 0) {
|
|
570
|
-
throw createInternalFrameworkException(
|
|
571
|
-
ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
|
|
572
|
-
`Actor request '${actorId}' exceeded its deadline before submission.`
|
|
573
|
-
);
|
|
574
|
-
}
|
|
575
|
-
return Math.max(1, Math.ceil(remaining));
|
|
576
|
-
}
|
|
577
|
-
|
|
578
573
|
function requireActorId(actorId: string): void {
|
|
579
574
|
const byteLength = Buffer.byteLength(actorId, 'utf8');
|
|
580
|
-
if (byteLength < 1 || byteLength >
|
|
581
|
-
throw new ZLinkConfigurationException(
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
async function waitHandoffReply<TReply>(
|
|
586
|
-
reply: Promise<unknown>,
|
|
587
|
-
timeoutMs: number | undefined
|
|
588
|
-
): Promise<TReply> {
|
|
589
|
-
if (timeoutMs === undefined) return (await reply) as TReply;
|
|
590
|
-
let deadline: ReturnType<typeof setTimeout> | undefined;
|
|
591
|
-
try {
|
|
592
|
-
return await Promise.race([
|
|
593
|
-
reply as Promise<TReply>,
|
|
594
|
-
new Promise<TReply>((_resolve, reject) => {
|
|
595
|
-
deadline = setTimeout(
|
|
596
|
-
() =>
|
|
597
|
-
reject(
|
|
598
|
-
createInternalFrameworkException(
|
|
599
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
600
|
-
'Actor handoff request timed out.',
|
|
601
|
-
true
|
|
602
|
-
)
|
|
603
|
-
),
|
|
604
|
-
timeoutMs
|
|
605
|
-
);
|
|
606
|
-
})
|
|
607
|
-
]);
|
|
608
|
-
} finally {
|
|
609
|
-
if (deadline !== undefined) clearTimeout(deadline);
|
|
575
|
+
if (byteLength < 1 || byteLength > ZLINK_MAX_ACTOR_ID_BYTES) {
|
|
576
|
+
throw new ZLinkConfigurationException(
|
|
577
|
+
`Actor ID must contain 1..${ZLINK_MAX_ACTOR_ID_BYTES} UTF-8 bytes.`
|
|
578
|
+
);
|
|
610
579
|
}
|
|
611
580
|
}
|
|
612
581
|
|
|
@@ -689,8 +658,7 @@ class DefaultZLinkActorSendCall implements ZLinkActorSendCall {
|
|
|
689
658
|
constructor(
|
|
690
659
|
private readonly submitter: (
|
|
691
660
|
packetName: string | undefined,
|
|
692
|
-
metadata: ReadonlyMap<string, string
|
|
693
|
-
signal?: AbortSignal
|
|
661
|
+
metadata: ReadonlyMap<string, string>
|
|
694
662
|
) => Promise<ZLinkSubmitResult>,
|
|
695
663
|
private readonly message: unknown
|
|
696
664
|
) {}
|
|
@@ -705,13 +673,12 @@ class DefaultZLinkActorSendCall implements ZLinkActorSendCall {
|
|
|
705
673
|
return this;
|
|
706
674
|
}
|
|
707
675
|
|
|
708
|
-
async submit(
|
|
676
|
+
async submit(): Promise<void> {
|
|
709
677
|
ensureSingleSubmit(this.executed);
|
|
710
678
|
this.executed = true;
|
|
711
679
|
const result = await this.submitter(
|
|
712
680
|
this.packet ?? resolveFrameworkPacketName(this.message, undefined, 'Actor'),
|
|
713
|
-
this.selectedMetadata
|
|
714
|
-
signal
|
|
681
|
+
this.selectedMetadata
|
|
715
682
|
);
|
|
716
683
|
requireOneWayCompletion(
|
|
717
684
|
result,
|
|
@@ -861,7 +828,7 @@ function decodeActorReplyPayload<TReply>(
|
|
|
861
828
|
payload,
|
|
862
829
|
serializers,
|
|
863
830
|
undefined,
|
|
864
|
-
|
|
831
|
+
ZlinkStreamContentType.Json,
|
|
865
832
|
packetName,
|
|
866
833
|
'reply'
|
|
867
834
|
);
|
|
@@ -871,29 +838,6 @@ function mapSubmitError(error: unknown, operationName: string): Error {
|
|
|
871
838
|
if (error instanceof ZLinkFrameworkException) {
|
|
872
839
|
return error;
|
|
873
840
|
}
|
|
874
|
-
if (isZLinkBackendResultError(error)) {
|
|
875
|
-
switch (error.result) {
|
|
876
|
-
case SubmitResult.NotConnected:
|
|
877
|
-
return routeNotConnected(
|
|
878
|
-
`${operationName} failed because the target route is not connected.`,
|
|
879
|
-
error
|
|
880
|
-
);
|
|
881
|
-
case SubmitResult.NotFound:
|
|
882
|
-
return createInternalFrameworkException(
|
|
883
|
-
ZLinkFrameworkInternalErrorKind.ActorRouteNotFound,
|
|
884
|
-
`${operationName} failed because the actor route was not found.`,
|
|
885
|
-
false,
|
|
886
|
-
error
|
|
887
|
-
);
|
|
888
|
-
default:
|
|
889
|
-
return createInternalFrameworkException(
|
|
890
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
891
|
-
`${operationName} failed with submit result ${error.result}.`,
|
|
892
|
-
false,
|
|
893
|
-
error
|
|
894
|
-
);
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
841
|
return createInternalFrameworkException(
|
|
898
842
|
ZLinkFrameworkInternalErrorKind.RouteNotConnected,
|
|
899
843
|
`${operationName} failed before a reply was received.`,
|
|
@@ -902,79 +846,6 @@ function mapSubmitError(error: unknown, operationName: string): Error {
|
|
|
902
846
|
);
|
|
903
847
|
}
|
|
904
848
|
|
|
905
|
-
function mapSubmitResult(result: number, operationName: string): ZLinkSubmitResult {
|
|
906
|
-
switch (result) {
|
|
907
|
-
case SubmitResult.Ok:
|
|
908
|
-
return submitted();
|
|
909
|
-
case SubmitResult.Backpressured:
|
|
910
|
-
case SubmitResult.NotAdmitted:
|
|
911
|
-
return { status: ZLinkSubmitStatus.Backpressured };
|
|
912
|
-
case SubmitResult.NotConnected:
|
|
913
|
-
return { status: ZLinkSubmitStatus.RouteNotConnected };
|
|
914
|
-
case SubmitResult.NotFound:
|
|
915
|
-
return { status: ZLinkSubmitStatus.TargetNotFound };
|
|
916
|
-
case SubmitResult.Terminated:
|
|
917
|
-
return { status: ZLinkSubmitStatus.Shutdown };
|
|
918
|
-
default:
|
|
919
|
-
throw createInternalFrameworkException(
|
|
920
|
-
ZLinkFrameworkInternalErrorKind.RequestFailed,
|
|
921
|
-
`${operationName} failed with submit result ${result}.`
|
|
922
|
-
);
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
function submitted(): ZLinkSubmitResult {
|
|
927
|
-
return { status: ZLinkSubmitStatus.Submitted };
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
// Ownership-aware Actor remote-reply translator (spec 32:81-118, 99-103):
|
|
931
|
-
// the reply comes from a remote target, so a fine framework failure code
|
|
932
|
-
// refines the coarse terminal, and a terminal-only conflict/busy is the
|
|
933
|
-
// target's owner/queue state (retryable stale/Unavailable), never a
|
|
934
|
-
// source-owned queue exhaustion. Backpressure never appears on this reply
|
|
935
|
-
// path. Internal kinds are preserved so the stale-actor re-resolve retry
|
|
936
|
-
// (isStaleActorError) keeps working.
|
|
937
|
-
function actorFailureCodeKind(failureErrno: number): ZLinkFrameworkInternalErrorKind | undefined {
|
|
938
|
-
switch (failureErrno) {
|
|
939
|
-
case 3:
|
|
940
|
-
return ZLinkFrameworkInternalErrorKind.ActorAlreadyExists;
|
|
941
|
-
case 4:
|
|
942
|
-
return ZLinkFrameworkInternalErrorKind.ActorTypeMismatch;
|
|
943
|
-
case 7:
|
|
944
|
-
return ZLinkFrameworkInternalErrorKind.SpotTypeMismatch;
|
|
945
|
-
case 8:
|
|
946
|
-
return ZLinkFrameworkInternalErrorKind.ActorSessionNotBound;
|
|
947
|
-
case 9:
|
|
948
|
-
case 14:
|
|
949
|
-
return ZLinkFrameworkInternalErrorKind.RequestTargetNotFound;
|
|
950
|
-
case 12:
|
|
951
|
-
case 16:
|
|
952
|
-
return ZLinkFrameworkInternalErrorKind.RequestProtocolError;
|
|
953
|
-
// routeNotConnected(13) and a remote worker queue full(18) are Unavailable.
|
|
954
|
-
case 13:
|
|
955
|
-
case 18:
|
|
956
|
-
return ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
957
|
-
case 15:
|
|
958
|
-
return ZLinkFrameworkInternalErrorKind.RequestRejected;
|
|
959
|
-
case 19:
|
|
960
|
-
return ZLinkFrameworkInternalErrorKind.WorkerTimedOut;
|
|
961
|
-
case 17:
|
|
962
|
-
return ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
963
|
-
case 20:
|
|
964
|
-
return ZLinkFrameworkInternalErrorKind.WorkerFailed;
|
|
965
|
-
case 21:
|
|
966
|
-
return ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
967
|
-
case 33:
|
|
968
|
-
return ZLinkFrameworkInternalErrorKind.ActorGenerationStale;
|
|
969
|
-
case 34:
|
|
970
|
-
return ZLinkFrameworkInternalErrorKind.ActorMoving;
|
|
971
|
-
case 35:
|
|
972
|
-
return ZLinkFrameworkInternalErrorKind.RelocationDataLost;
|
|
973
|
-
default:
|
|
974
|
-
return undefined;
|
|
975
|
-
}
|
|
976
|
-
}
|
|
977
|
-
|
|
978
849
|
function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
|
|
979
850
|
switch (result) {
|
|
980
851
|
case RequestResult.TimedOut:
|
|
@@ -990,7 +861,7 @@ function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
|
|
|
990
861
|
case RequestResult.NotConnected:
|
|
991
862
|
return ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
992
863
|
// A terminal-only conflict/busy on a remote actor reply is the target's
|
|
993
|
-
// stale/owner state:
|
|
864
|
+
// stale/owner state: ActorLocationStale (Unavailable).
|
|
994
865
|
case RequestResult.Conflict:
|
|
995
866
|
case RequestResult.Busy:
|
|
996
867
|
return ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
@@ -999,8 +870,11 @@ function actorTerminalKind(result: number): ZLinkFrameworkInternalErrorKind {
|
|
|
999
870
|
}
|
|
1000
871
|
}
|
|
1001
872
|
|
|
873
|
+
// The shared table preserves Actor fine kinds; without a recognized fine code,
|
|
874
|
+
// the remote owner/queue terminal supplies the classification.
|
|
1002
875
|
function mapRequestResult(result: number, failureErrno: number, operationName: string): Error {
|
|
1003
|
-
const kind =
|
|
876
|
+
const kind =
|
|
877
|
+
internalFrameworkErrorKindFromWireFailureCode(failureErrno) ?? actorTerminalKind(result);
|
|
1004
878
|
return createInternalFrameworkException(
|
|
1005
879
|
kind,
|
|
1006
880
|
`${operationName} failed with request result ${result}` +
|
|
@@ -1008,13 +882,6 @@ function mapRequestResult(result: number, failureErrno: number, operationName: s
|
|
|
1008
882
|
);
|
|
1009
883
|
}
|
|
1010
884
|
|
|
1011
|
-
function mapRequestError(
|
|
1012
|
-
error: { readonly result: number; readonly failureErrno?: number },
|
|
1013
|
-
operationName: string
|
|
1014
|
-
): Error {
|
|
1015
|
-
return mapRequestResult(error.result, error.failureErrno ?? 0, operationName);
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
885
|
function routeNotConnected(message: string, cause?: unknown): ZLinkFrameworkException {
|
|
1019
886
|
return createInternalFrameworkException(
|
|
1020
887
|
ZLinkFrameworkInternalErrorKind.RouteNotConnected,
|
|
@@ -1,45 +1,51 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
type RoutingId,
|
|
3
|
+
type SpotId,
|
|
4
|
+
type ZLinkActor,
|
|
5
|
+
type ZLinkActorContext,
|
|
6
|
+
type ZLinkActorJoinCompletion,
|
|
7
|
+
type ZLinkActorJoinEntrySpotCall,
|
|
8
|
+
type ZLinkActorJoinSpotCall,
|
|
9
|
+
type ZLinkBoundSession,
|
|
10
|
+
type ZLinkBoundSessionSendCall,
|
|
11
|
+
ZLinkEncodedPayload,
|
|
12
|
+
ZLinkFrameworkException,
|
|
13
|
+
ZLinkMessage,
|
|
14
|
+
type ZLinkMessageSerializer
|
|
15
15
|
} from '../../contracts';
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
import type { Message } from '../../contracts/Common/Message';
|
|
18
|
-
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
19
|
-
import { type ZLinkMessageSerializer } from '../../contracts';
|
|
20
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
21
18
|
import {
|
|
22
|
-
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
|
|
23
19
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
24
20
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
25
21
|
ZLinkDispatchErrorSurface,
|
|
26
|
-
ZLinkDispatchMessageKind
|
|
22
|
+
ZLinkDispatchMessageKind,
|
|
23
|
+
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome
|
|
27
24
|
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
25
|
+
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
26
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
27
|
+
import { dispatchErrorDetails } from '../diagnostics/dispatch-error-details';
|
|
28
|
+
import { captureZLinkSpotSerialTurn } from '../execution';
|
|
29
|
+
import { createRandomOperationIdentity } from '../foundation/operation-identity';
|
|
30
|
+
import {
|
|
31
|
+
ZLinkFrameworkInternalErrorKind,
|
|
32
|
+
createInternalFrameworkException
|
|
33
|
+
} from '../framework-errors-internal';
|
|
28
34
|
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
29
|
-
import {
|
|
30
|
-
import type {
|
|
31
|
-
ZLinkActorBoundSessionFactory,
|
|
32
|
-
ZLinkActorJoinCoordinator
|
|
33
|
-
} from './actor-runtime-contracts';
|
|
34
|
-
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
35
|
+
import { deferActorJoin } from './actor-join-deferred-scope';
|
|
35
36
|
import {
|
|
36
37
|
ZLINK_ACTOR_LIFECYCLE_SNAPSHOT,
|
|
37
38
|
type ZLinkActorLifecycleSnapshotSource
|
|
38
39
|
} from './actor-lifecycle-snapshot';
|
|
39
|
-
import {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
import type {
|
|
41
|
+
ZLinkActorBoundSessionFactory,
|
|
42
|
+
ZLinkActorJoinCoordinator,
|
|
43
|
+
ZLinkActorManagerOptions
|
|
44
|
+
} from './actor-runtime-contracts';
|
|
45
|
+
import { ZLinkActorRuntimeState, toFrameworkActorRef } from './actor-runtime-state';
|
|
46
|
+
const DEFAULT_ACTOR_JOIN_TIMEOUT_MS = 5_000;
|
|
47
|
+
|
|
48
|
+
const MAX_ACTOR_JOIN_TIMEOUT_MS = 2_147_483_647;
|
|
43
49
|
|
|
44
50
|
export const ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME = Symbol('zlink.actor.join-entry-spot-runtime');
|
|
45
51
|
|
|
@@ -166,7 +172,7 @@ export class DefaultZLinkActorContext implements ZLinkActorContext {
|
|
|
166
172
|
}
|
|
167
173
|
|
|
168
174
|
class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
|
|
169
|
-
private timeoutMs =
|
|
175
|
+
private timeoutMs: number = DEFAULT_ACTOR_JOIN_TIMEOUT_MS;
|
|
170
176
|
private deferred = false;
|
|
171
177
|
private readonly turn = captureZLinkSpotSerialTurn();
|
|
172
178
|
|
|
@@ -305,7 +311,7 @@ class DefaultZLinkActorJoinSpotCall implements ZLinkActorJoinSpotCall {
|
|
|
305
311
|
}
|
|
306
312
|
|
|
307
313
|
class DefaultZLinkActorJoinEntrySpotCall implements ZLinkActorJoinEntrySpotCall {
|
|
308
|
-
private timeoutMs =
|
|
314
|
+
private timeoutMs: number = DEFAULT_ACTOR_JOIN_TIMEOUT_MS;
|
|
309
315
|
private deferred = false;
|
|
310
316
|
private readonly turn = captureZLinkSpotSerialTurn();
|
|
311
317
|
|
|
@@ -480,9 +486,9 @@ function encodeJoinRequest(
|
|
|
480
486
|
|
|
481
487
|
function validateJoinTimeout(timeoutMs: number): number {
|
|
482
488
|
const rounded = Math.ceil(timeoutMs);
|
|
483
|
-
if (!Number.isFinite(timeoutMs) || rounded < 1 || rounded >
|
|
489
|
+
if (!Number.isFinite(timeoutMs) || rounded < 1 || rounded > MAX_ACTOR_JOIN_TIMEOUT_MS) {
|
|
484
490
|
throw new ZLinkConfigurationException(
|
|
485
|
-
|
|
491
|
+
`Actor join timeout must be a finite value from 1 through ${MAX_ACTOR_JOIN_TIMEOUT_MS} milliseconds.`
|
|
486
492
|
);
|
|
487
493
|
}
|
|
488
494
|
return rounded;
|
|
@@ -1,45 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
createInternalFrameworkException,
|
|
4
|
-
internalFrameworkErrorKind
|
|
5
|
-
} from '../framework-errors-internal';
|
|
6
|
-
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
7
|
-
import type { ActorRef, RoutingId } from '../../contracts';
|
|
8
|
-
import { ZLinkFrameworkException } from '../../contracts';
|
|
1
|
+
import { type ActorRef, type RoutingId, ZLinkFrameworkException } from '../../contracts';
|
|
2
|
+
|
|
9
3
|
import type { Message } from '../../contracts/Common/Message';
|
|
10
|
-
import
|
|
4
|
+
import { zlinkDefaultLocationOptions } from '../../contracts/Locations/Options';
|
|
5
|
+
import { releaseApplicationJobPermitForDurableHandoff } from '../application-jobs/application-job-queue-scope';
|
|
6
|
+
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
11
7
|
import {
|
|
12
8
|
MessageFollowSuppressionRegistry,
|
|
13
9
|
type MessageFollowSuppressionFence
|
|
14
10
|
} from '../foundation/message-follow-suppression-registry';
|
|
15
|
-
import type {
|
|
11
|
+
import type { ZLinkMessageFollowOrigin } from '../foundation/service-runtime-contracts';
|
|
12
|
+
import {
|
|
13
|
+
createInternalFrameworkException,
|
|
14
|
+
internalFrameworkErrorKind,
|
|
15
|
+
ZLinkFrameworkInternalErrorKind
|
|
16
|
+
} from '../framework-errors-internal';
|
|
16
17
|
import { encodeRoutingIdStorageHex, routingIdsEqual } from '../routing-id';
|
|
17
|
-
import {
|
|
18
|
+
import type { ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
|
|
18
19
|
import { decodeActorRequestDeadlineUnixMs, decodeStreamHeader } from '../streams/protocol';
|
|
19
|
-
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
20
|
-
import { requestRoutedJsonReply } from './actor-routed-json-request';
|
|
21
|
-
import type { ZLinkRemoteBoundSessionTarget } from './actor-runtime-state';
|
|
22
|
-
import {
|
|
23
|
-
encodeMessageFollowRemoteActorPacketRelayPayload,
|
|
24
|
-
ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
|
|
25
|
-
} from './actor-packet-relay-wire';
|
|
26
20
|
import {
|
|
27
21
|
actorMessageFollowContext,
|
|
28
22
|
actorMessageFollowPayloadChecksum,
|
|
29
|
-
attachActorMessageFollowContext,
|
|
30
23
|
advanceActorMessageFollowContext,
|
|
24
|
+
attachActorMessageFollowContext,
|
|
31
25
|
createMessageFollowId,
|
|
32
26
|
messageFollowOwnerFenceKey,
|
|
33
27
|
messageFollowOwnerFencesEqual,
|
|
34
28
|
messageFollowOwnerNodeRid,
|
|
35
29
|
ownerFence,
|
|
36
30
|
verifyActorMessageFollowPayload,
|
|
31
|
+
ZLINK_MESSAGE_FOLLOW_MAX_HOPS,
|
|
37
32
|
type ZLinkActorMessageFollowContext,
|
|
38
33
|
type ZLinkActorMessageFollowOwnerFence
|
|
39
34
|
} from './actor-message-follow-context';
|
|
35
|
+
import {
|
|
36
|
+
encodeMessageFollowRemoteActorPacketRelayPayload,
|
|
37
|
+
ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET
|
|
38
|
+
} from './actor-packet-relay-wire';
|
|
39
|
+
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
40
|
+
import { requestRoutedJsonReply } from './actor-routed-json-request';
|
|
41
|
+
import type { ZLinkRemoteBoundSessionTarget } from './actor-runtime-state';
|
|
40
42
|
|
|
41
|
-
export const DEFAULT_MESSAGE_FOLLOW_DURATION_MS =
|
|
42
|
-
|
|
43
|
+
export const DEFAULT_MESSAGE_FOLLOW_DURATION_MS =
|
|
44
|
+
zlinkDefaultLocationOptions.messageFollowDurationMs;
|
|
43
45
|
const RELOCATION_REPLY_RETENTION_MS = 24 * 60 * 60 * 1_000;
|
|
44
46
|
|
|
45
47
|
export interface ZLinkActorHandoffPacket {
|
|
@@ -1445,7 +1447,7 @@ export class ZLinkActorHandoffCoordinator {
|
|
|
1445
1447
|
return duplicate.result;
|
|
1446
1448
|
}
|
|
1447
1449
|
const bytes = packetBytes(packet);
|
|
1448
|
-
if (context.hopCount >=
|
|
1450
|
+
if (context.hopCount >= ZLINK_MESSAGE_FOLLOW_MAX_HOPS) {
|
|
1449
1451
|
this.options.onMarker?.('message_follow_rejected', actorId);
|
|
1450
1452
|
return Promise.reject(actorLocationStale(actorId));
|
|
1451
1453
|
}
|