@zlink-systems/framework 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Channels/IZLinkFanoutClient.d.ts +0 -6
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/RouteMesh/RuntimeTopology.d.ts +8 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +5 -0
- package/dist/internal.js +16 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +28 -0
- package/dist/runtime/activation-admission.js +57 -0
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +19 -17
- package/dist/runtime/actors/actor-handoff.d.ts +13 -7
- package/dist/runtime/actors/actor-handoff.js +36 -25
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +85 -123
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +3 -3
- package/dist/runtime/actors/actor-remote-joiner.js +11 -17
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +4 -2
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/actor-source-transfer.d.ts +5 -5
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +19 -0
- package/dist/runtime/actors/deferred-join-completion.js +21 -0
- package/dist/runtime/actors/index.d.ts +10 -8
- package/dist/runtime/actors/index.js +101 -73
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +7 -1
- package/dist/runtime/admission.js +11 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +8 -33
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +3 -26
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-factory.d.ts +1 -2
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +4 -18
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +7 -4
- package/dist/runtime/backend/node/node-backend-adapter-support.js +28 -34
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +11 -6
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/node/node-raw-binding-port.js +51 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +21 -19
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +171 -111
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +13 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -9
- package/dist/runtime/channels/channel-clients.js +68 -60
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -18
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +2 -5
- package/dist/runtime/channels/channel-runtime-manager.js +4 -12
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +30 -32
- package/dist/runtime/channels/channel-socket-registry.js +296 -235
- package/dist/runtime/channels/channel-transports.d.ts +11 -20
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +133 -81
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +22 -9
- package/dist/runtime/execution/index.js +107 -37
- package/dist/runtime/execution/serial-execution-queue.d.ts +12 -7
- package/dist/runtime/execution/serial-execution-queue.js +99 -26
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/listener-records.d.ts +11 -0
- package/dist/runtime/foundation/listener-records.js +20 -0
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +18 -26
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +122 -469
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.d.ts +1 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +30 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +23 -8
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-coordinator.d.ts +9 -0
- package/dist/runtime/foundation/service-relocation-coordinator.js +14 -1
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +8 -0
- package/dist/runtime/foundation/service-relocation-object-owner.js +19 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -19
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +28 -24
- package/dist/runtime/foundation/service-stateful-runtime.js +297 -244
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +12 -7
- package/dist/runtime/foundation/service-stateful-wire-codec.js +240 -143
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -3
- package/dist/runtime/foundation/service-topology-registry.js +22 -61
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +28 -28
- package/dist/runtime/host/actor-transfer-runtime.js +210 -256
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +19 -14
- package/dist/runtime/host/index.js +234 -175
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +11 -23
- package/dist/runtime/host/route-mesh-runtime.d.ts +14 -10
- package/dist/runtime/host/route-mesh-runtime.js +178 -257
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +71 -38
- package/dist/runtime/host/service-relocation-host-runtime.js +816 -651
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -7
- package/dist/runtime/host/spot-runtime-options-factory.js +53 -21
- package/dist/runtime/host/stateful-authority-route-runtime.js +6 -2
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +14 -6
- package/dist/runtime/host/user-spot-creation-coordinator.js +96 -95
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +79 -27
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +5 -10
- package/dist/runtime/locations/lifecycle.js +4 -33
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +44 -30
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +8 -2
- package/dist/runtime/locations/spot-location-claims.js +40 -23
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +2 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +17 -8
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +3 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +3 -3
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +4 -4
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +6 -3
- package/dist/runtime/spots/index.d.ts +29 -29
- package/dist/runtime/spots/index.js +441 -313
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -4
- package/dist/runtime/spots/spot-activation-registry.js +27 -60
- package/dist/runtime/spots/spot-activation-state.d.ts +2 -11
- package/dist/runtime/spots/spot-activation-state.js +4 -17
- package/dist/runtime/spots/spot-activation.d.ts +10 -9
- package/dist/runtime/spots/spot-activation.js +103 -81
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +5 -55
- package/dist/runtime/spots/spot-actor-lifecycle-drain.js +2 -2
- package/dist/runtime/spots/spot-actor-membership.d.ts +7 -5
- package/dist/runtime/spots/spot-actor-membership.js +44 -53
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-entry-activation.js +9 -21
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +6 -5
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +22 -21
- package/dist/runtime/spots/spot-node-runtime-manager.js +73 -82
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +10 -37
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -2
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +2 -7
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +1 -70
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +4 -20
- package/dist/runtime/spots/spot-serial-executor.d.ts +5 -0
- package/dist/runtime/spots/spot-serial-executor.js +9 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +29 -6
- package/dist/runtime/spots/spot-serial-turn-executor.js +89 -13
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +17 -32
- package/dist/runtime/streams/actor-session-binding-registry.js +145 -367
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +2 -6
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -19
- package/dist/runtime/streams/index.d.ts +15 -14
- package/dist/runtime/streams/index.js +38 -39
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/session-serial-executor.js +2 -2
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Channels/IZLinkFanoutClient.ts +0 -7
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/RouteMesh/RuntimeTopology.ts +10 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +15 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +72 -0
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +45 -39
- package/src/runtime/actors/actor-handoff.ts +55 -45
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +174 -215
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +15 -36
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-contracts.ts +4 -10
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/actor-source-transfer.ts +5 -18
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +44 -0
- package/src/runtime/actors/index.ts +122 -88
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +13 -2
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +15 -42
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -28
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +5 -25
- package/src/runtime/backend/node/node-backend-adapter-support.ts +32 -35
- package/src/runtime/backend/node/node-event-loop-poller.ts +16 -8
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +58 -23
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +252 -162
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +5 -4
- package/src/runtime/backend/raw-binding-port.ts +14 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -31
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +8 -15
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +369 -262
- package/src/runtime/channels/channel-transports.ts +161 -115
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +175 -106
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +116 -38
- package/src/runtime/execution/serial-execution-queue.ts +179 -34
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/listener-records.ts +21 -0
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +170 -571
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +41 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +30 -19
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-coordinator.ts +13 -0
- package/src/runtime/foundation/service-relocation-object-owner.ts +23 -7
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -25
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +435 -327
- package/src/runtime/foundation/service-stateful-wire-codec.ts +329 -199
- package/src/runtime/foundation/service-topology-registry.ts +30 -79
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +266 -418
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +408 -312
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +12 -44
- package/src/runtime/host/route-mesh-runtime.ts +236 -275
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +1161 -904
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +92 -30
- package/src/runtime/host/stateful-authority-route-runtime.ts +8 -4
- package/src/runtime/host/user-spot-creation-coordinator.ts +182 -163
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +110 -31
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +16 -45
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +90 -58
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +54 -26
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +27 -10
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +4 -4
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +6 -6
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +6 -3
- package/src/runtime/spots/index.ts +687 -437
- package/src/runtime/spots/spot-activation-registry.ts +42 -71
- package/src/runtime/spots/spot-activation-state.ts +4 -16
- package/src/runtime/spots/spot-activation.ts +167 -115
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +25 -79
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +20 -18
- package/src/runtime/spots/spot-actor-membership.ts +107 -75
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -33
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +29 -21
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +145 -140
- package/src/runtime/spots/spot-outbound.ts +47 -68
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -6
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +6 -77
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +10 -43
- package/src/runtime/spots/spot-serial-executor.ts +10 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +120 -13
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +182 -560
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +1 -19
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +23 -37
- package/src/runtime/streams/index.ts +102 -88
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/session-serial-executor.ts +2 -2
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/deferred-join-accepted-journal.d.ts +0 -47
- package/dist/runtime/actors/deferred-join-accepted-journal.js +0 -992
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/deferred-join-accepted-journal.ts +0 -1346
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createSpotNodeLocationAutoConnectContext = createSpotNodeLocationAutoConnectContext;
|
|
4
4
|
exports.spotNodeAutoConnectCapability = spotNodeAutoConnectCapability;
|
|
5
|
+
const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
5
6
|
const Values_1 = require("../../contracts/Locations/Values");
|
|
6
7
|
const contracts_1 = require("../../contracts");
|
|
7
8
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
8
9
|
const state_lane_1 = require("../execution/state-lane");
|
|
9
10
|
const routing_id_1 = require("../routing-id");
|
|
11
|
+
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
10
12
|
const locations_1 = require("../locations");
|
|
11
13
|
function createSpotNodeLocationAutoConnectContext(runtime, stores, options, events) {
|
|
12
14
|
const leaseTracker = new locations_1.ZLinkOwnerLeaseTracker({
|
|
@@ -67,7 +69,7 @@ function meshDescriptorPeerResolver(runtime) {
|
|
|
67
69
|
nodeRid: descriptor.rid,
|
|
68
70
|
role: contracts_1.ZLinkLocationRole.Router,
|
|
69
71
|
endpoint: descriptor.endpoint,
|
|
70
|
-
weight:
|
|
72
|
+
weight: RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT,
|
|
71
73
|
draining: descriptor.state !== contracts_1.ZLinkFrameworkRuntimeState.Serving,
|
|
72
74
|
value: descriptor.descriptorRevision,
|
|
73
75
|
ownerId: descriptor.ownerId,
|
|
@@ -145,7 +147,7 @@ class ZLinkSpotNodeAutoConnectExecutor {
|
|
|
145
147
|
peer.endpoint === target.endpoint &&
|
|
146
148
|
(target.nodeRid === undefined || String(peer.routingId) === String(target.nodeRid)) &&
|
|
147
149
|
peer.lifecycleGeneration === target.lifecycleGeneration &&
|
|
148
|
-
peer.state ===
|
|
150
|
+
peer.state === service_runtime_contracts_1.MeshPeerRuntimeState.Serving);
|
|
149
151
|
}
|
|
150
152
|
replaceNotRequired(targets) {
|
|
151
153
|
this.node.replaceDiscoveredNotRequiredPeers?.(targets
|
|
@@ -170,40 +172,29 @@ class ZLinkSpotNodeAutoConnectExecutor {
|
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
174
|
prepareConnectCore(key) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
const current = this.connectionIntents.get(key);
|
|
176
|
+
if (current !== undefined)
|
|
177
|
+
return current.connectionIntentId === undefined ? current : undefined;
|
|
175
178
|
const intent = {};
|
|
176
179
|
this.connectionIntents.set(key, intent);
|
|
177
180
|
return intent;
|
|
178
181
|
}
|
|
179
182
|
async connectPeer(target, key, intent) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
return accepted;
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
// A discovered endpoint can become unavailable between the store read and
|
|
199
|
-
// the socket connect. Leave the target inactive so the next reconciliation
|
|
200
|
-
// can retry without terminating the host's background runtime.
|
|
201
|
-
await this.lane.run(() => {
|
|
202
|
-
if (this.connectionIntents.get(key) === intent)
|
|
203
|
-
this.connectionIntents.delete(key);
|
|
204
|
-
});
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
183
|
+
const connectionIntentId = await this.node.connectPeer({
|
|
184
|
+
endpoint: target.endpoint,
|
|
185
|
+
expectedRid: target.nodeRid === undefined ? undefined : (0, routing_id_1.toBackendRoutingId)(target.nodeRid),
|
|
186
|
+
expectedSecurityIdentity: toAdmissionSecurityIdentity(target.metadata?.securityIdentity),
|
|
187
|
+
expectedLifecycleGeneration: target.lifecycleGeneration
|
|
188
|
+
});
|
|
189
|
+
const accepted = await this.lane.run(() => {
|
|
190
|
+
if (this.connectionIntents.get(key) !== intent)
|
|
191
|
+
return false;
|
|
192
|
+
intent.connectionIntentId = connectionIntentId;
|
|
193
|
+
return true;
|
|
194
|
+
});
|
|
195
|
+
if (!accepted)
|
|
196
|
+
this.node.removePeerConnection(connectionIntentId);
|
|
197
|
+
return accepted;
|
|
207
198
|
}
|
|
208
199
|
disconnectPeer(target) {
|
|
209
200
|
const key = connectionKey(target);
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { ActorRef, RoutingId, ZLinkActor, ZLinkChannelClient, ZLinkFanoutClient, ZLinkMessage, ZLinkMeshNodeDescriptor, ZLinkMessageSerializer, ZLinkSpotPublisherClient } from '../../contracts';
|
|
3
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
4
|
-
import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
|
|
5
|
-
import { ZLinkFrameworkRuntimeState } from '../../contracts';
|
|
6
|
-
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
7
|
-
import { type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
|
|
1
|
+
import { type ActorRef, type RoutingId, type ZLinkActor, type ZLinkChannelClient, type ZLinkFanoutClient, type ZLinkMeshNodeDescriptor, type ZLinkMessage, type ZLinkMessageSerializer, type ZLinkSpotPublisherClient, ZLinkFrameworkRuntimeState } from '../../contracts';
|
|
8
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
9
|
-
import type {
|
|
10
|
-
import {
|
|
3
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
4
|
+
import type { ZLinkLocationOptionOverrides } from '../../contracts/Locations/Options';
|
|
5
|
+
import type { ZLinkActivationConcurrency } from '../activation-admission';
|
|
6
|
+
import type { ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
7
|
+
import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
|
|
11
8
|
import type { ZLinkBackendAdapterFactory, ZLinkBackendContext, ZLinkBackendMeshNode } from '../backend/contracts';
|
|
12
9
|
import { ZLinkMeshCompletionTable } from '../backend/mesh-completion-table';
|
|
13
10
|
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
11
|
+
import { type ZLinkFrameworkRegistration } from '../configuration';
|
|
12
|
+
import type { ZLinkRuntimeEventPublisher } from '../diagnostics';
|
|
13
|
+
import type { ZLinkListenerRecords } from '../foundation/listener-records';
|
|
14
|
+
import { type ZLinkMessageFollowOrigin, type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
|
|
15
|
+
import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
|
|
16
|
+
import { ApplicationJobQueue } from '../host/application-job-queue';
|
|
14
17
|
import { ZLinkLocationRuntime, type ZLinkLocationEventSink, type ZLinkLocationRuntimeStores } from '../locations';
|
|
15
|
-
import type
|
|
16
|
-
import type { ZLinkActorHandoffPacket } from '../actors/actor-handoff';
|
|
18
|
+
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
17
19
|
import type { ZLinkDetachedTaskRunner } from './spot-actor-join-dispatch';
|
|
18
20
|
import type { ZLinkSpotRoutedTransport } from './spot-outbound';
|
|
19
21
|
import type { ZLinkSpotRouteResolver } from './spot-routing-internal';
|
|
20
|
-
import type { ZLinkEntryActorRuntime,
|
|
21
|
-
import type { ServiceMessageFollowRecord } from '../foundation/service-stateful-wire-codec';
|
|
22
|
-
import { ApplicationJobQueue } from '../host/application-job-queue';
|
|
22
|
+
import type { ZLinkEntryActorRuntime, ZLinkSpotActorHandoffRuntime, ZLinkSpotActorTransferRuntime, ZLinkSpotBoundSessionRuntime } from './spot-runtime-ports';
|
|
23
23
|
export interface ZLinkSpotNodeRuntimeManagerOptions {
|
|
24
|
+
readonly errorSink: import('../diagnostics/dispatch-error-port').ZLinkDispatchErrorSink;
|
|
25
|
+
readonly listenerRecords?: ZLinkListenerRecords;
|
|
24
26
|
readonly registration: ZLinkFrameworkRegistration;
|
|
25
27
|
readonly primaryMeshName?: string;
|
|
26
28
|
readonly backendAdapterFactory: ZLinkBackendAdapterFactory;
|
|
@@ -40,16 +42,14 @@ export interface ZLinkSpotNodeRuntimeManagerOptions {
|
|
|
40
42
|
readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
|
|
41
43
|
readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
|
|
42
44
|
readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
|
|
43
|
-
readonly detachedTaskRunner
|
|
45
|
+
readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
|
|
44
46
|
readonly applicationJobQueue?: ApplicationJobQueue;
|
|
45
47
|
readonly applicationJobReceiveFlowFailureSink?: (error: unknown) => void;
|
|
46
48
|
readonly peerAdmissionSealed?: (meshName: string) => boolean;
|
|
47
49
|
readonly meshRecordDispatcher?: (meshName: string, owner: ReadyRecord, record: ReceiveRecord) => void | Promise<void>;
|
|
48
50
|
readonly messageFollowReceiver?: (record: ServiceMessageFollowRecord) => void;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
readonly limit: number;
|
|
52
|
-
};
|
|
51
|
+
/** MeshNode §5.1 activation admission record; the descriptor projects it for placement. */
|
|
52
|
+
readonly activationConcurrency?: (meshName: string) => ZLinkActivationConcurrency;
|
|
53
53
|
}
|
|
54
54
|
export declare class ZLinkSpotNodeRuntimeManager {
|
|
55
55
|
private readonly options;
|
|
@@ -59,7 +59,7 @@ export declare class ZLinkSpotNodeRuntimeManager {
|
|
|
59
59
|
private readonly entryActivations;
|
|
60
60
|
private readonly entryActivationStarts;
|
|
61
61
|
private readonly publishers;
|
|
62
|
-
private
|
|
62
|
+
private readonly disposal;
|
|
63
63
|
private readonly autoConnectLoops;
|
|
64
64
|
private readonly publishedMeshNodeDescriptors;
|
|
65
65
|
private readonly descriptorRevisionByMesh;
|
|
@@ -72,7 +72,6 @@ export declare class ZLinkSpotNodeRuntimeManager {
|
|
|
72
72
|
private locationAutoConnect?;
|
|
73
73
|
private readonly applicationJobQueue;
|
|
74
74
|
constructor(options: ZLinkSpotNodeRuntimeManagerOptions);
|
|
75
|
-
createReceived(): import("../backend/runtime-values").ZLinkBackendReceived;
|
|
76
75
|
createTopicMessage(): import("../backend/runtime-values").ZLinkBackendTopicMessage;
|
|
77
76
|
configureLocationAutoConnect(runtime: ZLinkLocationRuntime, stores: ZLinkLocationRuntimeStores, options: ZLinkLocationOptionOverrides, events?: ZLinkLocationEventSink): void;
|
|
78
77
|
startLocationAutoConnect(signal?: AbortSignal): Promise<void>;
|
|
@@ -110,6 +109,7 @@ export declare class ZLinkSpotNodeRuntimeManager {
|
|
|
110
109
|
notifyEntrySpotActorDisconnected(meshName: string, actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
|
|
111
110
|
serverChannels(meshName: string): [string, import("../configuration").ZLinkMeshChannelOptions][];
|
|
112
111
|
dispose(signal?: AbortSignal, deadline?: Date): Promise<void>;
|
|
112
|
+
private disposeCore;
|
|
113
113
|
private dispatchMeshRecord;
|
|
114
114
|
dispatchEntrySpotRecord(meshName: string, owner: ReadyRecord, record: ReceiveRecord): Promise<boolean>;
|
|
115
115
|
private ensureEntryActivation;
|
|
@@ -117,6 +117,7 @@ export declare class ZLinkSpotNodeRuntimeManager {
|
|
|
117
117
|
private primaryEntryActivation;
|
|
118
118
|
dispatchEntryActorPacket(actorId: string, parts: readonly Message[], returnResponse?: boolean, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef, requestTerminal?: (response: unknown) => Promise<void> | void, messageFollowOrigin?: ZLinkMessageFollowOrigin): Promise<unknown>;
|
|
119
119
|
dispatchEntryActorJoin(meshName: string, actor: ZLinkActor, handoffBacklog?: readonly ZLinkActorHandoffPacket[]): Promise<void>;
|
|
120
|
+
executeEntryActor<T>(meshName: string, actorId: string, operation: () => Promise<T>): Promise<T>;
|
|
120
121
|
publish(meshName: string, channelName: string, topic: string, packetName: string | undefined, event: Message, signal?: AbortSignal, metadata?: ReadonlyMap<string, string>): Promise<ZLinkSubmitResult>;
|
|
121
122
|
private executePublish;
|
|
122
123
|
tryPublish(meshName: string, channelName: string, topic: string, packetName: string | undefined, event: Message, metadata?: ReadonlyMap<string, string>): ZLinkSubmitResult;
|
|
@@ -2,26 +2,31 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkSpotNodeRuntimeManager = void 0;
|
|
4
4
|
exports.createFrameworkEntrySpotId = createFrameworkEntrySpotId;
|
|
5
|
-
const
|
|
5
|
+
const disposal_1 = require("../disposal");
|
|
6
6
|
const node_crypto_1 = require("node:crypto");
|
|
7
|
-
const Locations_1 = require("../../contracts/Locations");
|
|
8
7
|
const contracts_1 = require("../../contracts");
|
|
9
|
-
const
|
|
8
|
+
const InternalDefaults_1 = require("../../contracts/Configuration/InternalDefaults");
|
|
9
|
+
const RegistrationBuilderPolicy_1 = require("../../contracts/Configuration/RegistrationBuilderPolicy");
|
|
10
10
|
const ZLinkDispatchOptions_1 = require("../../contracts/Dispatch/ZLinkDispatchOptions");
|
|
11
|
+
const Locations_1 = require("../../contracts/Locations");
|
|
12
|
+
const abort_1 = require("../abort");
|
|
13
|
+
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
14
|
+
const mesh_dispatch_pump_1 = require("../backend/mesh-dispatch-pump");
|
|
11
15
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
12
|
-
const
|
|
16
|
+
const channel_clients_1 = require("../channels/channel-clients");
|
|
17
|
+
const channel_envelope_1 = require("../channels/channel-envelope");
|
|
13
18
|
const configuration_1 = require("../configuration");
|
|
14
|
-
const mesh_dispatch_pump_1 = require("../backend/mesh-dispatch-pump");
|
|
15
|
-
const execution_1 = require("../execution");
|
|
16
19
|
const flow_context_1 = require("../diagnostics/flow-context");
|
|
17
|
-
const
|
|
18
|
-
const
|
|
20
|
+
const execution_1 = require("../execution");
|
|
21
|
+
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
22
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
23
|
+
const application_job_queue_1 = require("../host/application-job-queue");
|
|
19
24
|
const locations_1 = require("../locations");
|
|
25
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
26
|
+
const routing_id_1 = require("../routing-id");
|
|
20
27
|
const spot_entry_activation_1 = require("./spot-entry-activation");
|
|
21
28
|
const spot_node_autoconnect_1 = require("./spot-node-autoconnect");
|
|
22
|
-
const
|
|
23
|
-
const abort_1 = require("../abort");
|
|
24
|
-
const application_job_queue_1 = require("../host/application-job-queue");
|
|
29
|
+
const DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
25
30
|
const ZLINK_SEND_DONT_WAIT = 1;
|
|
26
31
|
// Shared default for the dominant no-metadata call; avoids a Map allocation
|
|
27
32
|
// per outbound operation.
|
|
@@ -34,7 +39,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
34
39
|
entryActivations = new Map();
|
|
35
40
|
entryActivationStarts = new Map();
|
|
36
41
|
publishers = new Map();
|
|
37
|
-
|
|
42
|
+
disposal = new disposal_1.RuntimeDisposal();
|
|
38
43
|
autoConnectLoops = [];
|
|
39
44
|
publishedMeshNodeDescriptors = new Map();
|
|
40
45
|
// Keep the revision source separate from the cached Store row. A new owner
|
|
@@ -51,13 +56,13 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
51
56
|
applicationJobQueue;
|
|
52
57
|
constructor(options) {
|
|
53
58
|
this.options = options;
|
|
59
|
+
if (options.detachedTaskRunner === undefined) {
|
|
60
|
+
throw new configuration_1.ZLinkConfigurationException('Spot node runtime requires a detached task runner.');
|
|
61
|
+
}
|
|
54
62
|
this.applicationJobQueue =
|
|
55
63
|
options.applicationJobQueue ??
|
|
56
64
|
new application_job_queue_1.ApplicationJobQueue((0, application_job_queue_1.resolveApplicationJobQueueConfiguration)());
|
|
57
65
|
}
|
|
58
|
-
createReceived() {
|
|
59
|
-
return this.options.backendAdapterFactory.createReceived();
|
|
60
|
-
}
|
|
61
66
|
createTopicMessage() {
|
|
62
67
|
return this.options.backendAdapterFactory.createTopicMessage();
|
|
63
68
|
}
|
|
@@ -85,7 +90,8 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
85
90
|
peerResolver: location.resolver,
|
|
86
91
|
executor: capability.executor,
|
|
87
92
|
events: location.events,
|
|
88
|
-
options: location.options
|
|
93
|
+
options: location.options,
|
|
94
|
+
errorSink: this.options.errorSink
|
|
89
95
|
});
|
|
90
96
|
const loop = new locations_1.ZLinkAutoConnectLoop({
|
|
91
97
|
reconciler,
|
|
@@ -188,9 +194,9 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
188
194
|
: Object.keys(spotNode.actorFactories ?? {}).length) > 0;
|
|
189
195
|
node.configureObjectPlacement({
|
|
190
196
|
role: spotNode.objectRole ?? (hasLegacyObjectFactories ? 'server' : 'none'),
|
|
191
|
-
placementWeight: spotNode.placementWeight ??
|
|
197
|
+
placementWeight: spotNode.placementWeight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT,
|
|
192
198
|
activeCapacityLimit: aggregatePlacementCapacity(spotNode.actorLimit ?? 0, spotNode.spotLimit ?? 0),
|
|
193
|
-
pendingCapacityLimit: spotNode.activationConcurrencyLimit ??
|
|
199
|
+
pendingCapacityLimit: spotNode.activationConcurrencyLimit ?? InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT,
|
|
194
200
|
objectCapabilities: [
|
|
195
201
|
...stableTypes.map((type) => `object-type:${type}`),
|
|
196
202
|
...instanceSpotTypes.map((type) => `instance-spot-type:${type}`)
|
|
@@ -236,6 +242,10 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
236
242
|
this.meshNodes.set(spotNodeName, node);
|
|
237
243
|
this.meshPumps.set(spotNodeName, pump);
|
|
238
244
|
this.meshCompletions.set(spotNodeName, completions);
|
|
245
|
+
const listenerEndpoint = node.status().localEndpoint;
|
|
246
|
+
if (listenerEndpoint.length > 0) {
|
|
247
|
+
this.options.listenerRecords?.record('routeMesh', spotNodeName, listenerEndpoint);
|
|
248
|
+
}
|
|
239
249
|
}
|
|
240
250
|
catch (error) {
|
|
241
251
|
this.entryActivations.delete(spotNodeName);
|
|
@@ -333,19 +343,15 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
333
343
|
};
|
|
334
344
|
})
|
|
335
345
|
},
|
|
336
|
-
activationConcurrency: {
|
|
337
|
-
active:
|
|
338
|
-
|
|
339
|
-
0,
|
|
340
|
-
limit: this.options.instanceActivationConcurrencyProvider?.(meshName).limit ??
|
|
341
|
-
registration.activationConcurrencyLimit ??
|
|
342
|
-
128
|
|
346
|
+
activationConcurrency: this.options.activationConcurrency?.(meshName) ?? {
|
|
347
|
+
active: 0,
|
|
348
|
+
limit: registration.activationConcurrencyLimit ?? InternalDefaults_1.DEFAULT_ACTIVATION_CONCURRENCY_LIMIT
|
|
343
349
|
},
|
|
344
350
|
channelWeights: Object.fromEntries(this.serverChannels(meshName).map(([channelName, channel]) => [
|
|
345
351
|
channelName,
|
|
346
352
|
state === contracts_1.ZLinkFrameworkRuntimeState.Draining
|
|
347
353
|
? 0
|
|
348
|
-
: this.effectiveChannelWeight(meshName, channelName, channel.weight ??
|
|
354
|
+
: this.effectiveChannelWeight(meshName, channelName, channel.weight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT)
|
|
349
355
|
])),
|
|
350
356
|
applicationVersion: this.options.registration.applicationVersion,
|
|
351
357
|
maintenanceWave: this.options.registration.maintenanceWave,
|
|
@@ -436,7 +442,9 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
436
442
|
if (registration === undefined) {
|
|
437
443
|
throw new configuration_1.ZLinkConfigurationException(`Mesh '${meshName}' is not registered.`);
|
|
438
444
|
}
|
|
439
|
-
return this.runtimePlacementWeights.get(meshName) ??
|
|
445
|
+
return (this.runtimePlacementWeights.get(meshName) ??
|
|
446
|
+
registration.placementWeight ??
|
|
447
|
+
RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT);
|
|
440
448
|
}
|
|
441
449
|
channelWeight(channelName) {
|
|
442
450
|
const match = this.resolveChannel(channelName);
|
|
@@ -489,17 +497,15 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
489
497
|
return this.runtimeChannelWeights.get(meshName)?.get(channelName) ?? configuredWeight;
|
|
490
498
|
}
|
|
491
499
|
resolveChannel(channelName) {
|
|
492
|
-
const
|
|
493
|
-
|
|
494
|
-
return channel === undefined ? [] : [{ meshName, configuredWeight: channel.weight ?? 100 }];
|
|
495
|
-
});
|
|
496
|
-
if (matches.length === 0) {
|
|
500
|
+
const route = (0, channel_clients_1.resolveChannelRoute)(this.options.registration, channelName);
|
|
501
|
+
if (route?.kind !== 'route-mesh') {
|
|
497
502
|
throw new configuration_1.ZLinkConfigurationException(`RouteMesh channel '${channelName}' is not registered.`);
|
|
498
503
|
}
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
504
|
+
const match = (0, channel_clients_1.requireUniqueRouteMeshChannel)(route.matches, `RouteMesh channel '${channelName}' is registered in more than one Mesh.`);
|
|
505
|
+
return {
|
|
506
|
+
meshName: match.meshName,
|
|
507
|
+
configuredWeight: match.mesh.meshChannels?.[channelName]?.weight ?? RegistrationBuilderPolicy_1.ZLINK_DEFAULT_PUBLIC_WEIGHT
|
|
508
|
+
};
|
|
503
509
|
}
|
|
504
510
|
scheduleRuntimeWeightPublication(meshName, applyWeight) {
|
|
505
511
|
const publish = this.runtimeWeightPublication
|
|
@@ -511,12 +517,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
511
517
|
await this.publishMeshNodeState(state, undefined, meshName);
|
|
512
518
|
});
|
|
513
519
|
this.runtimeWeightPublication = publish;
|
|
514
|
-
|
|
515
|
-
this.options.detachedTaskRunner.runDetached(`RouteMesh '${meshName}' runtime weight publication`, async () => await publish);
|
|
516
|
-
}
|
|
517
|
-
else {
|
|
518
|
-
void publish.catch(() => undefined);
|
|
519
|
-
}
|
|
520
|
+
this.options.detachedTaskRunner.runDetached(`RouteMesh '${meshName}' runtime weight publication`, async () => await publish);
|
|
520
521
|
}
|
|
521
522
|
get primaryMeshCompletions() {
|
|
522
523
|
const meshName = this.options.primaryMeshName ?? this.meshNodes.keys().next().value;
|
|
@@ -556,18 +557,16 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
556
557
|
serverChannels(meshName) {
|
|
557
558
|
return Object.entries(this.options.registration.spotNodes.get(meshName)?.meshChannels ?? {}).filter(([, channel]) => channel.server === true);
|
|
558
559
|
}
|
|
559
|
-
|
|
560
|
-
this.
|
|
560
|
+
dispose(signal, deadline) {
|
|
561
|
+
return this.disposal.run(() => this.disposeCore(signal, deadline));
|
|
562
|
+
}
|
|
563
|
+
async disposeCore(signal, deadline) {
|
|
561
564
|
const autoConnectLoops = [...this.autoConnectLoops];
|
|
562
565
|
const entryActivations = [...this.entryActivations.values()];
|
|
563
566
|
const meshPumps = [...this.meshPumps.values()];
|
|
564
567
|
const meshNodes = [...this.meshNodes.values()];
|
|
565
568
|
const meshCompletions = [...this.meshCompletions.values()];
|
|
566
|
-
this.entryActivations.clear();
|
|
567
|
-
this.autoConnectLoops.length = 0;
|
|
568
|
-
this.meshPumps.clear();
|
|
569
569
|
const publishers = [...this.publishers.values()];
|
|
570
|
-
this.publishers.clear();
|
|
571
570
|
const errors = [];
|
|
572
571
|
const settle = async (operations) => {
|
|
573
572
|
const results = await Promise.allSettled(operations);
|
|
@@ -580,19 +579,23 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
580
579
|
await settle(entryActivations.reverse().map((activation) => activation.dispose(deadline)));
|
|
581
580
|
await settle(meshPumps.reverse().map((pump) => pump.dispose()));
|
|
582
581
|
await settle(meshNodes.reverse().map(async (node) => {
|
|
583
|
-
node.shutdown(
|
|
582
|
+
node.shutdown(DEFAULT_SPOT_NODE_SHUTDOWN_TIMEOUT_MS);
|
|
584
583
|
node.close();
|
|
585
584
|
}));
|
|
586
585
|
for (const completions of meshCompletions) {
|
|
587
586
|
completions.dispose();
|
|
588
587
|
}
|
|
589
|
-
this.meshNodes.clear();
|
|
590
|
-
this.meshCompletions.clear();
|
|
591
588
|
await settle(autoConnectLoops.map((loop) => loop.finishTransportShutdown(signal)));
|
|
592
589
|
if (errors.length === 1)
|
|
593
590
|
throw errors[0];
|
|
594
591
|
if (errors.length > 1)
|
|
595
592
|
throw new AggregateError(errors, 'SPOT node runtime cleanup failed.');
|
|
593
|
+
this.entryActivations.clear();
|
|
594
|
+
this.autoConnectLoops.length = 0;
|
|
595
|
+
this.meshPumps.clear();
|
|
596
|
+
this.publishers.clear();
|
|
597
|
+
this.meshNodes.clear();
|
|
598
|
+
this.meshCompletions.clear();
|
|
596
599
|
}
|
|
597
600
|
async dispatchMeshRecord(meshName, owner, record) {
|
|
598
601
|
if (record.kind === service_runtime_contracts_1.ReceiveKind.Completion) {
|
|
@@ -693,7 +696,6 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
693
696
|
entrySpotType: spotNode.entrySpotType,
|
|
694
697
|
nativeSpot: node.entrySpot(),
|
|
695
698
|
nativeNode: node,
|
|
696
|
-
createReceived: () => this.options.backendAdapterFactory.createReceived(),
|
|
697
699
|
createTopicMessage: () => this.options.backendAdapterFactory.createTopicMessage(),
|
|
698
700
|
nodeRid: String(node.status().routingId),
|
|
699
701
|
spotNodeName,
|
|
@@ -703,7 +705,6 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
703
705
|
spotPublisherClient: this.options.spotPublisherClient,
|
|
704
706
|
routedTransport: this.options.routedTransport,
|
|
705
707
|
spotRouterChannelIdForMesh: this.options.spotRouterChannelIdForMesh,
|
|
706
|
-
channelMeshNameForChannel: (channelName) => resolveChannelMeshName(this.options.registration, channelName),
|
|
707
708
|
timerHandlers: spotNode.entrySpotTimerHandlers,
|
|
708
709
|
packetHandlers: spotNode.entrySpotPacketHandlers,
|
|
709
710
|
subscriptionHandlers: spotNode.entrySpotSubscriptionHandlers,
|
|
@@ -784,8 +785,15 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
784
785
|
}
|
|
785
786
|
await activation.commitServiceActorJoin(actor, handoffBacklog);
|
|
786
787
|
}
|
|
788
|
+
executeEntryActor(meshName, actorId, operation) {
|
|
789
|
+
const activation = this.entryActivations.get(meshName);
|
|
790
|
+
if (activation === undefined) {
|
|
791
|
+
throw new configuration_1.ZLinkConfigurationException(`Entry Spot Actor '${actorId}' has no activation for MeshNode '${meshName}'.`);
|
|
792
|
+
}
|
|
793
|
+
return activation.executeActor(actorId, operation);
|
|
794
|
+
}
|
|
787
795
|
publish(meshName, channelName, topic, packetName, event, signal, metadata = EMPTY_SPOT_METADATA) {
|
|
788
|
-
if (this.
|
|
796
|
+
if (this.disposal.started) {
|
|
789
797
|
return Promise.reject(runtimeShutdownError());
|
|
790
798
|
}
|
|
791
799
|
if (signal?.aborted === true) {
|
|
@@ -807,7 +815,7 @@ class ZLinkSpotNodeRuntimeManager {
|
|
|
807
815
|
return this.publishWithFlags(meshName, channelName, topic, packetName, event, ZLINK_SEND_DONT_WAIT, metadata);
|
|
808
816
|
}
|
|
809
817
|
publishWithFlags(meshName, channelName, topic, packetName, event, flags, metadata) {
|
|
810
|
-
if (this.
|
|
818
|
+
if (this.disposal.started) {
|
|
811
819
|
throw runtimeShutdownError();
|
|
812
820
|
}
|
|
813
821
|
const publisher = this.publishers.get(meshName);
|
|
@@ -838,31 +846,14 @@ function createFrameworkEntrySpotId(prefix) {
|
|
|
838
846
|
}
|
|
839
847
|
return `${prefix}-entry-${(0, node_crypto_1.randomUUID)()}`;
|
|
840
848
|
}
|
|
841
|
-
function resolveChannelMeshName(registration, channelName) {
|
|
842
|
-
const matches = [...registration.spotNodes.entries()]
|
|
843
|
-
.filter(([, node]) => Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, channelName))
|
|
844
|
-
.map(([meshName]) => meshName);
|
|
845
|
-
return matches.length === 1 ? matches[0] : undefined;
|
|
846
|
-
}
|
|
847
849
|
function mapPublishSubmitStatus(result) {
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
// A publish with no matching subscriber is a successful zero-recipient
|
|
856
|
-
// operation, not an operation-specific not-found failure.
|
|
857
|
-
return submission_result_1.ZLinkSubmitStatus.Submitted;
|
|
858
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
859
|
-
return submission_result_1.ZLinkSubmitStatus.RouteNotConnected;
|
|
860
|
-
case runtime_values_1.SubmitResult.Terminated:
|
|
861
|
-
case runtime_values_1.SubmitResult.InvalidHandle:
|
|
862
|
-
return submission_result_1.ZLinkSubmitStatus.Shutdown;
|
|
863
|
-
default:
|
|
864
|
-
throw new configuration_1.ZLinkConfigurationException(`Logical Multicast failed with submit result '${result}'.`);
|
|
865
|
-
}
|
|
850
|
+
// Source publication preserves its local admission status before commit.
|
|
851
|
+
if (result === runtime_values_1.SubmitResult.NotAdmitted || result === runtime_values_1.SubmitResult.Backpressured)
|
|
852
|
+
return submission_result_1.ZLinkSubmitStatus.Backpressured;
|
|
853
|
+
// A publish with no matching subscriber succeeds with zero recipients.
|
|
854
|
+
if (result === runtime_values_1.SubmitResult.NotFound)
|
|
855
|
+
return submission_result_1.ZLinkSubmitStatus.Submitted;
|
|
856
|
+
return (0, submission_result_1.classifySubmitResult)(result, 'Logical Multicast').status;
|
|
866
857
|
}
|
|
867
858
|
function requireEntrySpotReply(result) {
|
|
868
859
|
if (result !== runtime_values_1.SubmitResult.Ok) {
|
|
@@ -870,8 +861,8 @@ function requireEntrySpotReply(result) {
|
|
|
870
861
|
}
|
|
871
862
|
}
|
|
872
863
|
function requirePublicRuntimeWeight(value, label) {
|
|
873
|
-
if (!
|
|
874
|
-
throw new configuration_1.ZLinkConfigurationException(`${label} must be an integer in 0
|
|
864
|
+
if (!(0, RegistrationBuilderPolicy_1.isValidPublicWeight)(value)) {
|
|
865
|
+
throw new configuration_1.ZLinkConfigurationException(`${label} must be an integer in 0..${RegistrationBuilderPolicy_1.ZLINK_MAX_PUBLIC_WEIGHT}.`);
|
|
875
866
|
}
|
|
876
867
|
return value;
|
|
877
868
|
}
|
|
@@ -931,7 +922,7 @@ function objectCapability(objectKind, stableType, factory) {
|
|
|
931
922
|
};
|
|
932
923
|
}
|
|
933
924
|
function aggregatePlacementCapacity(actorLimit, spotLimit) {
|
|
934
|
-
const unlimited =
|
|
925
|
+
const unlimited = RegistrationBuilderPolicy_1.ZLINK_MAX_CAPACITY;
|
|
935
926
|
const actors = actorLimit === 0 ? unlimited : actorLimit;
|
|
936
927
|
const spots = spotLimit === 0 ? unlimited : spotLimit;
|
|
937
928
|
return Math.min(unlimited, actors + spots);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
1
|
+
import { type RoutingId, type ZLinkChannelClient, type ZLinkChannelRequestCall, type ZLinkPublishCall, type ZLinkSendCall, type ZLinkSpotOutbound, type ZLinkSpotPublisherClient, type ZLinkSpotRequestCall, type ZLinkSpotSendCall } from '../../contracts';
|
|
3
2
|
import type { ZLinkBackendSpot } from '../backend/contracts';
|
|
3
|
+
import { type ZLinkSubmitResult } from '../messaging/submission-result';
|
|
4
|
+
import { type SpotHandle } from './spot-handle';
|
|
4
5
|
import type { ZLinkSpotRouteTarget } from './spot-routing-internal';
|
|
5
6
|
import { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
6
|
-
import { type SpotHandle } from './spot-handle';
|
|
7
7
|
export interface DefaultZLinkSpotOutboundOptions {
|
|
8
8
|
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
9
9
|
readonly channelClient?: ZLinkChannelClient;
|
|
@@ -58,6 +58,7 @@ export interface ZLinkSpotRoutedTransport {
|
|
|
58
58
|
requestFromSpotToSpot?<TReply = unknown>(sourceSpot: ZLinkBackendSpot, spotRouteTarget: ZLinkSpotRouteTarget, request: unknown, options: ZLinkSpotRoutedRequestOptions): Promise<TReply>;
|
|
59
59
|
}
|
|
60
60
|
export interface ZLinkSpotRoutedSendOptions {
|
|
61
|
+
readonly instanceSpot?: boolean;
|
|
61
62
|
readonly packetName?: string;
|
|
62
63
|
/** Internal end-to-end budget remaining for route admission. */
|
|
63
64
|
readonly timeoutMs?: number;
|
|
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DefaultZLinkSpotOutbound = void 0;
|
|
4
4
|
exports.sendToSpotHandle = sendToSpotHandle;
|
|
5
5
|
exports.requestToSpotHandle = requestToSpotHandle;
|
|
6
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
7
6
|
const contracts_1 = require("../../contracts");
|
|
8
|
-
const
|
|
9
|
-
const submission_result_1 = require("../messaging/submission-result");
|
|
10
|
-
const routing_id_1 = require("../routing-id");
|
|
7
|
+
const CoreTypes_1 = require("../../contracts/Common/CoreTypes");
|
|
11
8
|
const configuration_1 = require("../configuration");
|
|
12
|
-
const workers_1 = require("../workers");
|
|
13
9
|
const execution_1 = require("../execution");
|
|
10
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
14
11
|
const packet_name_1 = require("../messaging/packet-name");
|
|
12
|
+
const submission_result_1 = require("../messaging/submission-result");
|
|
13
|
+
const routing_id_1 = require("../routing-id");
|
|
14
|
+
const workers_1 = require("../workers");
|
|
15
15
|
const spot_handle_1 = require("./spot-handle");
|
|
16
16
|
class DefaultZLinkSpotOutbound {
|
|
17
17
|
serial;
|
|
@@ -94,13 +94,13 @@ function createAddressedSpotSendCall(serial, transport, spotId, message, sourceS
|
|
|
94
94
|
selectOnce(options, 'instanceSpot');
|
|
95
95
|
options.instanceSpot = true;
|
|
96
96
|
if (instanceSpotType !== undefined) {
|
|
97
|
-
options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type',
|
|
97
|
+
options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', CoreTypes_1.ZLINK_MAX_STABLE_TYPE_BYTES);
|
|
98
98
|
}
|
|
99
99
|
return this;
|
|
100
100
|
},
|
|
101
101
|
inMesh(meshName) {
|
|
102
102
|
selectOnce(options, 'inMesh');
|
|
103
|
-
options.initialMeshName = requireAddressValue(meshName, 'Mesh name',
|
|
103
|
+
options.initialMeshName = requireAddressValue(meshName, 'Mesh name', CoreTypes_1.ZLINK_MAX_MESH_NAME_BYTES);
|
|
104
104
|
return this;
|
|
105
105
|
},
|
|
106
106
|
async submit(signal) {
|
|
@@ -131,13 +131,13 @@ function createAddressedSpotRequestCall(serial, transport, spotId, request, sour
|
|
|
131
131
|
selectOnce(options, 'instanceSpot');
|
|
132
132
|
options.instanceSpot = true;
|
|
133
133
|
if (instanceSpotType !== undefined) {
|
|
134
|
-
options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type',
|
|
134
|
+
options.instanceSpotType = requireAddressValue(instanceSpotType, 'Instance Spot type', CoreTypes_1.ZLINK_MAX_STABLE_TYPE_BYTES);
|
|
135
135
|
}
|
|
136
136
|
return this;
|
|
137
137
|
},
|
|
138
138
|
inMesh(meshName) {
|
|
139
139
|
selectOnce(options, 'inMesh');
|
|
140
|
-
options.initialMeshName = requireAddressValue(meshName, 'Mesh name',
|
|
140
|
+
options.initialMeshName = requireAddressValue(meshName, 'Mesh name', CoreTypes_1.ZLINK_MAX_MESH_NAME_BYTES);
|
|
141
141
|
return this;
|
|
142
142
|
},
|
|
143
143
|
timeout(timeoutMs) {
|
|
@@ -405,26 +405,7 @@ async function requestToSpotHandle(transport, spot, request, options = {}) {
|
|
|
405
405
|
}
|
|
406
406
|
return transport.requestToSpot(target, request, transportOptions);
|
|
407
407
|
};
|
|
408
|
-
|
|
409
|
-
try {
|
|
410
|
-
return await requestResolved(resolved);
|
|
411
|
-
}
|
|
412
|
-
catch (error) {
|
|
413
|
-
if (!shouldRefreshAfterRouteDisconnect(resolved, error)) {
|
|
414
|
-
throw error;
|
|
415
|
-
}
|
|
416
|
-
let refreshed;
|
|
417
|
-
try {
|
|
418
|
-
refreshed = await (0, spot_handle_1.refreshSpotHandle)(spot, options.signal);
|
|
419
|
-
}
|
|
420
|
-
catch {
|
|
421
|
-
throw error;
|
|
422
|
-
}
|
|
423
|
-
if (isShutdownTargetState(refreshed?.targetNodeState)) {
|
|
424
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown, `Spot '${String(spot.spotId)}' target host is shutting down.`, false, error);
|
|
425
|
-
}
|
|
426
|
-
throw error;
|
|
427
|
-
}
|
|
408
|
+
return requestResolved(await requireSpotRef(spot, options.signal));
|
|
428
409
|
}
|
|
429
410
|
async function requireSpotRef(handle, signal) {
|
|
430
411
|
const resolved = await (0, spot_handle_1.resolveSpotHandle)(handle, signal);
|
|
@@ -443,14 +424,6 @@ function spotRefToSpotRouteTarget(spot, spotRouterChannelIdForMesh = (meshName)
|
|
|
443
424
|
targetNodeState: spot.targetNodeState
|
|
444
425
|
};
|
|
445
426
|
}
|
|
446
|
-
function shouldRefreshAfterRouteDisconnect(target, error) {
|
|
447
|
-
return (target.targetNodeState === contracts_1.ZLinkFrameworkRuntimeState.Serving &&
|
|
448
|
-
error instanceof Errors_1.ZLinkFrameworkException &&
|
|
449
|
-
(0, framework_errors_internal_1.internalFrameworkErrorKind)(error) === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RouteNotConnected);
|
|
450
|
-
}
|
|
451
|
-
function isShutdownTargetState(state) {
|
|
452
|
-
return (state === contracts_1.ZLinkFrameworkRuntimeState.Draining || state === contracts_1.ZLinkFrameworkRuntimeState.Stopped);
|
|
453
|
-
}
|
|
454
427
|
function normalizeSpotRefRoutingId(routingId) {
|
|
455
428
|
return (0, routing_id_1.normalizeOpaqueRoutingId)(routingId);
|
|
456
429
|
}
|