@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
|
@@ -7,22 +7,33 @@ exports.decodeActorAuthorityPayload = decodeActorAuthorityPayload;
|
|
|
7
7
|
exports.actorRelocationAuthorityApplicationPayload = actorRelocationAuthorityApplicationPayload;
|
|
8
8
|
exports.relocatingActorAuthorityApplicationPayload = relocatingActorAuthorityApplicationPayload;
|
|
9
9
|
exports.replaceActorRelocationAuthorityApplicationPayload = replaceActorRelocationAuthorityApplicationPayload;
|
|
10
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
10
11
|
const contracts_1 = require("../../contracts");
|
|
12
|
+
const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
|
|
13
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
11
14
|
const service_relocation_runtime_1 = require("../foundation/service-relocation-runtime");
|
|
15
|
+
const service_wire_binary_primitives_1 = require("../foundation/service-wire-binary-primitives");
|
|
12
16
|
const routing_id_1 = require("../routing-id");
|
|
13
17
|
const AUTHORITY_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x55]);
|
|
14
18
|
const AUTHORITY_VERSION = 1;
|
|
15
19
|
const AUTHORITY_FLAGS = 0;
|
|
16
20
|
const ACTOR_RELOCATION_MAGIC = Buffer.from([0x5a, 0x4c, 0x41, 0x50]);
|
|
17
|
-
const
|
|
21
|
+
const AUTHORITY_MINIMUM_BYTES = 15;
|
|
22
|
+
const ACTOR_RELOCATION_MINIMUM_BYTES = 32;
|
|
23
|
+
const ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE = 5;
|
|
24
|
+
const ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE = 6;
|
|
25
|
+
const ACTOR_RELOCATION_FIRST_PHASE = 1;
|
|
26
|
+
const ACTOR_RELOCATION_STEADY_PHASE = 4;
|
|
27
|
+
const ENTRY_SPOT_WIRE_KIND = (0, contracts_1.zlinkSpotKindToWire)(contracts_1.ZLinkSpotKind.Entry);
|
|
28
|
+
const USER_SPOT_WIRE_KIND = (0, contracts_1.zlinkSpotKindToWire)(contracts_1.ZLinkSpotKind.User);
|
|
18
29
|
const FATAL_UTF8 = new TextDecoder('utf-8', { fatal: true });
|
|
19
30
|
/** Encodes the durable authority-payload-v1 envelope around one schema body. */
|
|
20
31
|
function encodeCanonicalAuthorityPayload(value) {
|
|
21
32
|
const body = Buffer.from(value.body);
|
|
22
33
|
const envelope = concat(AUTHORITY_MAGIC, Buffer.of(AUTHORITY_VERSION), u16be(AUTHORITY_FLAGS), u32be(body.byteLength), body);
|
|
23
34
|
const encoded = concat(envelope, u32be((0, service_relocation_runtime_1.crc32c)(envelope)));
|
|
24
|
-
if (encoded.byteLength >
|
|
25
|
-
throw new RangeError(
|
|
35
|
+
if (encoded.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
36
|
+
throw new RangeError(`Actor authority payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
26
37
|
}
|
|
27
38
|
return encoded;
|
|
28
39
|
}
|
|
@@ -30,7 +41,8 @@ function encodeCanonicalAuthorityPayload(value) {
|
|
|
30
41
|
function decodeCanonicalAuthorityPayload(payload) {
|
|
31
42
|
try {
|
|
32
43
|
const reader = new BigEndianReader(payload);
|
|
33
|
-
if (reader.bytes.byteLength <
|
|
44
|
+
if (reader.bytes.byteLength < AUTHORITY_MINIMUM_BYTES ||
|
|
45
|
+
reader.bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
34
46
|
return undefined;
|
|
35
47
|
}
|
|
36
48
|
reader.expect(AUTHORITY_MAGIC);
|
|
@@ -52,7 +64,7 @@ function decodeCanonicalAuthorityPayload(payload) {
|
|
|
52
64
|
/** Byte-exact Node counterpart of .NET ZLinkActorAuthorityPayloadCodec.Encode. */
|
|
53
65
|
function encodeActorAuthorityPayload(value) {
|
|
54
66
|
const spotKind = (0, contracts_1.zlinkSpotKindToWire)(value.currentSpotKind);
|
|
55
|
-
if (spotKind !==
|
|
67
|
+
if (spotKind !== ENTRY_SPOT_WIRE_KIND && spotKind !== USER_SPOT_WIRE_KIND) {
|
|
56
68
|
throw new RangeError('Actor currentSpotKind must be Entry or User.');
|
|
57
69
|
}
|
|
58
70
|
const actor = concat(text8(value.stableType, 'stableType'), text8(value.actorId, 'actorId'), Buffer.of(value.state === 'creating' ? 0 : 1), text8(value.currentSpotId, 'currentSpotId'), nonzeroU64be(value.currentSpotGeneration, 'currentSpotGeneration'), Buffer.of(spotKind));
|
|
@@ -117,7 +129,7 @@ function actorRelocationAuthorityApplicationPayload(payload) {
|
|
|
117
129
|
const current = decodeActorRelocationEnvelope(payload);
|
|
118
130
|
return current === undefined
|
|
119
131
|
? Buffer.from(payload)
|
|
120
|
-
: current.phase ===
|
|
132
|
+
: current.phase === ACTOR_RELOCATION_STEADY_PHASE
|
|
121
133
|
? Buffer.from(current.applicationPayload)
|
|
122
134
|
: undefined;
|
|
123
135
|
}
|
|
@@ -132,15 +144,16 @@ function replaceActorRelocationAuthorityApplicationPayload(payload, applicationP
|
|
|
132
144
|
return Buffer.from(applicationPayload);
|
|
133
145
|
const withoutChecksum = concat(current.prefix, i32le(applicationPayload.byteLength), applicationPayload);
|
|
134
146
|
const encoded = concat(withoutChecksum, u32le((0, service_relocation_runtime_1.crc32c)(withoutChecksum)));
|
|
135
|
-
if (encoded.byteLength >
|
|
136
|
-
throw new RangeError(
|
|
147
|
+
if (encoded.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES) {
|
|
148
|
+
throw new RangeError(`Actor relocation authority payload exceeds ${InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES / (1024 * 1024)} MiB.`);
|
|
137
149
|
}
|
|
138
150
|
return encoded;
|
|
139
151
|
}
|
|
140
152
|
function decodeActorRelocationEnvelope(payload) {
|
|
141
153
|
try {
|
|
142
154
|
const bytes = Buffer.from(payload);
|
|
143
|
-
if (bytes.byteLength <
|
|
155
|
+
if (bytes.byteLength < ACTOR_RELOCATION_MINIMUM_BYTES ||
|
|
156
|
+
bytes.byteLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES)
|
|
144
157
|
return undefined;
|
|
145
158
|
const checksumOffset = bytes.byteLength - 4;
|
|
146
159
|
if (bytes.readUInt32LE(checksumOffset) !== (0, service_relocation_runtime_1.crc32c)(bytes.subarray(0, checksumOffset))) {
|
|
@@ -149,12 +162,13 @@ function decodeActorRelocationEnvelope(payload) {
|
|
|
149
162
|
const reader = new LittleEndianReader(bytes.subarray(0, checksumOffset));
|
|
150
163
|
reader.expect(ACTOR_RELOCATION_MAGIC);
|
|
151
164
|
const version = reader.u16();
|
|
152
|
-
if (version !==
|
|
165
|
+
if (version !== ACTOR_RELOCATION_VERSION_WITHOUT_SESSION_FENCE &&
|
|
166
|
+
version !== ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE)
|
|
153
167
|
return undefined;
|
|
154
168
|
if (reader.take(16).every((byte) => byte === 0))
|
|
155
169
|
return undefined;
|
|
156
170
|
const phase = reader.u8();
|
|
157
|
-
if (phase <
|
|
171
|
+
if (phase < ACTOR_RELOCATION_FIRST_PHASE || phase > ACTOR_RELOCATION_STEADY_PHASE)
|
|
158
172
|
return undefined;
|
|
159
173
|
const isBound = reader.bool();
|
|
160
174
|
if (isBound) {
|
|
@@ -169,7 +183,7 @@ function decodeActorRelocationEnvelope(payload) {
|
|
|
169
183
|
const ownerLeaseGeneration = reader.u64();
|
|
170
184
|
const sessionOwnerNodeGeneration = reader.u64();
|
|
171
185
|
reader.u64();
|
|
172
|
-
if (version ===
|
|
186
|
+
if (version === ACTOR_RELOCATION_VERSION_WITH_SESSION_FENCE) {
|
|
173
187
|
reader.text16();
|
|
174
188
|
reader.u64();
|
|
175
189
|
}
|
|
@@ -184,7 +198,7 @@ function decodeActorRelocationEnvelope(payload) {
|
|
|
184
198
|
}
|
|
185
199
|
const prefix = Buffer.from(reader.bytes.subarray(0, reader.offset));
|
|
186
200
|
const applicationLength = reader.i32();
|
|
187
|
-
if (applicationLength < 1 || applicationLength >
|
|
201
|
+
if (applicationLength < 1 || applicationLength > InternalDefaults_1.AUTHORITY_ENVELOPE_MAX_BYTES)
|
|
188
202
|
return undefined;
|
|
189
203
|
const applicationPayload = Buffer.from(reader.take(applicationLength));
|
|
190
204
|
if (!reader.done)
|
|
@@ -197,20 +211,22 @@ function decodeActorRelocationEnvelope(payload) {
|
|
|
197
211
|
}
|
|
198
212
|
function text8(value, name) {
|
|
199
213
|
const bytes = Buffer.from(value, 'utf8');
|
|
200
|
-
if (bytes.byteLength < 1 ||
|
|
201
|
-
|
|
214
|
+
if (bytes.byteLength < 1 ||
|
|
215
|
+
bytes.byteLength > service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES ||
|
|
216
|
+
bytes.includes(0)) {
|
|
217
|
+
throw new RangeError(`${name} must contain 1..${service_wire_binary_primitives_1.SERVICE_WIRE_TEXT8_MAX_BYTES} UTF-8 bytes without NUL.`);
|
|
202
218
|
}
|
|
203
219
|
return concat(Buffer.of(bytes.byteLength), bytes);
|
|
204
220
|
}
|
|
205
221
|
function rid(value, name) {
|
|
206
222
|
const bytes = Buffer.from((0, routing_id_1.encodeRoutingIdStorageHex)(value), 'hex');
|
|
207
|
-
if (bytes.byteLength < 1 || bytes.byteLength >
|
|
208
|
-
throw new RangeError(`${name} must contain 1
|
|
223
|
+
if (bytes.byteLength < 1 || bytes.byteLength > CoreTypes_1.ZLINK_MAX_ROUTING_ID_BYTES) {
|
|
224
|
+
throw new RangeError(`${name} must contain 1..${CoreTypes_1.ZLINK_MAX_ROUTING_ID_BYTES} bytes.`);
|
|
209
225
|
}
|
|
210
226
|
return concat(Buffer.of(bytes.byteLength), bytes);
|
|
211
227
|
}
|
|
212
228
|
function nonzeroU64be(value, name) {
|
|
213
|
-
if (value === 0n || value < 0n || value >
|
|
229
|
+
if (value === 0n || value < 0n || value > stream_wire_1.UINT64_MAX) {
|
|
214
230
|
throw new RangeError(`${name} must be a non-zero u64.`);
|
|
215
231
|
}
|
|
216
232
|
const result = Buffer.alloc(8);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ActorRef, type ZLinkActorClient, type ZLinkActorRequestCall, type ZLinkActorSendCall, type ZLinkMessageSerializer } from '../../contracts';
|
|
2
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
3
|
-
import type
|
|
3
|
+
import { type ZLinkBackendMeshNode, type ZLinkMeshCompletionTable } from '../backend';
|
|
4
4
|
import type { ZLinkStoreLocationResolvers } from '../locations';
|
|
5
5
|
import type { ZLinkActorRoutedJoinTransport } from './actor-routed-join-transport';
|
|
6
6
|
export interface ZLinkActorClientOptions {
|
|
@@ -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) {
|
|
@@ -26,24 +28,21 @@ class DefaultZLinkActorClient {
|
|
|
26
28
|
}
|
|
27
29
|
sendToActor(actorId, message) {
|
|
28
30
|
requireActorId(actorId);
|
|
29
|
-
return new DefaultZLinkActorSendCall((packetName, metadata
|
|
31
|
+
return new DefaultZLinkActorSendCall((packetName, metadata) => this.send(actorId, packetName, message, metadata), message);
|
|
30
32
|
}
|
|
31
33
|
requestToActor(actorId, request) {
|
|
32
34
|
requireActorId(actorId);
|
|
33
35
|
return new DefaultZLinkActorRequestCall((packetName, timeoutMs, metadata, signal) => this.request(actorId, packetName, request, timeoutMs, metadata, signal, 'async'), (packetName, timeoutMs, metadata, signal) => this.request(actorId, packetName, request, timeoutMs, metadata, signal, 'yield'), actorId, request, this.options.defaultRequestTimeoutMs);
|
|
34
36
|
}
|
|
35
|
-
async send(actorId, explicitPacketName, message, metadata
|
|
36
|
-
|
|
37
|
-
const route = await this.resolveActorRoute(actorId, signal);
|
|
37
|
+
async send(actorId, explicitPacketName, message, metadata) {
|
|
38
|
+
const route = await this.resolveActorRoute(actorId);
|
|
38
39
|
const { meshName, actorRef: actor } = route;
|
|
39
40
|
this.throwIfKnownStale(meshName, actor);
|
|
40
41
|
const parts = this.createPacketParts(protocol_1.ZLinkStreamMessageKind.Send, undefined, explicitPacketName, message, metadata);
|
|
41
42
|
const messageFollow = createActorMessageFollowContext(route, parts, false);
|
|
42
43
|
const routedActor = (0, actor_message_follow_context_1.attachActorMessageFollowContext)(actor, messageFollow);
|
|
43
44
|
try {
|
|
44
|
-
const submissionCopies = (await this.options
|
|
45
|
-
.transportDeliveryGate?.()
|
|
46
|
-
?.waitBeforeSubmit(actorId, 'oneWay', signal)) ?? 1;
|
|
45
|
+
const submissionCopies = (await this.options.transportDeliveryGate?.()?.waitBeforeSubmit(actorId, 'oneWay')) ?? 1;
|
|
47
46
|
const handoff = this.options.handoffCapture?.(meshName, actor.actorId, parts, false, routedActor);
|
|
48
47
|
if (handoff !== undefined) {
|
|
49
48
|
const submissions = [handoff];
|
|
@@ -52,8 +51,8 @@ class DefaultZLinkActorClient {
|
|
|
52
51
|
if (duplicate !== undefined)
|
|
53
52
|
submissions.push(duplicate);
|
|
54
53
|
}
|
|
55
|
-
await
|
|
56
|
-
return
|
|
54
|
+
await Promise.all(submissions);
|
|
55
|
+
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
57
56
|
}
|
|
58
57
|
const node = this.requireNode(meshName);
|
|
59
58
|
if (this.options.routeTransport !== undefined &&
|
|
@@ -66,8 +65,8 @@ class DefaultZLinkActorClient {
|
|
|
66
65
|
actorRef: actor,
|
|
67
66
|
returnResponse: false,
|
|
68
67
|
messageFollowContext: messageFollow
|
|
69
|
-
}), { packetName:
|
|
70
|
-
return
|
|
68
|
+
}), { packetName: actor_packet_relay_wire_1.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET });
|
|
69
|
+
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
71
70
|
}
|
|
72
71
|
return await this.submitActorSend(meshName, toBackendActorRef(actor), parts);
|
|
73
72
|
}
|
|
@@ -89,7 +88,7 @@ class DefaultZLinkActorClient {
|
|
|
89
88
|
const effectiveTimeoutMs = timeoutMs ?? this.options.defaultRequestTimeoutMs;
|
|
90
89
|
const deadlineMs = effectiveTimeoutMs === undefined ? undefined : performance.now() + effectiveTimeoutMs;
|
|
91
90
|
const deadlineUnixMs = effectiveTimeoutMs === undefined ? undefined : Date.now() + effectiveTimeoutMs;
|
|
92
|
-
const route = await this.resolveActorRoute(actorId, signal);
|
|
91
|
+
const route = await this.resolveActorRoute(actorId, signal, deadlineMs);
|
|
93
92
|
if (waitPolicy === 'async' &&
|
|
94
93
|
sourceSpotId !== undefined &&
|
|
95
94
|
sameSpotRoute(sourceSpotId, route)) {
|
|
@@ -104,9 +103,12 @@ class DefaultZLinkActorClient {
|
|
|
104
103
|
const messageFollow = createActorMessageFollowContext(route, parts, true, deadlineUnixMs, correlationId, operationId);
|
|
105
104
|
const routedActor = (0, actor_message_follow_context_1.attachActorMessageFollowContext)(actor, messageFollow);
|
|
106
105
|
try {
|
|
107
|
-
const
|
|
106
|
+
const delivery = this.options
|
|
108
107
|
.transportDeliveryGate?.()
|
|
109
|
-
?.waitBeforeSubmit(actorId, 'request', signal)
|
|
108
|
+
?.waitBeforeSubmit(actorId, 'request', signal);
|
|
109
|
+
const submissionCopies = delivery === undefined
|
|
110
|
+
? 1
|
|
111
|
+
: ((await (0, actor_request_deadline_1.waitActorReply)(delivery, actorId, deadlineMs, signal)) ?? 1);
|
|
110
112
|
const handoff = this.options.handoffCapture?.(meshName, actor.actorId, parts, true, routedActor, deadlineUnixMs);
|
|
111
113
|
if (handoff !== undefined) {
|
|
112
114
|
const submissions = [handoff];
|
|
@@ -115,10 +117,10 @@ class DefaultZLinkActorClient {
|
|
|
115
117
|
if (duplicate !== undefined)
|
|
116
118
|
submissions.push(duplicate);
|
|
117
119
|
}
|
|
118
|
-
const replies = await
|
|
120
|
+
const replies = await (0, actor_request_deadline_1.waitActorReply)(Promise.all(submissions), actorId, deadlineMs, signal);
|
|
119
121
|
return replies[0];
|
|
120
122
|
}
|
|
121
|
-
return await this.submitActorRequest(meshName, toBackendActorRef(actor), parts, remainingActorRequestTimeout(actorId, deadlineMs), signal, route, messageFollow);
|
|
123
|
+
return await this.submitActorRequest(meshName, toBackendActorRef(actor), parts, (0, actor_request_deadline_1.remainingActorRequestTimeout)(actorId, deadlineMs), signal, route, messageFollow);
|
|
122
124
|
}
|
|
123
125
|
catch (error) {
|
|
124
126
|
if (isStaleActorError(error)) {
|
|
@@ -132,12 +134,12 @@ class DefaultZLinkActorClient {
|
|
|
132
134
|
closeMessages(parts);
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
|
-
async resolveActorRoute(actorId, signal) {
|
|
137
|
+
async resolveActorRoute(actorId, signal, deadlineMs) {
|
|
136
138
|
const resolver = this.options.locationResolver();
|
|
137
139
|
if (resolver === undefined) {
|
|
138
140
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.InvalidConfiguration, 'Actor direct messaging requires a Location Store.');
|
|
139
141
|
}
|
|
140
|
-
const resolution = await resolver.resolveDirectActorRoute(actorId, signal);
|
|
142
|
+
const resolution = await resolver.resolveDirectActorRoute(actorId, signal, deadlineMs);
|
|
141
143
|
if (resolution.kind === 'missing') {
|
|
142
144
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor route '${actorId}' was not found.`);
|
|
143
145
|
}
|
|
@@ -191,17 +193,15 @@ class DefaultZLinkActorClient {
|
|
|
191
193
|
async submitActorSend(meshName, actor, parts) {
|
|
192
194
|
const node = this.requireNode(meshName);
|
|
193
195
|
try {
|
|
194
|
-
return
|
|
196
|
+
return (0, submission_result_1.classifySubmitResult)(await node.sendToActor(actor, toMessageLikeParts(parts), {
|
|
195
197
|
flags: runtime_values_1.ZLINK_BACKEND_SEND_NONE
|
|
196
198
|
}), 'Actor send');
|
|
197
199
|
}
|
|
198
200
|
catch (error) {
|
|
199
201
|
if ((0, runtime_values_1.isZLinkBackendResultError)(error)) {
|
|
200
|
-
return
|
|
202
|
+
return (0, submission_result_1.classifySubmitResult)(error.result, 'Actor send', error.phase);
|
|
201
203
|
}
|
|
202
|
-
throw (
|
|
203
|
-
? mapRequestError(error, 'Actor send')
|
|
204
|
-
: mapSubmitError(error, 'Actor send');
|
|
204
|
+
throw mapSubmitError(error, 'Actor send');
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
async submitActorRequest(meshName, actor, parts, timeoutMs, signal, route, messageFollowContext) {
|
|
@@ -296,36 +296,10 @@ function remoteRelayErrorKind(value) {
|
|
|
296
296
|
? value
|
|
297
297
|
: framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
298
298
|
}
|
|
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
299
|
function requireActorId(actorId) {
|
|
309
300
|
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);
|
|
301
|
+
if (byteLength < 1 || byteLength > CoreTypes_1.ZLINK_MAX_ACTOR_ID_BYTES) {
|
|
302
|
+
throw new configuration_1.ZLinkConfigurationException(`Actor ID must contain 1..${CoreTypes_1.ZLINK_MAX_ACTOR_ID_BYTES} UTF-8 bytes.`);
|
|
329
303
|
}
|
|
330
304
|
}
|
|
331
305
|
async function forwardEncodedActorPacket(node, completions, actor, header, payload, returnResponse, timeoutMs, serializers) {
|
|
@@ -393,10 +367,10 @@ class DefaultZLinkActorSendCall {
|
|
|
393
367
|
this.selectedMetadata.set(key, value);
|
|
394
368
|
return this;
|
|
395
369
|
}
|
|
396
|
-
async submit(
|
|
370
|
+
async submit() {
|
|
397
371
|
ensureSingleSubmit(this.executed);
|
|
398
372
|
this.executed = true;
|
|
399
|
-
const result = await this.submitter(this.packet ?? (0, packet_name_1.resolveFrameworkPacketName)(this.message, undefined, 'Actor'), this.selectedMetadata
|
|
373
|
+
const result = await this.submitter(this.packet ?? (0, packet_name_1.resolveFrameworkPacketName)(this.message, undefined, 'Actor'), this.selectedMetadata);
|
|
400
374
|
(0, submission_result_1.requireOneWayCompletion)(result, 'Actor send', framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound);
|
|
401
375
|
}
|
|
402
376
|
}
|
|
@@ -493,97 +467,20 @@ function decodeActorReplyPayload(kind, payload, serializers, packetName) {
|
|
|
493
467
|
const wireKind = error.kind;
|
|
494
468
|
const publicKind = typeof wireKind === 'number' &&
|
|
495
469
|
Number.isInteger(wireKind) &&
|
|
496
|
-
wireKind >=
|
|
497
|
-
wireKind <=
|
|
470
|
+
wireKind >= contracts_1.ZLinkFrameworkErrorKind.NotFound &&
|
|
471
|
+
wireKind <= contracts_1.ZLinkFrameworkErrorKind.InternalFailure
|
|
498
472
|
? wireKind
|
|
499
|
-
:
|
|
500
|
-
throw new
|
|
473
|
+
: contracts_1.ZLinkFrameworkErrorKind.InternalFailure;
|
|
474
|
+
throw new contracts_1.ZLinkFrameworkException(publicKind, error.message ?? 'Actor request failed.');
|
|
501
475
|
}
|
|
502
|
-
return (0, payload_codec_1.decodeFrameworkPayloadMessage)(payload, serializers, undefined,
|
|
476
|
+
return (0, payload_codec_1.decodeFrameworkPayloadMessage)(payload, serializers, undefined, stream_wire_1.ZlinkStreamContentType.Json, packetName, 'reply');
|
|
503
477
|
}
|
|
504
478
|
function mapSubmitError(error, operationName) {
|
|
505
|
-
if (error instanceof
|
|
479
|
+
if (error instanceof contracts_1.ZLinkFrameworkException) {
|
|
506
480
|
return error;
|
|
507
481
|
}
|
|
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
482
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, `${operationName} failed before a reply was received.`, true, error);
|
|
519
483
|
}
|
|
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
484
|
function actorTerminalKind(result) {
|
|
588
485
|
switch (result) {
|
|
589
486
|
case runtime_values_1.RequestResult.TimedOut:
|
|
@@ -599,7 +496,7 @@ function actorTerminalKind(result) {
|
|
|
599
496
|
case runtime_values_1.RequestResult.NotConnected:
|
|
600
497
|
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected;
|
|
601
498
|
// A terminal-only conflict/busy on a remote actor reply is the target's
|
|
602
|
-
// stale/owner state:
|
|
499
|
+
// stale/owner state: ActorLocationStale (Unavailable).
|
|
603
500
|
case runtime_values_1.RequestResult.Conflict:
|
|
604
501
|
case runtime_values_1.RequestResult.Busy:
|
|
605
502
|
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale;
|
|
@@ -607,19 +504,18 @@ function actorTerminalKind(result) {
|
|
|
607
504
|
return framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RequestFailed;
|
|
608
505
|
}
|
|
609
506
|
}
|
|
507
|
+
// The shared table preserves Actor fine kinds; without a recognized fine code,
|
|
508
|
+
// the remote owner/queue terminal supplies the classification.
|
|
610
509
|
function mapRequestResult(result, failureErrno, operationName) {
|
|
611
|
-
const kind =
|
|
510
|
+
const kind = (0, framework_errors_internal_1.internalFrameworkErrorKindFromWireFailureCode)(failureErrno) ?? actorTerminalKind(result);
|
|
612
511
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(kind, `${operationName} failed with request result ${result}` +
|
|
613
512
|
(failureErrno !== 0 ? ` (failure code ${failureErrno}).` : '.'));
|
|
614
513
|
}
|
|
615
|
-
function mapRequestError(error, operationName) {
|
|
616
|
-
return mapRequestResult(error.result, error.failureErrno ?? 0, operationName);
|
|
617
|
-
}
|
|
618
514
|
function routeNotConnected(message, cause) {
|
|
619
515
|
return (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected, message, true, cause);
|
|
620
516
|
}
|
|
621
517
|
function isStaleActorError(error) {
|
|
622
|
-
return (error instanceof
|
|
518
|
+
return (error instanceof contracts_1.ZLinkFrameworkException &&
|
|
623
519
|
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorLocationStale);
|
|
624
520
|
}
|
|
625
521
|
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) {
|
|
@@ -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) {
|
|
@@ -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;
|
|
@@ -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) {
|
|
@@ -940,7 +940,7 @@ class ZLinkActorHandoffCoordinator {
|
|
|
940
940
|
return duplicate.result;
|
|
941
941
|
}
|
|
942
942
|
const bytes = packetBytes(packet);
|
|
943
|
-
if (context.hopCount >=
|
|
943
|
+
if (context.hopCount >= actor_message_follow_context_1.ZLINK_MESSAGE_FOLLOW_MAX_HOPS) {
|
|
944
944
|
this.options.onMarker?.('message_follow_rejected', actorId);
|
|
945
945
|
return Promise.reject(actorLocationStale(actorId));
|
|
946
946
|
}
|