@zlink-systems/framework 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS } from './bound-actor-relay-sender';
|
|
1
2
|
import {
|
|
2
3
|
ZLinkFrameworkInternalErrorKind,
|
|
3
4
|
createInternalFrameworkException
|
|
@@ -13,6 +14,7 @@ import {
|
|
|
13
14
|
import { ZLinkActorSessionLifecycleCoordinator } from './actor-session-lifecycle-coordinator';
|
|
14
15
|
import { ZLinkManagedStream } from './managed-stream';
|
|
15
16
|
import { DefaultZLinkSessionActor, DefaultZLinkSessionContext } from './session-context';
|
|
17
|
+
import type { ZLinkSessionBindingConfirmationOptions } from './stream-binding-runtime-ports';
|
|
16
18
|
|
|
17
19
|
export interface ZLinkSessionActorCoordinatorOptions {
|
|
18
20
|
readonly actorBindTimeoutMs?: number;
|
|
@@ -31,7 +33,7 @@ export interface ZLinkSessionActorCoordinatorOptions {
|
|
|
31
33
|
actor: ActorRef,
|
|
32
34
|
sessionRid: ActorRef['nodeRid'],
|
|
33
35
|
signal?: AbortSignal,
|
|
34
|
-
options?:
|
|
36
|
+
options?: ZLinkSessionBindingConfirmationOptions
|
|
35
37
|
) => Promise<void>;
|
|
36
38
|
readonly errorSink?: () =>
|
|
37
39
|
| {
|
|
@@ -181,7 +183,13 @@ export class ZLinkSessionActorCoordinator {
|
|
|
181
183
|
boundActorRef,
|
|
182
184
|
this.actorBindingRoutingId(context),
|
|
183
185
|
undefined,
|
|
184
|
-
{
|
|
186
|
+
{
|
|
187
|
+
waitForAcknowledgement,
|
|
188
|
+
binding:
|
|
189
|
+
context.stream instanceof ZLinkManagedStream
|
|
190
|
+
? context.stream.actorBinding(actorRef.actorId)
|
|
191
|
+
: undefined
|
|
192
|
+
}
|
|
185
193
|
);
|
|
186
194
|
const reportFailure = (error: unknown) => {
|
|
187
195
|
// A fire-and-forget route update retains the already-current binding;
|
|
@@ -204,7 +212,7 @@ export class ZLinkSessionActorCoordinator {
|
|
|
204
212
|
if (context.stream instanceof ZLinkManagedStream) {
|
|
205
213
|
await context.stream.unbindActor(
|
|
206
214
|
actorRef.actorId,
|
|
207
|
-
this.options.actorBindTimeoutMs ??
|
|
215
|
+
this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS
|
|
208
216
|
);
|
|
209
217
|
}
|
|
210
218
|
} catch (cleanupError) {
|
|
@@ -354,7 +362,11 @@ export class ZLinkSessionActorCoordinator {
|
|
|
354
362
|
true
|
|
355
363
|
);
|
|
356
364
|
}
|
|
357
|
-
route
|
|
365
|
+
// A location refresh never changes the route's Session binding
|
|
366
|
+
// generation; the native bind owns it.
|
|
367
|
+
route.actor.updateRef(
|
|
368
|
+
withBindingGeneration(normalizedActorRef, bindingGenerationOf(route.actor.ref), undefined)
|
|
369
|
+
);
|
|
358
370
|
if (authorityFence !== undefined) {
|
|
359
371
|
await this.routes.updateAuthorityFence(normalizedActorRef.actorId, authorityFence);
|
|
360
372
|
}
|
|
@@ -463,7 +475,7 @@ export class ZLinkSessionActorCoordinator {
|
|
|
463
475
|
try {
|
|
464
476
|
await context.stream.bindActor(
|
|
465
477
|
actorRef,
|
|
466
|
-
this.options.actorBindTimeoutMs ??
|
|
478
|
+
this.options.actorBindTimeoutMs ?? DEFAULT_RELAY_ACTOR_BIND_TIMEOUT_MS,
|
|
467
479
|
signal,
|
|
468
480
|
context.actorBindingReplacedHandler,
|
|
469
481
|
authorityFence
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
2
1
|
import type {
|
|
3
2
|
ZLinkBoundSessionSendCall,
|
|
4
3
|
ZLinkSessionReplyCall,
|
|
5
4
|
ZLinkSessionSendCall
|
|
6
5
|
} from '../../contracts';
|
|
7
|
-
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
8
|
-
import { requireOneWayCompletion } from '../messaging/submission-result';
|
|
9
6
|
import type { Message } from '../../contracts/Common/Message';
|
|
7
|
+
import { ZLINK_MAX_SEND_TIMEOUT_MS } from '../../contracts/Configuration/SendTimeoutValidation';
|
|
10
8
|
import { throwIfAborted } from '../abort';
|
|
11
9
|
import { ZLinkConfigurationException } from '../configuration';
|
|
10
|
+
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
11
|
+
import { type ZLinkSubmitResult, requireOneWayCompletion } from '../messaging/submission-result';
|
|
12
|
+
|
|
12
13
|
import {
|
|
13
14
|
ensureSingleSubmit,
|
|
14
15
|
resolvePacketName,
|
|
@@ -135,9 +136,9 @@ export class DefaultZLinkSessionSendCall implements ZLinkSessionSendCall {
|
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
timeout(timeoutMs: number): this {
|
|
138
|
-
if (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs >
|
|
139
|
+
if (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > ZLINK_MAX_SEND_TIMEOUT_MS) {
|
|
139
140
|
throw new ZLinkConfigurationException(
|
|
140
|
-
|
|
141
|
+
`STREAM session send timeout must be an integer from 1 through ${ZLINK_MAX_SEND_TIMEOUT_MS} milliseconds.`
|
|
141
142
|
);
|
|
142
143
|
}
|
|
143
144
|
this.selectedTimeoutMs = timeoutMs;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
2
1
|
import type {
|
|
3
2
|
ActorRef,
|
|
4
3
|
RoutingId,
|
|
5
4
|
Type,
|
|
6
|
-
ZLinkMessage,
|
|
7
5
|
ZLinkActor,
|
|
8
6
|
ZLinkBoundSession,
|
|
7
|
+
ZLinkMessage,
|
|
9
8
|
ZLinkSessionActor,
|
|
10
9
|
ZLinkSessionActors,
|
|
11
10
|
ZLinkSessionClient,
|
|
@@ -17,18 +16,27 @@ import type {
|
|
|
17
16
|
ZLinkSessionSendCall,
|
|
18
17
|
ZLinkStream
|
|
19
18
|
} from '../../contracts';
|
|
20
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
21
|
-
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
22
|
-
import { requireOneWayCompletion } from '../messaging/submission-result';
|
|
23
19
|
import type { Message } from '../../contracts/Common/Message';
|
|
20
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
24
21
|
import { readZLinkDecoratorMetadata } from '../../contracts/Handlers/Attributes';
|
|
25
22
|
import { throwIfAborted } from '../abort';
|
|
23
|
+
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
26
24
|
import { ZLinkConfigurationException } from '../configuration';
|
|
25
|
+
import {
|
|
26
|
+
guardStateLaneCompletion,
|
|
27
|
+
isStructuralGuardEnabled,
|
|
28
|
+
trackDiagnosticCompletion
|
|
29
|
+
} from '../execution/state-lane';
|
|
30
|
+
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
31
|
+
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
32
|
+
import { ZLinkFrameworkInternalErrorKind } from '../framework-errors-internal';
|
|
33
|
+
import { type ZLinkSubmitResult, requireOneWayCompletion } from '../messaging/submission-result';
|
|
34
|
+
|
|
27
35
|
import {
|
|
28
36
|
messageToBytes,
|
|
29
|
-
type ZLinkStreamFrameHeader,
|
|
30
37
|
ZLinkStreamHeaderFlags,
|
|
31
38
|
ZLinkStreamMessageKind,
|
|
39
|
+
type ZLinkStreamFrameHeader,
|
|
32
40
|
type ZLinkStreamReplyMessageKind
|
|
33
41
|
} from './protocol';
|
|
34
42
|
import {
|
|
@@ -36,11 +44,8 @@ import {
|
|
|
36
44
|
DefaultZLinkSessionReplyCall,
|
|
37
45
|
DefaultZLinkSessionSendCall
|
|
38
46
|
} from './session-calls';
|
|
39
|
-
import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './session-requests';
|
|
40
47
|
import { ZLinkSessionLocalActorBindings } from './session-local-actors';
|
|
41
|
-
import type
|
|
42
|
-
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
43
|
-
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
48
|
+
import { ZLinkSessionRequestTracker, type ZLinkPendingSessionRequest } from './session-requests';
|
|
44
49
|
|
|
45
50
|
export interface ZLinkSessionContextStream extends ZLinkStream {
|
|
46
51
|
writeRaw(payload: Message, flags?: number): boolean;
|
|
@@ -652,3 +657,42 @@ function sameRetiredSession(
|
|
|
652
657
|
left.retiredBindingGeneration === right.retiredBindingGeneration
|
|
653
658
|
);
|
|
654
659
|
}
|
|
660
|
+
|
|
661
|
+
if (isStructuralGuardEnabled()) {
|
|
662
|
+
const controlsGetter = Object.getOwnPropertyDescriptor(
|
|
663
|
+
DefaultZLinkSessionContext.prototype,
|
|
664
|
+
'actorSlotControls'
|
|
665
|
+
)?.get;
|
|
666
|
+
if (controlsGetter !== undefined) {
|
|
667
|
+
Object.defineProperty(DefaultZLinkSessionContext.prototype, 'actorSlotControls', {
|
|
668
|
+
configurable: true,
|
|
669
|
+
get(this: DefaultZLinkSessionContext) {
|
|
670
|
+
const controls = controlsGetter.call(this) as
|
|
671
|
+
| {
|
|
672
|
+
enqueueBound(actorSlot: number, actorId: string): Promise<void>;
|
|
673
|
+
enqueueUnbound(actorSlot: number): Promise<void>;
|
|
674
|
+
}
|
|
675
|
+
| undefined;
|
|
676
|
+
if (controls === undefined) return undefined;
|
|
677
|
+
return {
|
|
678
|
+
enqueueBound: (actorSlot: number, actorId: string) =>
|
|
679
|
+
guardStateLaneCompletion(
|
|
680
|
+
trackDiagnosticCompletion(
|
|
681
|
+
controls.enqueueBound(actorSlot, actorId),
|
|
682
|
+
`binding transport bound ${actorId}`
|
|
683
|
+
),
|
|
684
|
+
'binding transport completion'
|
|
685
|
+
),
|
|
686
|
+
enqueueUnbound: (actorSlot: number) =>
|
|
687
|
+
guardStateLaneCompletion(
|
|
688
|
+
trackDiagnosticCompletion(
|
|
689
|
+
controls.enqueueUnbound(actorSlot),
|
|
690
|
+
`binding transport unbound ${actorSlot}`
|
|
691
|
+
),
|
|
692
|
+
'binding transport completion'
|
|
693
|
+
)
|
|
694
|
+
};
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UINT64_MAX } from '@zlink-systems/stream-wire';
|
|
1
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
2
3
|
import { copyMessage } from './stream-message-utils';
|
|
3
4
|
|
|
@@ -102,7 +103,7 @@ export class ZLinkSessionRequestTracker {
|
|
|
102
103
|
|
|
103
104
|
private next(): bigint {
|
|
104
105
|
do {
|
|
105
|
-
this.nextRequestSeq = (this.nextRequestSeq + 1n) &
|
|
106
|
+
this.nextRequestSeq = (this.nextRequestSeq + 1n) & UINT64_MAX;
|
|
106
107
|
} while (this.nextRequestSeq === 0n);
|
|
107
108
|
return this.nextRequestSeq;
|
|
108
109
|
}
|
|
@@ -55,8 +55,8 @@ export class ZLinkSessionSerialExecutor {
|
|
|
55
55
|
}
|
|
56
56
|
const boundWork = bindApplicationJobPermit(work);
|
|
57
57
|
return hasApplicationJobPermit()
|
|
58
|
-
? this.scheduler.submitPreAdmitted(boundWork, { lane: '
|
|
59
|
-
: this.scheduler.submit(boundWork, { lane: '
|
|
58
|
+
? this.scheduler.submitPreAdmitted(boundWork, { lane: 'application' })
|
|
59
|
+
: this.scheduler.submit(boundWork, { lane: 'application' });
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
private submit(
|
|
@@ -3,6 +3,7 @@ import type { ZLinkBackendActorSessionNode } from '../backend';
|
|
|
3
3
|
import type { ZLinkSubmitResult } from '../messaging/submission-result';
|
|
4
4
|
import type { DefaultZLinkSessionActor } from './session-context';
|
|
5
5
|
import type { ZLinkBoundSessionResponseTarget } from './bound-session-response-target';
|
|
6
|
+
import type { ServiceStreamSessionBinding } from '../foundation/service-runtime-contracts';
|
|
6
7
|
|
|
7
8
|
export interface ZLinkStreamActorLookupPort {
|
|
8
9
|
find(actorId: string): Promise<DefaultZLinkSessionActor | undefined>;
|
|
@@ -74,8 +75,28 @@ export interface ZLinkBoundSessionResponsePort {
|
|
|
74
75
|
): Promise<boolean>;
|
|
75
76
|
}
|
|
76
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Session–Actor binding §5: the Session owner's registry snapshot travels with
|
|
80
|
+
* the bind confirmation so a same-node Actor owner installs the same identity a
|
|
81
|
+
* remote command 38 would carry.
|
|
82
|
+
*/
|
|
83
|
+
export interface ZLinkSessionBindingConfirmationOptions {
|
|
84
|
+
readonly waitForAcknowledgement?: boolean;
|
|
85
|
+
readonly binding?: ServiceStreamSessionBinding;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** The exact Session binding identity a relocation validated (§8.1). */
|
|
89
|
+
export interface ZLinkSessionBindingIdentity {
|
|
90
|
+
readonly sessionRid: string;
|
|
91
|
+
readonly bindingGeneration: bigint;
|
|
92
|
+
}
|
|
93
|
+
|
|
77
94
|
export interface ZLinkRemoteBoundSessionPort extends ZLinkStreamActorLifecyclePort {
|
|
78
|
-
|
|
95
|
+
closeSessionBinding(
|
|
96
|
+
actorId: string,
|
|
97
|
+
expected: ZLinkSessionBindingIdentity,
|
|
98
|
+
signal?: AbortSignal
|
|
99
|
+
): Promise<void>;
|
|
79
100
|
sendLocalBoundSession(
|
|
80
101
|
actorId: string,
|
|
81
102
|
message: unknown,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ZLinkStreamCompressionCodec, ZLinkStreamCompressionOptions } from '../../contracts';
|
|
2
|
+
import { defaultMaxDecompressedPayloadSize } from '@zlink-systems/stream-wire';
|
|
2
3
|
import type { Message } from '../../contracts/Common/Message';
|
|
3
4
|
import { ZLinkBufferMessage as ZLinkBindingMessage } from '../backend/runtime-message';
|
|
4
5
|
import { currentOrCreateFlow } from '../diagnostics/flow-context';
|
|
@@ -18,8 +19,6 @@ import {
|
|
|
18
19
|
type ZLinkStreamReplyMessageKind
|
|
19
20
|
} from './protocol';
|
|
20
21
|
|
|
21
|
-
const DEFAULT_MAX_DECOMPRESSED_STREAM_PAYLOAD_SIZE = 64 * 1024;
|
|
22
|
-
|
|
23
22
|
export interface ZLinkStreamFramePayloadCodec {
|
|
24
23
|
encode(
|
|
25
24
|
payload: unknown,
|
|
@@ -245,7 +244,7 @@ function compressStreamPayload(
|
|
|
245
244
|
export function decompressStreamPayload(
|
|
246
245
|
payload: Uint8Array,
|
|
247
246
|
codec: ZLinkStreamCompressionCodec | undefined,
|
|
248
|
-
maxDecompressedSize =
|
|
247
|
+
maxDecompressedSize = defaultMaxDecompressedPayloadSize
|
|
249
248
|
): Uint8Array {
|
|
250
249
|
if (codec === undefined) {
|
|
251
250
|
throw new Error('Compression codec is not configured.');
|
|
@@ -1,61 +1,66 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
createInternalFrameworkException
|
|
4
|
-
} from '../framework-errors-internal';
|
|
5
|
-
import type { ZLinkMessageSerializer, RoutingId, ZLinkSession } from '../../contracts';
|
|
1
|
+
import type { RoutingId, ZLinkMessageSerializer, ZLinkSession } from '../../contracts';
|
|
2
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
6
3
|
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
7
|
-
import {
|
|
4
|
+
import { DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
|
|
8
5
|
import {
|
|
9
|
-
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
|
|
10
6
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
11
7
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
12
8
|
ZLinkDispatchErrorSurface,
|
|
13
|
-
ZLinkDispatchMessageKind
|
|
9
|
+
ZLinkDispatchMessageKind,
|
|
10
|
+
ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome
|
|
14
11
|
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
15
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
16
12
|
import { throwIfAborted } from '../abort';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
import { type ZLinkApplicationWorkClaim, shouldCompactBackingArray } from '../admission';
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
releaseApplicationJobPermitBeforeHandler,
|
|
17
|
+
runWithApplicationJobPermit
|
|
18
|
+
} from '../application-jobs/application-job-queue-scope';
|
|
19
|
+
import type {
|
|
20
|
+
ApplicationJobPermitPort,
|
|
21
|
+
ApplicationJobQueuePort
|
|
22
|
+
} from '../application-jobs/contracts';
|
|
22
23
|
import type {
|
|
24
|
+
ZLinkBackendReadablePoller,
|
|
23
25
|
ZLinkBackendSocketMonitor,
|
|
24
26
|
ZLinkBackendSocketMonitorEvent,
|
|
25
|
-
ZLinkBackendReadablePoller,
|
|
26
27
|
ZLinkBackendStreamPacket,
|
|
27
28
|
ZLinkBackendStreamSocket
|
|
28
29
|
} from '../backend/contracts';
|
|
29
30
|
import type { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
31
|
+
import { ZLinkDispatchErrorReporter, ZLinkRouteDisconnectedError } from '../channels';
|
|
32
|
+
import { type ZLinkRuntimeMetrics, flowIfEnabled } from '../diagnostics';
|
|
33
|
+
|
|
34
|
+
import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
|
|
35
|
+
import { ZLinkSocketNativeEventType } from '../diagnostics/internal-event-contracts';
|
|
36
|
+
import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
|
|
30
37
|
import type { StreamSessionService } from '../foundation/service-runtime-contracts';
|
|
38
|
+
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
39
|
+
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
40
|
+
import {
|
|
41
|
+
createInternalFrameworkException,
|
|
42
|
+
ZLinkFrameworkInternalErrorKind
|
|
43
|
+
} from '../framework-errors-internal';
|
|
44
|
+
import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
45
|
+
import { boundSessionErrorPayload } from './bound-session-response-target';
|
|
46
|
+
import {
|
|
47
|
+
streamSessionIdFromRoutingId,
|
|
48
|
+
ZLinkManagedStream,
|
|
49
|
+
type ZLinkNativeSessionRoute
|
|
50
|
+
} from './managed-stream';
|
|
31
51
|
import {
|
|
32
52
|
decodeStreamHeader,
|
|
33
53
|
messageToBytes,
|
|
34
54
|
streamCodecContentType,
|
|
35
|
-
type ZLinkStreamFrameHeader,
|
|
36
55
|
ZLINK_STREAM_HEARTBEAT_PING,
|
|
37
56
|
ZLINK_STREAM_HEARTBEAT_PONG,
|
|
38
57
|
ZLinkStreamCloseReasonCode,
|
|
39
|
-
ZLinkStreamMessageKind
|
|
58
|
+
ZLinkStreamMessageKind,
|
|
59
|
+
type ZLinkStreamFrameHeader
|
|
40
60
|
} from './protocol';
|
|
41
|
-
import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
|
|
42
|
-
import {
|
|
43
|
-
streamSessionIdFromRoutingId,
|
|
44
|
-
ZLinkManagedStream,
|
|
45
|
-
type ZLinkNativeSessionRoute
|
|
46
|
-
} from './managed-stream';
|
|
47
61
|
import { createSessionDispatchContext, DefaultZLinkSessionContext } from './session-context';
|
|
48
62
|
import { ZLinkSessionSerialExecutor } from './session-serial-executor';
|
|
49
|
-
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
50
63
|
import { ownedMessage } from './stream-message-utils';
|
|
51
|
-
import type { ServiceActorRef } from '../foundation/service-stateful-registry';
|
|
52
|
-
import type { ServiceRetiredBoundSessionRouteFence } from '../foundation/service-stateful-wire-codec';
|
|
53
|
-
import type {
|
|
54
|
-
ApplicationJobPermitPort,
|
|
55
|
-
ApplicationJobQueuePort
|
|
56
|
-
} from '../application-jobs/contracts';
|
|
57
|
-
import { runWithApplicationJobPermit } from '../application-jobs/application-job-queue-scope';
|
|
58
|
-
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
59
64
|
|
|
60
65
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
61
66
|
const ZLINK_RECV_DONT_WAIT = 1;
|
|
@@ -63,7 +68,6 @@ const ZLINK_STREAM_HEARTBEAT_INTERVAL_MS = 1_000;
|
|
|
63
68
|
const ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS = 5_000;
|
|
64
69
|
const ZLINK_STREAM_APPLICATION_IDLE_TIMEOUT_MS = 30_000;
|
|
65
70
|
const ZLINK_STREAM_RECEIVE_FRAME_BATCH_LIMIT = 64;
|
|
66
|
-
const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CALLBACK_TIMEOUT_MS = 30_000;
|
|
67
71
|
const ZLINK_STREAM_ACTOR_BINDING_REPLACEMENT_CLOSE_DELAY_MS = 100;
|
|
68
72
|
const ZLINK_STREAM_MONITOR_IDLE_MIN_DELAY_MS = 1;
|
|
69
73
|
const ZLINK_STREAM_MONITOR_IDLE_MAX_DELAY_MS = 20;
|
|
@@ -162,7 +166,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
162
166
|
private metricsClosed = false;
|
|
163
167
|
private readonly livenessClock: ZLinkStreamLivenessClock;
|
|
164
168
|
private lastApplicationActivityAt = 0;
|
|
165
|
-
private
|
|
169
|
+
private lastInboundFrameAt = 0;
|
|
166
170
|
private livenessTimer: unknown;
|
|
167
171
|
|
|
168
172
|
constructor(
|
|
@@ -243,6 +247,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
243
247
|
terminalOwner?: ZLinkRetainedStreamOwner,
|
|
244
248
|
applicationJobPermit?: ApplicationJobPermitPort
|
|
245
249
|
): void {
|
|
250
|
+
this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, this.livenessClock.now());
|
|
246
251
|
let terminalReleased = false;
|
|
247
252
|
const releaseTerminal = (): void => {
|
|
248
253
|
if (terminalReleased) return;
|
|
@@ -389,7 +394,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
389
394
|
}
|
|
390
395
|
forcedClose = true;
|
|
391
396
|
void this.close().catch((error) => this.options.onError?.(error));
|
|
392
|
-
}, this.options.replacementCallbackTimeoutMs ??
|
|
397
|
+
}, this.options.replacementCallbackTimeoutMs ?? DEFAULT_SESSION_REPLACEMENT_CALLBACK_TIMEOUT_MS);
|
|
393
398
|
|
|
394
399
|
const callback = session.onActorBindingReplaced;
|
|
395
400
|
if (callback === undefined) {
|
|
@@ -453,10 +458,12 @@ export class ZLinkStreamSessionRuntime {
|
|
|
453
458
|
return;
|
|
454
459
|
}
|
|
455
460
|
this.connected = true;
|
|
456
|
-
|
|
461
|
+
const connectedAt = this.livenessClock.now();
|
|
462
|
+
this.lastApplicationActivityAt = connectedAt;
|
|
463
|
+
this.lastInboundFrameAt = Math.max(this.lastInboundFrameAt, connectedAt);
|
|
457
464
|
this.scheduleLivenessCheck();
|
|
458
|
-
this.options.metrics?.change(
|
|
459
|
-
this.options.metrics?.count(
|
|
465
|
+
this.options.metrics?.change(METRIC_NAMES.StreamConnectionsActive, 1, { transport: 'tcp' });
|
|
466
|
+
this.options.metrics?.count(METRIC_NAMES.StreamConnectionsOpened, 1, { transport: 'tcp' });
|
|
460
467
|
const session = await this.requireSession();
|
|
461
468
|
await session.onConnected?.(this.context);
|
|
462
469
|
}
|
|
@@ -650,7 +657,6 @@ export class ZLinkStreamSessionRuntime {
|
|
|
650
657
|
return;
|
|
651
658
|
}
|
|
652
659
|
if (header.name === ZLINK_STREAM_HEARTBEAT_PONG) {
|
|
653
|
-
this.awaitingPongSince = undefined;
|
|
654
660
|
return;
|
|
655
661
|
}
|
|
656
662
|
if (header.name === ZLINK_STREAM_HEARTBEAT_PING) {
|
|
@@ -691,10 +697,7 @@ export class ZLinkStreamSessionRuntime {
|
|
|
691
697
|
);
|
|
692
698
|
return;
|
|
693
699
|
}
|
|
694
|
-
if (
|
|
695
|
-
this.awaitingPongSince !== undefined &&
|
|
696
|
-
now - this.awaitingPongSince >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS
|
|
697
|
-
) {
|
|
700
|
+
if (now - this.lastInboundFrameAt >= ZLINK_STREAM_HEARTBEAT_TIMEOUT_MS) {
|
|
698
701
|
await this.closeForLiveness(
|
|
699
702
|
ZLinkStreamCloseReasonCode.HeartbeatTimeout,
|
|
700
703
|
'heartbeat_timeout',
|
|
@@ -703,7 +706,6 @@ export class ZLinkStreamSessionRuntime {
|
|
|
703
706
|
return;
|
|
704
707
|
}
|
|
705
708
|
await this.stream.writeControl(ZLINK_STREAM_HEARTBEAT_PING);
|
|
706
|
-
this.awaitingPongSince ??= now;
|
|
707
709
|
this.scheduleLivenessCheck();
|
|
708
710
|
}
|
|
709
711
|
|
|
@@ -829,8 +831,8 @@ export class ZLinkStreamSessionRuntime {
|
|
|
829
831
|
private async cleanup(): Promise<void> {
|
|
830
832
|
if (this.connected && !this.metricsClosed) {
|
|
831
833
|
this.metricsClosed = true;
|
|
832
|
-
this.options.metrics?.change(
|
|
833
|
-
this.options.metrics?.count(
|
|
834
|
+
this.options.metrics?.change(METRIC_NAMES.StreamConnectionsActive, -1, { transport: 'tcp' });
|
|
835
|
+
this.options.metrics?.count(METRIC_NAMES.StreamConnectionsClosed, 1, {
|
|
834
836
|
transport: 'tcp',
|
|
835
837
|
close_reason: normalizeStreamCloseReason(this.closeReason)
|
|
836
838
|
});
|
|
@@ -956,7 +958,6 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
956
958
|
private readonly unaddressedMonitorSessions: Array<string | undefined> = [];
|
|
957
959
|
private unaddressedMonitorSessionHead = 0;
|
|
958
960
|
private unaddressedMonitorSessionCount = 0;
|
|
959
|
-
private readonly disconnectedEndpoints = new Set<string>();
|
|
960
961
|
private pendingEndpointlessDisconnect:
|
|
961
962
|
| {
|
|
962
963
|
readonly session: ZLinkStreamSessionRuntime;
|
|
@@ -1238,18 +1239,12 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1238
1239
|
}
|
|
1239
1240
|
switch (event.nativeEvent) {
|
|
1240
1241
|
case ZLinkSocketNativeEventType.ConnectionReady:
|
|
1242
|
+
if (!event.readyEdge) return;
|
|
1241
1243
|
this.activityVersion += 1;
|
|
1242
|
-
{
|
|
1243
|
-
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
1244
|
-
if (this.disconnectedEndpoints.delete(endpointKey)) {
|
|
1245
|
-
return;
|
|
1246
|
-
}
|
|
1247
|
-
}
|
|
1248
1244
|
if (event.routingId === undefined) {
|
|
1249
1245
|
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
1250
1246
|
const unaddressed = this.firstUnaddressedSession();
|
|
1251
1247
|
if (unaddressed !== undefined) {
|
|
1252
|
-
this.disconnectedEndpoints.delete(endpointKey);
|
|
1253
1248
|
unaddressed.enqueueConnected(event.localAddr, event.remoteAddr);
|
|
1254
1249
|
this.enqueueUnaddressedMonitorSession(unaddressed.stream.sessionId);
|
|
1255
1250
|
return;
|
|
@@ -1272,7 +1267,6 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1272
1267
|
case ZLinkSocketNativeEventType.Disconnected:
|
|
1273
1268
|
{
|
|
1274
1269
|
const endpointKey = streamMonitorEndpointKey(event.localAddr, event.remoteAddr);
|
|
1275
|
-
this.disconnectedEndpoints.add(endpointKey);
|
|
1276
1270
|
this.removePendingConnectionMetadata(endpointKey);
|
|
1277
1271
|
const session = this.resolveMonitorSession(event);
|
|
1278
1272
|
const error = new Error(`Stream disconnected: ${event.nativeEvent}/${event.value}`);
|
|
@@ -1350,8 +1344,10 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1350
1344
|
this.pendingConnectionMetadata.length = 0;
|
|
1351
1345
|
this.pendingConnectionMetadataHead = 0;
|
|
1352
1346
|
} else if (
|
|
1353
|
-
|
|
1354
|
-
|
|
1347
|
+
shouldCompactBackingArray(
|
|
1348
|
+
this.pendingConnectionMetadataHead,
|
|
1349
|
+
this.pendingConnectionMetadata.length
|
|
1350
|
+
)
|
|
1355
1351
|
) {
|
|
1356
1352
|
this.pendingConnectionMetadata.splice(0, this.pendingConnectionMetadataHead);
|
|
1357
1353
|
this.pendingConnectionMetadataHead = 0;
|
|
@@ -1379,8 +1375,10 @@ export class ZLinkStreamSessionNodeRuntime {
|
|
|
1379
1375
|
this.unaddressedMonitorSessions.length = 0;
|
|
1380
1376
|
this.unaddressedMonitorSessionHead = 0;
|
|
1381
1377
|
} else if (
|
|
1382
|
-
|
|
1383
|
-
|
|
1378
|
+
shouldCompactBackingArray(
|
|
1379
|
+
this.unaddressedMonitorSessionHead,
|
|
1380
|
+
this.unaddressedMonitorSessions.length
|
|
1381
|
+
)
|
|
1384
1382
|
) {
|
|
1385
1383
|
this.unaddressedMonitorSessions.splice(0, this.unaddressedMonitorSessionHead);
|
|
1386
1384
|
this.unaddressedMonitorSessionHead = 0;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ZLinkFrameworkInternalErrorKind,
|
|
3
|
-
createInternalFrameworkException
|
|
4
|
-
} from '../framework-errors-internal';
|
|
5
1
|
import { Worker } from 'node:worker_threads';
|
|
6
|
-
import type
|
|
7
|
-
|
|
8
|
-
import type { ZLinkWorkerOptions } from '../configuration';
|
|
9
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
2
|
+
import { type ZLinkWorkerCall, ZLinkFrameworkException } from '../../contracts';
|
|
3
|
+
|
|
10
4
|
import {
|
|
11
|
-
defaultWorkerMaxThreads,
|
|
12
5
|
DEFAULT_WORKER_IDLE_TIMEOUT_MS,
|
|
13
|
-
DEFAULT_WORKER_MIN_THREADS
|
|
6
|
+
DEFAULT_WORKER_MIN_THREADS,
|
|
7
|
+
defaultWorkerMaxThreads
|
|
14
8
|
} from '../../contracts/Configuration/InternalDefaults';
|
|
15
9
|
import { createAbortError } from '../abort';
|
|
10
|
+
import { shouldCompactBackingArray } from '../admission';
|
|
11
|
+
import { type ZLinkWorkerOptions, ZLinkConfigurationException } from '../configuration';
|
|
12
|
+
|
|
16
13
|
import {
|
|
17
14
|
captureZLinkSpotSerialTurn,
|
|
18
15
|
requireZLinkYieldTurn,
|
|
19
16
|
type ZLinkSpotSerialTurn
|
|
20
17
|
} from '../execution';
|
|
18
|
+
import {
|
|
19
|
+
ZLinkFrameworkInternalErrorKind,
|
|
20
|
+
createInternalFrameworkException
|
|
21
|
+
} from '../framework-errors-internal';
|
|
21
22
|
|
|
22
23
|
export type ZLinkCpuWorkerWork<T> = (signal: AbortSignal) => T;
|
|
23
24
|
export type ZLinkIoWorkerWork<T> = (signal: AbortSignal) => Promise<T>;
|
|
@@ -332,7 +333,7 @@ class ZLinkCpuWorkerPool {
|
|
|
332
333
|
if (this.queueCount === 0) {
|
|
333
334
|
this.queue.length = 0;
|
|
334
335
|
this.queueHead = 0;
|
|
335
|
-
} else if (this.queueHead
|
|
336
|
+
} else if (shouldCompactBackingArray(this.queueHead, this.queue.length)) {
|
|
336
337
|
this.queue.splice(0, this.queueHead);
|
|
337
338
|
this.queueHead = 0;
|
|
338
339
|
}
|
|
@@ -351,7 +352,7 @@ class ZLinkCpuWorkerPool {
|
|
|
351
352
|
while (this.queueHead < this.queue.length && this.queue[this.queueHead] === undefined) {
|
|
352
353
|
this.queueHead += 1;
|
|
353
354
|
}
|
|
354
|
-
if (this.queueHead
|
|
355
|
+
if (shouldCompactBackingArray(this.queueHead, this.queue.length)) {
|
|
355
356
|
this.queue.splice(0, this.queueHead);
|
|
356
357
|
this.queueHead = 0;
|
|
357
358
|
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { ActorRef, ZLinkActor, ZLinkActorJoinOperationId, ZLinkBlobReference, ZLinkMessageSerializer, ZLinkRelocationStore } from '../../contracts';
|
|
2
|
-
import type { ZLinkAuthoritySnapshot } from '../locations/internal-location-contracts';
|
|
3
|
-
import type { ZLinkAuthorityStore } from '../locations/internal-store-contracts';
|
|
4
|
-
export type ZLinkDeferredJoinDeliveryCursor = 'prepared' | 'committed' | 'delivered';
|
|
5
|
-
export interface ZLinkDeferredJoinAcceptedRoot {
|
|
6
|
-
readonly authority: ZLinkAuthoritySnapshot;
|
|
7
|
-
readonly reference: ZLinkBlobReference;
|
|
8
|
-
readonly checksumCrc32c: number;
|
|
9
|
-
readonly operationId: ZLinkActorJoinOperationId;
|
|
10
|
-
readonly actor: ActorRef;
|
|
11
|
-
readonly rawReply: Buffer;
|
|
12
|
-
readonly replyContentType?: string;
|
|
13
|
-
readonly cursor: ZLinkDeferredJoinDeliveryCursor;
|
|
14
|
-
}
|
|
15
|
-
export interface ZLinkDeferredJoinRootIdentity {
|
|
16
|
-
readonly authorityKey: string;
|
|
17
|
-
readonly objectKind: 'actor' | 'user_spot' | 'instance_spot';
|
|
18
|
-
readonly objectGeneration: bigint;
|
|
19
|
-
readonly aggregateId: string;
|
|
20
|
-
readonly aggregateGeneration: bigint;
|
|
21
|
-
}
|
|
22
|
-
/** Identifies whether an authority slot points at a deferred Join journal root. */
|
|
23
|
-
export declare function isDeferredJoinAcceptedRootPublication(relocation: ZLinkRelocationStore, reference: string, checksumCrc32c: number, expected: ZLinkDeferredJoinRootIdentity, signal?: AbortSignal): Promise<boolean>;
|
|
24
|
-
/**
|
|
25
|
-
* Keeps a cross-node Accepted Join completion under the Actor authority.
|
|
26
|
-
* Every cursor transition writes and verifies a new immutable root before the
|
|
27
|
-
* authority CAS. A failed callback leaves the committed root available for the
|
|
28
|
-
* next target Actor mailbox retry.
|
|
29
|
-
*/
|
|
30
|
-
export declare class ZLinkDeferredJoinAcceptedJournal {
|
|
31
|
-
private readonly authority;
|
|
32
|
-
private readonly relocation;
|
|
33
|
-
private readonly messageSerializers?;
|
|
34
|
-
constructor(authority: ZLinkAuthorityStore, relocation: ZLinkRelocationStore, messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer> | undefined);
|
|
35
|
-
prepare(actorId: string, operationId: ZLinkActorJoinOperationId, actor: ActorRef, rawReply: Uint8Array, replyContentType?: string, signal?: AbortSignal, canonicalInventoryDigest?: string): Promise<ZLinkDeferredJoinAcceptedRoot>;
|
|
36
|
-
recover(actorId: string, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot | undefined>;
|
|
37
|
-
markCommitted(root: ZLinkDeferredJoinAcceptedRoot, actor?: ActorRef, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
|
|
38
|
-
markDelivered(root: ZLinkDeferredJoinAcceptedRoot, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
|
|
39
|
-
discardPrepared(root: ZLinkDeferredJoinAcceptedRoot, signal?: AbortSignal): Promise<void>;
|
|
40
|
-
deliver(root: ZLinkDeferredJoinAcceptedRoot, actor: ZLinkActor, actorRef: ActorRef, submitMailbox: <T>(operation: () => Promise<T>) => Promise<T>, signal?: AbortSignal): Promise<ZLinkDeferredJoinAcceptedRoot>;
|
|
41
|
-
private releaseDelivered;
|
|
42
|
-
private moveCursor;
|
|
43
|
-
private readPublished;
|
|
44
|
-
private storeRoot;
|
|
45
|
-
private storeCanonicalRoot;
|
|
46
|
-
private deleteBestEffort;
|
|
47
|
-
}
|