@zlink-systems/framework 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- 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 +42 -143
- 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 +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-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 +6 -23
- 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 +1 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
- 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 +40 -16
- 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 +3 -2
- 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 +68 -52
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -10
- 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.js +5 -2
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +248 -174
- package/dist/runtime/channels/channel-transports.d.ts +11 -17
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +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 +62 -83
- 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 +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +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 -157
- 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 +7 -20
- 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 +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -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 +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +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/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +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 +4 -3
- package/dist/runtime/spots/spot-outbound.js +9 -8
- 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 +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +11 -1
- package/dist/runtime/streams/index.d.ts +14 -15
- package/dist/runtime/streams/index.js +20 -21
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/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/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- 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 +77 -204
- 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 +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- 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 +13 -29
- 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 +23 -6
- 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 +41 -20
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
- 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 +132 -85
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -23
- 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 +6 -2
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +301 -192
- package/src/runtime/channels/channel-transports.ts +161 -112
- 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/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +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 +110 -111
- 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 +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +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 -296
- 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 +8 -41
- 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 +73 -195
- 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 +450 -478
- 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/submission-result.ts +57 -1
- 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 +45 -23
- 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 +89 -43
- package/src/runtime/streams/bound-session-service.ts +21 -1
- package/src/runtime/streams/index.ts +76 -64
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/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,14 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZLinkBoundActorRelaySender = void 0;
|
|
4
|
-
const
|
|
5
|
-
const payload_codec_1 = require("../messaging/payload-codec");
|
|
6
|
-
const protocol_1 = require("./protocol");
|
|
3
|
+
exports.ZLinkBoundActorRelaySender = exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = void 0;
|
|
4
|
+
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
7
5
|
const abort_1 = require("../abort");
|
|
8
|
-
const
|
|
6
|
+
const diagnostics_1 = require("../diagnostics");
|
|
7
|
+
const payload_codec_1 = require("../messaging/payload-codec");
|
|
8
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
9
9
|
const actor_session_binding_registry_1 = require("./actor-session-binding-registry");
|
|
10
10
|
const actor_session_lifecycle_coordinator_1 = require("./actor-session-lifecycle-coordinator");
|
|
11
11
|
const managed_stream_1 = require("./managed-stream");
|
|
12
|
+
const protocol_1 = require("./protocol");
|
|
13
|
+
exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS = 2000;
|
|
12
14
|
class ZLinkBoundActorRelaySender {
|
|
13
15
|
routes;
|
|
14
16
|
frameMessages;
|
|
@@ -34,37 +36,58 @@ class ZLinkBoundActorRelaySender {
|
|
|
34
36
|
await admission.complete();
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
|
-
if ((await this.routes.isSealed(actor.actorId)) &&
|
|
38
|
-
(0, execution_1.captureZLinkExecutionTurn)() !== undefined) {
|
|
39
|
-
void operation().catch(() => undefined);
|
|
40
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
41
|
-
}
|
|
42
39
|
return await operation();
|
|
43
40
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
(0, abort_1.throwIfAborted)(signal);
|
|
42
|
+
const held = await this.routes.acceptOneWay(actor.actorId, actor.bindingToken, () => {
|
|
43
|
+
let heldMessage = (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
|
|
44
|
+
return {
|
|
45
|
+
deliver: async () => {
|
|
46
|
+
try {
|
|
47
|
+
const result = await this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, undefined, header, undefined, heldMessage));
|
|
48
|
+
if (result.status !== submission_result_1.ZLinkSubmitStatus.Submitted) {
|
|
49
|
+
this.traceHeldDrop(header, result.status === submission_result_1.ZLinkSubmitStatus.Backpressured ||
|
|
50
|
+
result.status === submission_result_1.ZLinkSubmitStatus.TimedOut
|
|
51
|
+
? 'backpressure'
|
|
52
|
+
: result.status === submission_result_1.ZLinkSubmitStatus.Shutdown
|
|
53
|
+
? 'shutdown'
|
|
54
|
+
: 'stale_target');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
heldMessage?.close();
|
|
59
|
+
heldMessage = undefined;
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
drop: (reason, error) => {
|
|
63
|
+
heldMessage?.close();
|
|
64
|
+
heldMessage = undefined;
|
|
65
|
+
this.traceHeldDrop(header, reason, error);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
if (held) {
|
|
60
70
|
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
61
71
|
}
|
|
62
72
|
return this.routes.runAcceptedFrameWhenReady(actor.actorId, actor.bindingToken, () => this.relayAcceptedFrame(actor, payload, signal), signal);
|
|
63
73
|
}
|
|
64
|
-
|
|
74
|
+
traceHeldDrop(header, reason, error) {
|
|
75
|
+
(0, diagnostics_1.flowIfEnabled)(this.options.dispatchErrors?.flow, ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped, undefined, header.flowId)?.trace({
|
|
76
|
+
outcome: ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped,
|
|
77
|
+
surface: ZLinkDispatchOptions_1.ZLinkDispatchErrorSurface.StreamSession,
|
|
78
|
+
messageKind: ZLinkDispatchOptions_1.ZLinkDispatchMessageKind.Send,
|
|
79
|
+
packetName: header.name,
|
|
80
|
+
flowId: header.flowId,
|
|
81
|
+
flowOrigin: header.flowOrigin,
|
|
82
|
+
correlationId: header.correlationId,
|
|
83
|
+
errorReason: reason,
|
|
84
|
+
...(error instanceof Error ? { errorType: error.name, errorMessage: error.message } : {})
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async relayAcceptedFrame(actor, payload, signal, header, requestAdmission, acceptedPayload) {
|
|
65
88
|
const activeHeader = header ?? (await this.currentHeader(actor));
|
|
66
89
|
const started = await this.lifecycle.run(actor.actorId, async () => {
|
|
67
|
-
const completion = this.relayInsideLifecycle(actor, payload, signal, activeHeader, requestAdmission);
|
|
90
|
+
const completion = this.relayInsideLifecycle(actor, payload, signal, activeHeader, requestAdmission, acceptedPayload);
|
|
68
91
|
if (activeHeader.kind === protocol_1.ZLinkStreamMessageKind.Request &&
|
|
69
92
|
activeHeader.requestSeq !== undefined) {
|
|
70
93
|
// A routed REQUEST only needs this lane while its ordered submission
|
|
@@ -96,13 +119,13 @@ class ZLinkBoundActorRelaySender {
|
|
|
96
119
|
}
|
|
97
120
|
return header;
|
|
98
121
|
}
|
|
99
|
-
async relayInsideLifecycle(actor, payload, signal, currentHeader, requestAdmission) {
|
|
122
|
+
async relayInsideLifecycle(actor, payload, signal, currentHeader, requestAdmission, acceptedPayload) {
|
|
100
123
|
const header = currentHeader ?? (await this.currentHeader(actor));
|
|
101
124
|
const held = requestAdmission?.beginSubmission(signal);
|
|
102
125
|
if (held !== undefined)
|
|
103
126
|
await held;
|
|
104
127
|
(0, abort_1.throwIfAborted)(signal);
|
|
105
|
-
const payloadMessage = (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
|
|
128
|
+
const payloadMessage = acceptedPayload ?? (0, payload_codec_1.encodeFrameworkPayloadMessage)(payload, this.options.messageSerializers);
|
|
106
129
|
try {
|
|
107
130
|
if (this.options.relay !== undefined) {
|
|
108
131
|
const handled = await this.options.relay(actor, header, payloadMessage, signal);
|
|
@@ -125,7 +148,8 @@ class ZLinkBoundActorRelaySender {
|
|
|
125
148
|
}
|
|
126
149
|
}
|
|
127
150
|
finally {
|
|
128
|
-
|
|
151
|
+
if (acceptedPayload === undefined)
|
|
152
|
+
payloadMessage.close();
|
|
129
153
|
}
|
|
130
154
|
}
|
|
131
155
|
async notifyDisconnected(actor, signal) {
|
|
@@ -141,13 +165,13 @@ class ZLinkBoundActorRelaySender {
|
|
|
141
165
|
if (unbindNative &&
|
|
142
166
|
detached.bindingToken === actor.bindingToken &&
|
|
143
167
|
detached.context.stream instanceof managed_stream_1.ZLinkManagedStream) {
|
|
144
|
-
await detached.context.stream.unbindActor(actor.actorId, this.options.actorBindTimeoutMs ??
|
|
168
|
+
await detached.context.stream.unbindActor(actor.actorId, this.options.actorBindTimeoutMs ?? exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS, signal);
|
|
145
169
|
}
|
|
146
170
|
await this.options.notifyDisconnected?.(actor, signal);
|
|
147
171
|
}
|
|
148
172
|
async notifyPhysicalDisconnect(context) {
|
|
149
173
|
const snapshot = [...context.boundActors];
|
|
150
|
-
const timeoutMs = this.options.actorBindTimeoutMs ??
|
|
174
|
+
const timeoutMs = this.options.actorBindTimeoutMs ?? exports.DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS;
|
|
151
175
|
await Promise.allSettled(snapshot.map(async (actor) => {
|
|
152
176
|
const detached = await this.lifecycle.run(actor.actorId, async () => {
|
|
153
177
|
const route = await this.routes.route(actor.actorId);
|
|
@@ -5,6 +5,7 @@ import { ZLinkActorSessionBindingRegistry } from './actor-session-binding-regist
|
|
|
5
5
|
import type { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
6
6
|
import { ZLinkStreamFrameMessageFactory } from './stream-frame-factory';
|
|
7
7
|
import { ZLinkManagedStream } from './managed-stream';
|
|
8
|
+
import type { ZLinkSessionBindingIdentity } from './stream-binding-runtime-ports';
|
|
8
9
|
export interface ZLinkBoundSessionTransport {
|
|
9
10
|
send(actorId: string, message: unknown, options: ZLinkBoundSessionSendOptions): Promise<ZLinkSubmitResult>;
|
|
10
11
|
disconnect(actorId: string, options: ZLinkBoundSessionDisconnectOptions): Promise<void>;
|
|
@@ -39,6 +40,12 @@ export declare class ZLinkBoundSessionService {
|
|
|
39
40
|
sendNativeBoundSessionError(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<void>;
|
|
40
41
|
disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
41
42
|
disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Closes the physical Session of one exact binding after its relocation
|
|
45
|
+
* failed (Session–Actor binding §8.1). A newer binding of the same Actor is
|
|
46
|
+
* not selected.
|
|
47
|
+
*/
|
|
48
|
+
closeSessionBinding(actorId: string, expected: ZLinkSessionBindingIdentity, signal?: AbortSignal): Promise<void>;
|
|
42
49
|
relayRemoteBoundSessionBind(stream: ZLinkManagedStream, actorRef: ActorRef): Promise<void>;
|
|
43
50
|
private writeLocalBoundSessionFrame;
|
|
44
51
|
private sendNativeBoundSessionPayload;
|
|
@@ -7,6 +7,7 @@ const submission_result_1 = require("../messaging/submission-result");
|
|
|
7
7
|
const abort_1 = require("../abort");
|
|
8
8
|
const protocol_1 = require("./protocol");
|
|
9
9
|
const bound_session_response_target_1 = require("./bound-session-response-target");
|
|
10
|
+
const spot_remote_codec_1 = require("../spots/spot-remote-codec");
|
|
10
11
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
11
12
|
class ZLinkBoundSessionService {
|
|
12
13
|
routes;
|
|
@@ -102,12 +103,21 @@ class ZLinkBoundSessionService {
|
|
|
102
103
|
await this.routes.unbind(actorId, route.context, route.bindingToken);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Closes the physical Session of one exact binding after its relocation
|
|
108
|
+
* failed (Session–Actor binding §8.1). A newer binding of the same Actor is
|
|
109
|
+
* not selected.
|
|
110
|
+
*/
|
|
111
|
+
async closeSessionBinding(actorId, expected, signal) {
|
|
112
|
+
const route = await this.routes.routeForSessionBinding(actorId, expected.sessionRid, expected.bindingGeneration);
|
|
113
|
+
await route?.context.close(signal);
|
|
114
|
+
}
|
|
105
115
|
async relayRemoteBoundSessionBind(stream, actorRef) {
|
|
106
116
|
const encodedBindHeader = (0, protocol_1.encodeStreamHeader)({
|
|
107
117
|
kind: protocol_1.ZLinkStreamMessageKind.Send,
|
|
108
118
|
codec: protocol_1.ZLinkStreamCodec.Raw,
|
|
109
119
|
flags: protocol_1.ZLinkStreamHeaderFlags.None,
|
|
110
|
-
name:
|
|
120
|
+
name: spot_remote_codec_1.REMOTE_BOUND_SESSION_BIND_PACKET,
|
|
111
121
|
metadata: new Map()
|
|
112
122
|
});
|
|
113
123
|
// encodeStreamHeader returns a fresh, unaliased array; view it without re-copying.
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { ActorRef, ZLinkActor, ZLinkBoundSession, ZLinkSessionActor, ZLinkMessageSerializer, ZLinkStreamCompressionOptions } from '../../contracts';
|
|
3
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
4
|
-
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
5
|
-
import { ZLinkMessage } from '../../contracts';
|
|
1
|
+
import { type ActorRef, type ZLinkActor, type ZLinkBoundSession, type ZLinkMessageSerializer, type ZLinkSessionActor, type ZLinkStreamCompressionOptions, ZLinkMessage } from '../../contracts';
|
|
6
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import type { ZLinkBackendAdapterFactory, ZLinkBackendActorSessionNode, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
3
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
4
|
+
import type { ZLinkBackendActorSessionNode, ZLinkBackendAdapterFactory, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
10
5
|
import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
11
|
-
import {
|
|
12
|
-
import { type
|
|
6
|
+
import { ZLinkDispatchErrorReporter } from '../channels';
|
|
7
|
+
import { type ZLinkFrameworkRegistration } from '../configuration';
|
|
8
|
+
import type { ZLinkListenerRecords } from '../foundation/listener-records';
|
|
13
9
|
import { ApplicationJobQueue } from '../host/application-job-queue';
|
|
14
|
-
import {
|
|
10
|
+
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
11
|
+
import { type ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
|
|
15
12
|
import { type ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
|
|
16
13
|
import { type ZLinkBoundSessionTransport } from './bound-session-service';
|
|
17
14
|
import { ZLinkManagedStream } from './managed-stream';
|
|
15
|
+
import { ZLinkStreamCodec, ZLinkStreamMessageKind, type ZLinkStreamFrameHeader, type ZLinkStreamReplyMessageKind } from './protocol';
|
|
16
|
+
import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
17
|
+
import type { ZLinkActorRouteCommitOptions, ZLinkSessionBindingConfirmationOptions, ZLinkSessionBindingIdentity } from './stream-binding-runtime-ports';
|
|
18
18
|
import { ZLinkStreamSessionNodeRuntime as ZLinkStreamSessionNodeRuntimeCore, ZLinkStreamSessionRuntime as ZLinkStreamSessionRuntimeCore, type ZLinkStreamSessionNodeRuntimeOptions as ZLinkStreamSessionNodeRuntimeCoreOptions, type ZLinkStreamSessionRuntimeOptions as ZLinkStreamSessionRuntimeCoreOptions } from './stream-session-runtime';
|
|
19
|
-
import type { ZLinkActorRouteCommitOptions } from './stream-binding-runtime-ports';
|
|
20
19
|
export { ZLinkPendingSessionRequest } from './session-requests';
|
|
21
20
|
export { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
22
21
|
export { ZLinkActorSessionBindingRegistry } from './actor-session-binding-registry';
|
|
@@ -26,6 +25,7 @@ export { DefaultZLinkBoundSession, DefaultZLinkBoundSessionFactory, DefaultZLink
|
|
|
26
25
|
export type { ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
|
|
27
26
|
export type { ZLinkBoundSessionDisconnectOptions, ZLinkBoundSessionSendOptions, ZLinkBoundSessionTransport } from './bound-session-service';
|
|
28
27
|
export interface ZLinkStreamBindingRuntimeOptions {
|
|
28
|
+
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
29
29
|
readonly transport?: ZLinkBoundSessionTransport;
|
|
30
30
|
readonly messageFactory?: ZLinkStreamMessageFactory;
|
|
31
31
|
readonly streamPayloadCodec?: ZLinkStreamPayloadCodec;
|
|
@@ -41,9 +41,7 @@ export interface ZLinkStreamBindingRuntimeOptions {
|
|
|
41
41
|
readonly routingId: unknown;
|
|
42
42
|
};
|
|
43
43
|
} | undefined;
|
|
44
|
-
readonly confirmRemoteActorSessionBinding?: (actor: ActorRef, sessionRid: ActorRef['nodeRid'], signal?: AbortSignal, options?:
|
|
45
|
-
readonly waitForAcknowledgement?: boolean;
|
|
46
|
-
}) => Promise<void>;
|
|
44
|
+
readonly confirmRemoteActorSessionBinding?: (actor: ActorRef, sessionRid: ActorRef['nodeRid'], signal?: AbortSignal, options?: ZLinkSessionBindingConfirmationOptions) => Promise<void>;
|
|
47
45
|
readonly errorSink?: () => {
|
|
48
46
|
reportRuntimeTaskException(taskName: string, error: unknown): void;
|
|
49
47
|
} | undefined;
|
|
@@ -144,6 +142,7 @@ export declare class ZLinkStreamBindingRuntime {
|
|
|
144
142
|
sendNativeBoundSessionError(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, packetName: string, requestSeq: bigint, error: unknown, metadata: ReadonlyMap<string, string>, signal?: AbortSignal): Promise<void>;
|
|
145
143
|
disconnectNativeBoundSession(node: ZLinkBackendActorSessionNode, actorRef: ActorRef, signal?: AbortSignal): Promise<void>;
|
|
146
144
|
disconnectBoundSession(actorId: string, signal?: AbortSignal): Promise<void>;
|
|
145
|
+
closeSessionBinding(actorId: string, expected: ZLinkSessionBindingIdentity, signal?: AbortSignal): Promise<void>;
|
|
147
146
|
relay(actor: DefaultZLinkSessionActor, payload: ZLinkMessage, signal?: AbortSignal, dispatchHeader?: ZLinkStreamFrameHeader): Promise<ZLinkSubmitResult>;
|
|
148
147
|
notifyDisconnected(actor: DefaultZLinkSessionActor, signal?: AbortSignal): Promise<void>;
|
|
149
148
|
createTextMessage(payload: string): Message;
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkStreamBindingRuntime = exports.ZLinkStreamSessionNodeRuntime = exports.ZLinkStreamSessionRuntime = exports.ZLinkStreamRuntimeManager = exports.DefaultZLinkSessionContext = exports.DefaultZLinkSessionActor = exports.DefaultZLinkBoundSessionFactory = exports.DefaultZLinkBoundSession = exports.ZLinkManagedStream = exports.zlinkStreamLz4CompressionCodec = exports.ZLinkActorSessionBindingRegistry = exports.ZLinkActorSessionLifecycleCoordinator = exports.ZLinkPendingSessionRequest = void 0;
|
|
4
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
5
|
+
const Options_1 = require("../../contracts/Locations/Options");
|
|
4
6
|
const configuration_1 = require("../configuration");
|
|
5
7
|
const service_session_binding_ingress_port_1 = require("../foundation/service-session-binding-ingress-port");
|
|
6
|
-
const
|
|
8
|
+
const application_job_queue_1 = require("../host/application-job-queue");
|
|
7
9
|
const actor_session_binding_registry_1 = require("./actor-session-binding-registry");
|
|
8
10
|
const actor_session_binding_runtime_owner_1 = require("./actor-session-binding-runtime-owner");
|
|
9
11
|
const actor_session_lifecycle_coordinator_1 = require("./actor-session-lifecycle-coordinator");
|
|
10
|
-
const
|
|
11
|
-
const application_job_queue_1 = require("../host/application-job-queue");
|
|
12
|
-
const stream_message_utils_1 = require("./stream-message-utils");
|
|
13
|
-
const session_context_1 = require("./session-context");
|
|
12
|
+
const bound_actor_relay_sender_1 = require("./bound-actor-relay-sender");
|
|
14
13
|
const bound_session_response_target_1 = require("./bound-session-response-target");
|
|
15
14
|
const bound_session_service_1 = require("./bound-session-service");
|
|
15
|
+
const protocol_1 = require("./protocol");
|
|
16
16
|
const session_actor_coordinator_1 = require("./session-actor-coordinator");
|
|
17
|
-
const
|
|
17
|
+
const session_context_1 = require("./session-context");
|
|
18
18
|
const session_provider_1 = require("./session-provider");
|
|
19
|
-
const
|
|
19
|
+
const stream_frame_factory_1 = require("./stream-frame-factory");
|
|
20
|
+
const stream_message_utils_1 = require("./stream-message-utils");
|
|
20
21
|
const stream_session_runtime_1 = require("./stream-session-runtime");
|
|
22
|
+
const DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
21
23
|
var session_requests_1 = require("./session-requests");
|
|
22
24
|
Object.defineProperty(exports, "ZLinkPendingSessionRequest", { enumerable: true, get: function () { return session_requests_1.ZLinkPendingSessionRequest; } });
|
|
23
25
|
var actor_session_lifecycle_coordinator_2 = require("./actor-session-lifecycle-coordinator");
|
|
@@ -94,9 +96,7 @@ class ZLinkStreamRuntimeManager {
|
|
|
94
96
|
node.nativeSessionServices.push(service);
|
|
95
97
|
const bindingOwner = (0, actor_session_binding_runtime_owner_1.actorSessionBindingRuntimeOwner)(this.options.bindingRuntime);
|
|
96
98
|
(0, service_session_binding_ingress_port_1.registerServiceSessionBindingIngressPort)(service, {
|
|
97
|
-
actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
|
|
98
|
-
retainOutbound: (actorId, delivery) => bindingOwner.retainRelocationOutbound(actorId, delivery),
|
|
99
|
-
clearOutbound: (actorId, error) => bindingOwner.clearRelocation(actorId, error)
|
|
99
|
+
actorSlot: (actorId, sessionRid) => bindingOwner.actorSlot(actorId, sessionRid)
|
|
100
100
|
});
|
|
101
101
|
nativeSessionRoutes.set(meshName, {
|
|
102
102
|
service,
|
|
@@ -140,16 +140,16 @@ class ZLinkStreamRuntimeManager {
|
|
|
140
140
|
}
|
|
141
141
|
async dispose() {
|
|
142
142
|
const nodes = [...this.nodes.values()];
|
|
143
|
-
this.nodes.clear();
|
|
144
143
|
for (const node of nodes.reverse()) {
|
|
145
144
|
await node.runtime?.dispose();
|
|
146
145
|
for (const service of node.nativeSessionServices) {
|
|
147
|
-
service.shutdown(
|
|
146
|
+
service.shutdown(DEFAULT_STREAM_SERVICE_SHUTDOWN_TIMEOUT_MS);
|
|
148
147
|
service.close();
|
|
149
148
|
}
|
|
150
149
|
await node.monitor?.dispose();
|
|
151
150
|
await node.socket.dispose();
|
|
152
151
|
}
|
|
152
|
+
this.nodes.clear();
|
|
153
153
|
}
|
|
154
154
|
async notifyServerDrain(meshName) {
|
|
155
155
|
await Promise.all([...this.nodes.values()]
|
|
@@ -170,6 +170,7 @@ class ZLinkStreamSessionRuntime extends stream_session_runtime_1.ZLinkStreamSess
|
|
|
170
170
|
// dispatch-error flow tracer.
|
|
171
171
|
const bindingRuntime = options.bindingRuntime ??
|
|
172
172
|
new ZLinkStreamBindingRuntime({
|
|
173
|
+
dispatchErrors: options.dispatchErrors,
|
|
173
174
|
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
174
175
|
});
|
|
175
176
|
super({
|
|
@@ -187,6 +188,7 @@ class ZLinkStreamSessionNodeRuntime extends stream_session_runtime_1.ZLinkStream
|
|
|
187
188
|
// process diagnostics Off gate (see ZLinkStreamSessionRuntime above).
|
|
188
189
|
const bindingRuntime = options.bindingRuntime ??
|
|
189
190
|
new ZLinkStreamBindingRuntime({
|
|
191
|
+
dispatchErrors: options.dispatchErrors,
|
|
190
192
|
flowCreationEnabled: () => options.dispatchErrors?.flow.flowCreationEnabled() ?? true
|
|
191
193
|
});
|
|
192
194
|
super({
|
|
@@ -208,7 +210,8 @@ class ZLinkStreamBindingRuntime {
|
|
|
208
210
|
...options,
|
|
209
211
|
actorBindTimeoutMs: options.actorBindTimeoutMs ?? DEFAULT_ACTOR_BIND_TIMEOUT_MS
|
|
210
212
|
};
|
|
211
|
-
this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(
|
|
213
|
+
this.routes = new actor_session_binding_registry_1.ZLinkActorSessionBindingRegistry(actor_session_binding_registry_1.DEFAULT_TERMINAL_RELOCATION_CAPACITY, runtimeOptions.sessionRelocationSealTimeoutMs ??
|
|
214
|
+
Options_1.zlinkDefaultLocationOptions.sessionRelocationSealTimeoutMs, runtimeOptions.errorSink);
|
|
212
215
|
this.compressionCodec = (0, stream_frame_factory_1.resolveStreamCompressionCodec)(runtimeOptions.streamCompression);
|
|
213
216
|
this.frameMessages = new stream_frame_factory_1.ZLinkStreamFrameMessageFactory(runtimeOptions);
|
|
214
217
|
this.boundSessions = new bound_session_service_1.ZLinkBoundSessionService(this.routes, this.frameMessages, runtimeOptions);
|
|
@@ -216,16 +219,9 @@ class ZLinkStreamBindingRuntime {
|
|
|
216
219
|
this.sessionActors = new session_actor_coordinator_1.ZLinkSessionActorCoordinator(this.routes, this, runtimeOptions, actorSessionLifecycle);
|
|
217
220
|
this.boundActorRelay = new bound_actor_relay_sender_1.ZLinkBoundActorRelaySender(this.routes, this.frameMessages, runtimeOptions, actorSessionLifecycle);
|
|
218
221
|
(0, actor_session_binding_runtime_owner_1.registerActorSessionBindingRuntimeOwner)(this, {
|
|
219
|
-
actorSlot: async (actorId, sessionRid) =>
|
|
220
|
-
const route = await this.routes.route(actorId);
|
|
221
|
-
return route !== undefined && route.sessionIdentity === sessionRid
|
|
222
|
-
? route.actorSlot
|
|
223
|
-
: undefined;
|
|
224
|
-
},
|
|
222
|
+
actorSlot: async (actorId, sessionRid) => (await this.routes.routeForSessionBinding(actorId, sessionRid))?.actorSlot,
|
|
225
223
|
sealRelocation: (claim, expected, signal) => this.routes.sealRelocation(claim, expected, signal),
|
|
226
224
|
relocationSnapshot: (actorId, sealId) => this.routes.relocationSnapshot(actorId, sealId),
|
|
227
|
-
retainRelocationOutbound: (actorId, operation, sealId) => this.routes.retainRelocationOutbound(actorId, operation, sealId),
|
|
228
|
-
discardRelocationOutbound: (actorId, sealId, error) => this.routes.discardRelocationOutbound(actorId, sealId, error),
|
|
229
225
|
applyRelocation: (...args) => this.routes.applyRelocation(...args),
|
|
230
226
|
observeRelocationTerminal: (...args) => this.routes.observeRelocationTerminal(...args),
|
|
231
227
|
clearRelocation: (actorId, error) => this.routes.clearRelocation(actorId, error),
|
|
@@ -328,6 +324,9 @@ class ZLinkStreamBindingRuntime {
|
|
|
328
324
|
async disconnectBoundSession(actorId, signal) {
|
|
329
325
|
await this.boundSessions.disconnectBoundSession(actorId, signal);
|
|
330
326
|
}
|
|
327
|
+
async closeSessionBinding(actorId, expected, signal) {
|
|
328
|
+
await this.boundSessions.closeSessionBinding(actorId, expected, signal);
|
|
329
|
+
}
|
|
331
330
|
async relay(actor, payload, signal, dispatchHeader) {
|
|
332
331
|
return await this.boundActorRelay.relay(actor, payload, signal, dispatchHeader);
|
|
333
332
|
}
|
|
@@ -5,6 +5,7 @@ import type { ZLinkBackendSendFlags, ZLinkBackendStreamSocket } from '../backend
|
|
|
5
5
|
import type { StreamSessionService } from '../foundation/service-runtime-contracts';
|
|
6
6
|
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
7
7
|
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
8
|
+
import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
|
|
8
9
|
import { type ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
9
10
|
import { ZLinkStreamCloseReasonCode } from './protocol';
|
|
10
11
|
import type { ZLinkActorSessionAuthorityFence } from './actor-session-binding-registry';
|
|
@@ -29,6 +30,8 @@ export declare class ZLinkManagedStream implements ZLinkStream {
|
|
|
29
30
|
get routingId(): RoutingId;
|
|
30
31
|
get actorBindingRoutingId(): RoutingId;
|
|
31
32
|
actorBindingGeneration(actorId: string): bigint | undefined;
|
|
33
|
+
/** The Session owner's registry snapshot of the Actor's current native binding. */
|
|
34
|
+
actorBinding(actorId: string): ServiceStreamSessionBinding | undefined;
|
|
32
35
|
private isTransportClosed;
|
|
33
36
|
get localAddr(): string | undefined;
|
|
34
37
|
get remoteAddr(): string | undefined;
|
|
@@ -8,6 +8,7 @@ const abort_1 = require("../abort");
|
|
|
8
8
|
const payload_codec_1 = require("../messaging/payload-codec");
|
|
9
9
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
10
10
|
const runtime_message_1 = require("../backend/runtime-message");
|
|
11
|
+
const diagnostic_text_1 = require("../diagnostics/diagnostic-text");
|
|
11
12
|
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
12
13
|
const protocol_1 = require("./protocol");
|
|
13
14
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
@@ -47,7 +48,11 @@ class ZLinkManagedStream {
|
|
|
47
48
|
return this.backendSessionRoutingId;
|
|
48
49
|
}
|
|
49
50
|
actorBindingGeneration(actorId) {
|
|
50
|
-
return this.nativeActorBindings.get(actorId)?.bindingGeneration;
|
|
51
|
+
return this.nativeActorBindings.get(actorId)?.binding?.bindingGeneration;
|
|
52
|
+
}
|
|
53
|
+
/** The Session owner's registry snapshot of the Actor's current native binding. */
|
|
54
|
+
actorBinding(actorId) {
|
|
55
|
+
return this.nativeActorBindings.get(actorId)?.binding;
|
|
51
56
|
}
|
|
52
57
|
isTransportClosed() {
|
|
53
58
|
return this.transportClosed;
|
|
@@ -77,8 +82,9 @@ class ZLinkManagedStream {
|
|
|
77
82
|
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
78
83
|
}
|
|
79
84
|
catch (error) {
|
|
80
|
-
if ((0, runtime_values_1.
|
|
81
|
-
return
|
|
85
|
+
if ((0, runtime_values_1.isZLinkBackendResultError)(error) && error.operation === 'submit') {
|
|
86
|
+
return (0, submission_result_1.classifySubmitResult)(error.result, 'STREAM submit', error.phase);
|
|
87
|
+
}
|
|
82
88
|
throw error;
|
|
83
89
|
}
|
|
84
90
|
}
|
|
@@ -157,7 +163,7 @@ class ZLinkManagedStream {
|
|
|
157
163
|
}
|
|
158
164
|
this.nativeActorBindings.set(actor.actorId, {
|
|
159
165
|
actor: nativeActor,
|
|
160
|
-
|
|
166
|
+
binding,
|
|
161
167
|
route
|
|
162
168
|
});
|
|
163
169
|
return;
|
|
@@ -179,7 +185,9 @@ class ZLinkManagedStream {
|
|
|
179
185
|
String(resolved.nodeRid) !== String(actor.nodeRid)) {
|
|
180
186
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.actorId}' native route fence does not match its ActorRef ` +
|
|
181
187
|
`(expected ${String(actor.nodeRid)}/${actor.objectGeneration}, ` +
|
|
182
|
-
`resolved ${
|
|
188
|
+
`resolved ${(0, diagnostic_text_1.diagnosticTextOrAbsent)(resolved === undefined
|
|
189
|
+
? undefined
|
|
190
|
+
: `${String(resolved.nodeRid)}/${resolved.generation}`)}, ` +
|
|
183
191
|
`terminal=${completion.terminalResult}, failure=${completion.failureErrno}).`);
|
|
184
192
|
}
|
|
185
193
|
}
|
|
@@ -198,12 +206,13 @@ class ZLinkManagedStream {
|
|
|
198
206
|
const binding = this.nativeActorBindings.get(actorId);
|
|
199
207
|
if (binding?.route !== undefined) {
|
|
200
208
|
const route = binding.route;
|
|
201
|
-
|
|
209
|
+
const bindingGeneration = binding.binding.bindingGeneration;
|
|
210
|
+
if (!this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
202
211
|
this.nativeActorBindings.delete(actorId);
|
|
203
212
|
return;
|
|
204
213
|
}
|
|
205
214
|
try {
|
|
206
|
-
await this.requireSuccessfulCompletion(route.completions.submit(() => route.service.unbindActor(this.backendRoutingId(), binding.actor,
|
|
215
|
+
await this.requireSuccessfulCompletion(route.completions.submit(() => route.service.unbindActor(this.backendRoutingId(), binding.actor, bindingGeneration, timeoutMs), signal), `Actor '${actorId}' native session unbind`,
|
|
207
216
|
// Destroy can remove the actor registry entry before the old
|
|
208
217
|
// session owner processes its cleanup. Both a disconnected route and
|
|
209
218
|
// that stale actor route are idempotent unbind outcomes.
|
|
@@ -214,7 +223,7 @@ class ZLinkManagedStream {
|
|
|
214
223
|
// tombstone. A transport teardown can therefore report an internal
|
|
215
224
|
// completion after the exact binding is already gone. Treat only that
|
|
216
225
|
// exact missing binding as stale cleanup; preserve other failures.
|
|
217
|
-
if (this.hasNativeBinding(route, actorId,
|
|
226
|
+
if (this.hasNativeBinding(route, actorId, bindingGeneration)) {
|
|
218
227
|
throw error;
|
|
219
228
|
}
|
|
220
229
|
}
|
|
@@ -99,9 +99,8 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
99
99
|
async executeScoped(packetName, signal) {
|
|
100
100
|
const localActor = this.options.localActorProvider?.() === true;
|
|
101
101
|
const remoteTarget = this.options.remoteBoundSessionTargetProvider();
|
|
102
|
-
const sealedRemoteTarget = remoteTarget?.relocationSealId !== undefined;
|
|
103
102
|
let nativeAttempted = false;
|
|
104
|
-
if (localActor
|
|
103
|
+
if (localActor) {
|
|
105
104
|
const result = await this.options.runtime.submitLocalBoundSession(this.options.actorId, this.message, packetName, this.selectedMetadata, signal);
|
|
106
105
|
if (result.status !== submission_result_1.ZLinkSubmitStatus.TargetNotFound) {
|
|
107
106
|
this.traceSubmitted(result, packetName);
|
|
@@ -136,7 +135,6 @@ class ZLinkNativeFallbackBoundSessionSendCall {
|
|
|
136
135
|
actorNodeRidHex: actorRef?.nodeRid?.toHex?.(),
|
|
137
136
|
actorGeneration: actorRef?.objectGeneration.toString(),
|
|
138
137
|
actorOwnershipGeneration: ownershipGeneration?.toString(),
|
|
139
|
-
relocationSealId: remoteTarget.relocationSealId,
|
|
140
138
|
message: this.message,
|
|
141
139
|
boundPacketName: packetName,
|
|
142
140
|
metadata: this.selectedMetadata,
|
|
@@ -1,40 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode, ZlinkStreamCodec as ZLinkStreamCodec, ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags, ZlinkStreamMessageKind as ZLinkStreamMessageKind } from '@zlink-systems/stream-wire';
|
|
2
2
|
import type { ZLinkFlowOrigin } from '../../contracts';
|
|
3
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
4
|
+
export { ZlinkStreamMessageKind as ZLinkStreamMessageKind, ZlinkStreamHeaderFlags as ZLinkStreamHeaderFlags, ZlinkStreamCloseReasonCode as ZLinkStreamCloseReasonCode } from '@zlink-systems/stream-wire';
|
|
3
5
|
export { utf8Decode, utf8Encode } from '@zlink-systems/stream-wire';
|
|
4
|
-
export
|
|
5
|
-
Raw = 0,
|
|
6
|
-
Json = 1,
|
|
7
|
-
MessagePack = 2,
|
|
8
|
-
Protobuf = 3
|
|
9
|
-
}
|
|
6
|
+
export { ZlinkStreamCodec as ZLinkStreamCodec } from '@zlink-systems/stream-wire';
|
|
10
7
|
export declare function streamCodecContentType(codec: ZLinkStreamCodec): string;
|
|
11
8
|
export declare function streamCodecForContentType(contentType: string): ZLinkStreamCodec;
|
|
12
|
-
export declare
|
|
13
|
-
|
|
14
|
-
Request = 2,
|
|
15
|
-
Response = 3,
|
|
16
|
-
Error = 4,
|
|
17
|
-
Control = 5
|
|
18
|
-
}
|
|
19
|
-
export declare enum ZLinkStreamHeaderFlags {
|
|
20
|
-
None = 0,
|
|
21
|
-
HasRequestSeq = 1,
|
|
22
|
-
HasMetadata = 2,
|
|
23
|
-
PayloadCompressed = 4,
|
|
24
|
-
HasCorrelationId = 8,
|
|
25
|
-
HasFlowId = 16,
|
|
26
|
-
HasActorSlot = 32
|
|
27
|
-
}
|
|
28
|
-
export declare enum ZLinkStreamCloseReasonCode {
|
|
29
|
-
ClientClose = 1,
|
|
30
|
-
IdleTimeout = 2,
|
|
31
|
-
HeartbeatTimeout = 3,
|
|
32
|
-
ServerDrain = 4,
|
|
33
|
-
ProtocolError = 5,
|
|
34
|
-
TransportError = 6
|
|
35
|
-
}
|
|
36
|
-
export declare const ZLINK_STREAM_HEARTBEAT_PING = "$zlink.heartbeat.ping";
|
|
37
|
-
export declare const ZLINK_STREAM_HEARTBEAT_PONG = "$zlink.heartbeat.pong";
|
|
9
|
+
export declare const ZLINK_STREAM_HEARTBEAT_PING: "$zlink.heartbeat.ping";
|
|
10
|
+
export declare const ZLINK_STREAM_HEARTBEAT_PONG: "$zlink.heartbeat.pong";
|
|
38
11
|
export interface ZLinkStreamFrameHeader {
|
|
39
12
|
readonly kind: ZLinkStreamMessageKind;
|
|
40
13
|
readonly codec: ZLinkStreamCodec;
|