@zlink-systems/framework 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
- package/dist/contracts/Channels/Calls.d.ts +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/Builders.d.ts +0 -1
- package/dist/contracts/Configuration/Configs.d.ts +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +2 -2
- package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
- package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +49 -153
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
- package/dist/runtime/actors/actor-request-deadline.js +6 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +7 -27
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +73 -59
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.d.ts +1 -1
- package/dist/runtime/channels/channel-envelope.js +51 -39
- package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
- package/dist/runtime/channels/channel-outbound-operations.js +25 -42
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
- package/dist/runtime/channels/channel-runtime-manager.js +13 -10
- package/dist/runtime/channels/channel-socket-options.js +3 -12
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +240 -177
- package/dist/runtime/channels/channel-transports.d.ts +21 -31
- package/dist/runtime/channels/channel-transports.js +80 -62
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +1 -3
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
- package/dist/runtime/channels/source-spot-router.d.ts +1 -1
- package/dist/runtime/channels/source-spot-router.js +2 -4
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-node-route-transport.js +5 -5
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
- package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
- package/dist/runtime/host/actor-packet-relay.js +54 -99
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -171
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +15 -28
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +3 -12
- package/dist/runtime/host/spot-address-transport.js +78 -220
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +309 -336
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/request-deadline.d.ts +3 -0
- package/dist/runtime/messaging/request-deadline.js +39 -0
- package/dist/runtime/messaging/submission-result.d.ts +4 -0
- package/dist/runtime/messaging/submission-result.js +56 -1
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +7 -8
- package/dist/runtime/spots/spot-outbound.js +21 -23
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +12 -2
- package/dist/runtime/streams/index.d.ts +16 -17
- package/dist/runtime/streams/index.js +22 -23
- package/dist/runtime/streams/managed-stream.d.ts +5 -2
- package/dist/runtime/streams/managed-stream.js +20 -13
- package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +6 -8
- package/dist/runtime/streams/session-calls.js +6 -22
- package/dist/runtime/streams/session-context.d.ts +10 -10
- package/dist/runtime/streams/session-context.js +25 -10
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
- package/src/contracts/Channels/Calls.ts +1 -1
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/Builders.ts +0 -1
- package/src/contracts/Configuration/Configs.ts +0 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +2 -2
- package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
- package/src/contracts/Streams/IZLinkSession.ts +2 -3
- package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +85 -218
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +4 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +14 -37
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +139 -102
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +74 -57
- package/src/runtime/channels/channel-outbound-operations.ts +40 -55
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +12 -30
- package/src/runtime/channels/channel-socket-options.ts +8 -15
- package/src/runtime/channels/channel-socket-registry.ts +291 -196
- package/src/runtime/channels/channel-transports.ts +168 -145
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/local-spot-route-transport.ts +1 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
- package/src/runtime/channels/source-spot-router.ts +2 -9
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +7 -9
- package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +63 -160
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -320
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +16 -57
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +175 -356
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +457 -482
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/request-deadline.ts +58 -0
- package/src/runtime/messaging/submission-result.ts +72 -2
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +59 -47
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
- package/src/runtime/streams/bound-session-service.ts +22 -2
- package/src/runtime/streams/index.ts +78 -68
- package/src/runtime/streams/managed-stream.ts +32 -23
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +11 -36
- package/src/runtime/streams/session-context.ts +60 -25
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type RoutingId,
|
|
3
|
+
type Type,
|
|
4
|
+
type ZLinkSpot,
|
|
5
|
+
type ZLinkSpotInfo,
|
|
6
|
+
ZLinkSpotCloseReason,
|
|
7
|
+
ZLinkSpotCreateState
|
|
8
|
+
} from '../../contracts';
|
|
9
|
+
|
|
10
|
+
import { createAbortError } from '../abort';
|
|
1
11
|
import {
|
|
2
12
|
ZLinkFrameworkInternalErrorKind,
|
|
3
13
|
createInternalFrameworkException
|
|
4
14
|
} from '../framework-errors-internal';
|
|
5
|
-
import type { RoutingId, Type, ZLinkSpot, ZLinkSpotInfo } from '../../contracts';
|
|
6
|
-
import type { ZLinkLocalSpotCreateResult } from './spot-manager-internal-contracts';
|
|
7
|
-
import { ZLinkSpotCreateState, ZLinkSpotCloseReason } from '../../contracts';
|
|
8
15
|
import type { ZLinkSpotActivation } from './spot-activation-state';
|
|
9
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
10
|
-
import { createAbortError } from '../abort';
|
|
11
16
|
import { ZLinkSpotLifecycleMetrics } from './spot-lifecycle-metrics';
|
|
17
|
+
import type { ZLinkLocalSpotCreateResult } from './spot-manager-internal-contracts';
|
|
18
|
+
const DEFAULT_ACTIVE_ACTIVATION_BATCH_SIZE = 64;
|
|
19
|
+
|
|
12
20
|
export { ZLinkSpotActivation } from './spot-activation-state';
|
|
13
21
|
|
|
14
22
|
interface PendingSpotActivation {
|
|
@@ -39,11 +47,7 @@ export class ZLinkSpotActivationRegistry {
|
|
|
39
47
|
private readonly lifecycleMetrics: ZLinkSpotLifecycleMetrics;
|
|
40
48
|
private activeScan: Iterator<ZLinkSpotActivation> | undefined;
|
|
41
49
|
|
|
42
|
-
constructor(
|
|
43
|
-
metrics?: import('../diagnostics').ZLinkRuntimeMetrics,
|
|
44
|
-
private readonly isCommittedClose: (meshName: string, spotId: RoutingId) => boolean = () =>
|
|
45
|
-
false
|
|
46
|
-
) {
|
|
50
|
+
constructor(metrics?: import('../diagnostics').ZLinkRuntimeMetrics) {
|
|
47
51
|
this.lifecycleMetrics = new ZLinkSpotLifecycleMetrics(metrics);
|
|
48
52
|
}
|
|
49
53
|
|
|
@@ -58,35 +62,21 @@ export class ZLinkSpotActivationRegistry {
|
|
|
58
62
|
|
|
59
63
|
resolve(meshName: string, spotId: RoutingId): ZLinkSpotActivation | undefined {
|
|
60
64
|
const key = spotActivationKey(meshName, spotId);
|
|
61
|
-
return this.
|
|
62
|
-
this.closing.has(key) ||
|
|
63
|
-
this.failedClose.has(key) ||
|
|
64
|
-
this.staged.has(key)
|
|
65
|
-
? undefined
|
|
66
|
-
: this.activations.get(key);
|
|
65
|
+
return this.staged.has(key) ? undefined : this.activations.get(key);
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
resolveUnique(spotId: RoutingId): ZLinkSpotActivation | undefined {
|
|
70
69
|
const matches = [...this.activations.values()].filter(
|
|
71
70
|
(activation) =>
|
|
72
71
|
String(activation.spotId) === String(spotId) &&
|
|
73
|
-
!this.
|
|
74
|
-
!this.staged.has(spotActivationKey(activation.meshName, activation.spotId)) &&
|
|
75
|
-
!this.closing.has(spotActivationKey(activation.meshName, activation.spotId)) &&
|
|
76
|
-
!this.failedClose.has(spotActivationKey(activation.meshName, activation.spotId))
|
|
72
|
+
!this.staged.has(spotActivationKey(activation.meshName, activation.spotId))
|
|
77
73
|
);
|
|
78
74
|
return matches.length === 1 ? matches[0] : undefined;
|
|
79
75
|
}
|
|
80
76
|
|
|
81
77
|
has(meshName: string, spotId: RoutingId): boolean {
|
|
82
78
|
const key = spotActivationKey(meshName, spotId);
|
|
83
|
-
return (
|
|
84
|
-
!this.isCommittedClose(meshName, spotId) &&
|
|
85
|
-
!this.staged.has(key) &&
|
|
86
|
-
!this.closing.has(key) &&
|
|
87
|
-
!this.failedClose.has(key) &&
|
|
88
|
-
this.activations.has(key)
|
|
89
|
-
);
|
|
79
|
+
return !this.staged.has(key) && this.activations.has(key);
|
|
90
80
|
}
|
|
91
81
|
|
|
92
82
|
list(meshName: string): readonly ZLinkSpotInfo[] {
|
|
@@ -94,12 +84,7 @@ export class ZLinkSpotActivationRegistry {
|
|
|
94
84
|
.filter((activation) => {
|
|
95
85
|
if (activation.meshName !== meshName) return false;
|
|
96
86
|
const key = spotActivationKey(activation.meshName, activation.spotId);
|
|
97
|
-
return (
|
|
98
|
-
!this.isCommittedClose(meshName, activation.spotId) &&
|
|
99
|
-
!this.staged.has(key) &&
|
|
100
|
-
!this.closing.has(key) &&
|
|
101
|
-
!this.failedClose.has(key)
|
|
102
|
-
);
|
|
87
|
+
return !this.staged.has(key);
|
|
103
88
|
})
|
|
104
89
|
.map((activation) => String(activation.spotId))
|
|
105
90
|
.sort((left, right) => left.localeCompare(right))
|
|
@@ -126,7 +111,9 @@ export class ZLinkSpotActivationRegistry {
|
|
|
126
111
|
return this.activations.size > 0;
|
|
127
112
|
}
|
|
128
113
|
|
|
129
|
-
nextActiveActivationBatch(
|
|
114
|
+
nextActiveActivationBatch(
|
|
115
|
+
limit: number = DEFAULT_ACTIVE_ACTIVATION_BATCH_SIZE
|
|
116
|
+
): readonly ZLinkSpotActivation[] {
|
|
130
117
|
if (!Number.isInteger(limit) || limit <= 0)
|
|
131
118
|
throw new RangeError('Activation scan limit must be positive.');
|
|
132
119
|
if (this.activations.size === 0) {
|
|
@@ -262,45 +249,19 @@ export class ZLinkSpotActivationRegistry {
|
|
|
262
249
|
create: () => Promise<ZLinkLocalSpotCreateResult>
|
|
263
250
|
): ZLinkSpotActivationOperation {
|
|
264
251
|
const key = spotActivationKey(meshName, spotId);
|
|
265
|
-
if (this.isCommittedClose(meshName, spotId)) {
|
|
266
|
-
return {
|
|
267
|
-
owner: false,
|
|
268
|
-
ready: Promise.reject(
|
|
269
|
-
createInternalFrameworkException(
|
|
270
|
-
ZLinkFrameworkInternalErrorKind.RequestRejected,
|
|
271
|
-
`Spot '${String(spotId)}' is Closing.`
|
|
272
|
-
)
|
|
273
|
-
)
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
const closing = this.closing.get(key);
|
|
277
|
-
if (closing !== undefined) {
|
|
278
|
-
return {
|
|
279
|
-
owner: false,
|
|
280
|
-
ready: closing.ready
|
|
281
|
-
.catch(() => undefined)
|
|
282
|
-
.then(() => this.getOrBegin(meshName, spotType, spotId, create).ready)
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
if (this.failedClose.has(key)) {
|
|
286
|
-
return {
|
|
287
|
-
owner: false,
|
|
288
|
-
ready: Promise.reject(
|
|
289
|
-
new ZLinkConfigurationException(`Spot '${spotId}' cleanup has not completed.`)
|
|
290
|
-
)
|
|
291
|
-
};
|
|
292
|
-
}
|
|
293
252
|
const existing = this.activations.get(key);
|
|
294
253
|
if (existing !== undefined) {
|
|
295
|
-
if (existing.spotType !== spotType) {
|
|
296
|
-
throw createInternalFrameworkException(
|
|
297
|
-
ZLinkFrameworkInternalErrorKind.SpotTypeMismatch,
|
|
298
|
-
`Spot '${spotId}' already exists with a different spot type.`
|
|
299
|
-
);
|
|
300
|
-
}
|
|
301
254
|
return {
|
|
302
255
|
owner: false,
|
|
303
|
-
ready:
|
|
256
|
+
ready: existing.serial.execute(() => {
|
|
257
|
+
if (existing.spotType !== spotType) {
|
|
258
|
+
throw createInternalFrameworkException(
|
|
259
|
+
ZLinkFrameworkInternalErrorKind.SpotTypeMismatch,
|
|
260
|
+
`Spot '${spotId}' already exists with a different spot type.`
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
return { spotId, state: ZLinkSpotCreateState.Existing };
|
|
264
|
+
})
|
|
304
265
|
};
|
|
305
266
|
}
|
|
306
267
|
|
|
@@ -262,8 +262,8 @@ export class ZLinkSpotActivation {
|
|
|
262
262
|
return this.serialExecutor.admitActorDurablePrefix(actorId, records);
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
sealExecution(
|
|
266
|
-
return this.executionBarrier.seal(
|
|
265
|
+
sealExecution(kind: ZLinkExecutionBarrierSeal['kind'] = 'relocation'): ZLinkExecutionBarrierSeal {
|
|
266
|
+
return this.executionBarrier.seal(kind);
|
|
267
267
|
}
|
|
268
268
|
|
|
269
269
|
waitForExecutionQuiescence(seal: ZLinkExecutionBarrierSeal, signal?: AbortSignal): Promise<void> {
|
|
@@ -114,7 +114,6 @@ export interface ZLinkSpotActivationLifecycleOptions {
|
|
|
114
114
|
readonly routedTransport?: ZLinkSpotRoutedTransport;
|
|
115
115
|
readonly addressTransport?: ZLinkSpotAddressTransport;
|
|
116
116
|
readonly spotRouterChannelIdForMesh?: (meshName: string) => string;
|
|
117
|
-
readonly channelMeshNameForChannel?: (channelName: string) => string | undefined;
|
|
118
117
|
readonly providerResolver?: ZLinkProviderResolver;
|
|
119
118
|
readonly dispatchErrors?: ZLinkDispatchErrorReporter;
|
|
120
119
|
readonly closeErrorSink?: import('../diagnostics/dispatch-error-port').ZLinkDispatchErrorSink;
|
|
@@ -133,7 +132,7 @@ export interface ZLinkSpotActivationLifecycleOptions {
|
|
|
133
132
|
readonly actorTransferRuntime?: ZLinkSpotActorTransferRuntime;
|
|
134
133
|
readonly boundSessionRuntime?: ZLinkSpotBoundSessionRuntime;
|
|
135
134
|
readonly actorHandoffRuntime?: ZLinkSpotActorHandoffRuntime;
|
|
136
|
-
readonly detachedTaskRunner
|
|
135
|
+
readonly detachedTaskRunner: ZLinkDetachedTaskRunner;
|
|
137
136
|
readonly admission?: ZLinkRuntimeAdmissionGate;
|
|
138
137
|
readonly statefulExecutionAllowed?: () => boolean;
|
|
139
138
|
readonly leaveActor: (
|
|
@@ -148,7 +147,6 @@ export interface ZLinkSpotActivationLifecycleOptions {
|
|
|
148
147
|
objectGeneration: bigint,
|
|
149
148
|
signal?: AbortSignal
|
|
150
149
|
) => Promise<boolean>;
|
|
151
|
-
readonly isSpotClosing: (activation: ZLinkSpotActivation) => boolean;
|
|
152
150
|
readonly registerActivation: (activation: ZLinkSpotActivation) => void;
|
|
153
151
|
readonly routeToActorJoinPrewarm?: ZLinkRouteToActorJoinPrewarm;
|
|
154
152
|
readonly releaseLocation: (
|
|
@@ -187,6 +185,9 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
187
185
|
>();
|
|
188
186
|
|
|
189
187
|
constructor(private readonly options: ZLinkSpotActivationLifecycleOptions) {
|
|
188
|
+
if ((options.detachedTaskRunner as unknown) === undefined) {
|
|
189
|
+
throw new ZLinkConfigurationException('Spot activation requires a detached task runner.');
|
|
190
|
+
}
|
|
190
191
|
this.actorAdmission = new ZLinkSpotActorAdmissionCoordinator(options);
|
|
191
192
|
}
|
|
192
193
|
|
|
@@ -255,7 +256,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
255
256
|
const common = {
|
|
256
257
|
meshName,
|
|
257
258
|
spotId,
|
|
258
|
-
objectGeneration:
|
|
259
|
+
objectGeneration: objectGeneration,
|
|
259
260
|
outbound,
|
|
260
261
|
timers,
|
|
261
262
|
serial,
|
|
@@ -343,11 +344,22 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
343
344
|
this.options.registerActivation(activation);
|
|
344
345
|
return activation;
|
|
345
346
|
} catch (error) {
|
|
346
|
-
await
|
|
347
|
-
|
|
348
|
-
|
|
347
|
+
const cleanup = await Promise.allSettled([
|
|
348
|
+
timers.dispose(),
|
|
349
|
+
...(instance === undefined
|
|
350
|
+
? []
|
|
351
|
+
: [disposeLifecycleHandlers(instance, this.options.detachedTaskRunner)]),
|
|
352
|
+
...(nativeSpot === undefined ? [] : [Promise.resolve().then(() => nativeSpot.dispose())])
|
|
353
|
+
]);
|
|
354
|
+
const cleanupErrors = cleanup
|
|
355
|
+
.filter((result): result is PromiseRejectedResult => result.status === 'rejected')
|
|
356
|
+
.map((result) => result.reason);
|
|
357
|
+
if (cleanupErrors.length > 0) {
|
|
358
|
+
throw new AggregateError(
|
|
359
|
+
[error, ...cleanupErrors],
|
|
360
|
+
`Spot '${spotId}' relocation materialization cleanup failed.`
|
|
361
|
+
);
|
|
349
362
|
}
|
|
350
|
-
await nativeSpot?.dispose().catch(() => undefined);
|
|
351
363
|
throw error;
|
|
352
364
|
}
|
|
353
365
|
}
|
|
@@ -358,9 +370,10 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
358
370
|
implementation: Type<TSpot>,
|
|
359
371
|
spotId: RoutingId,
|
|
360
372
|
objectGeneration: bigint,
|
|
361
|
-
signal?: AbortSignal
|
|
373
|
+
signal?: AbortSignal,
|
|
374
|
+
serialOwner?: ZLinkSpotActivation
|
|
362
375
|
): Promise<ZLinkSpotActivation> {
|
|
363
|
-
const serial = new ZLinkSpotSerialTurnExecutor(true, spotId);
|
|
376
|
+
const serial = serialOwner?.serial ?? new ZLinkSpotSerialTurnExecutor(true, spotId);
|
|
364
377
|
const serialExecutor = new ZLinkSpotSerialExecutor(
|
|
365
378
|
serial,
|
|
366
379
|
ZLinkUserSpotExecutionMode.SpotWide,
|
|
@@ -394,7 +407,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
394
407
|
const context = createInstanceSpotContext({
|
|
395
408
|
meshName,
|
|
396
409
|
spotId,
|
|
397
|
-
objectGeneration:
|
|
410
|
+
objectGeneration: objectGeneration,
|
|
398
411
|
handlers: instanceHandlers,
|
|
399
412
|
outbound,
|
|
400
413
|
timers,
|
|
@@ -428,6 +441,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
428
441
|
timers,
|
|
429
442
|
actorHandlers,
|
|
430
443
|
handlers,
|
|
444
|
+
executionBarrier: serialOwner?.executionBarrier,
|
|
431
445
|
externalActorCount: () => this.options.actorCountProvider?.(spotId) ?? 0
|
|
432
446
|
});
|
|
433
447
|
try {
|
|
@@ -445,14 +459,21 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
445
459
|
signal
|
|
446
460
|
}
|
|
447
461
|
);
|
|
448
|
-
await
|
|
462
|
+
await (serialOwner === undefined
|
|
463
|
+
? serial.execute(() => instance!.onInitialize?.())
|
|
464
|
+
: serial.postBarrierTurn(() => instance!.onInitialize?.()));
|
|
449
465
|
this.options.registerActivation(activation);
|
|
450
466
|
return activation;
|
|
451
467
|
} catch (error) {
|
|
452
|
-
await
|
|
453
|
-
|
|
468
|
+
const cleanup = await Promise.allSettled([
|
|
469
|
+
timers.dispose(),
|
|
470
|
+
disposeLifecycleHandlers(instance, this.options.detachedTaskRunner)
|
|
471
|
+
]);
|
|
472
|
+
const cleanupErrors = cleanup
|
|
473
|
+
.filter((result): result is PromiseRejectedResult => result.status === 'rejected')
|
|
474
|
+
.map((result) => result.reason);
|
|
454
475
|
throw new AggregateError(
|
|
455
|
-
[error],
|
|
476
|
+
[error, ...cleanupErrors],
|
|
456
477
|
`Instance Spot '${instanceType}' materialization failed for '${String(spotId)}'.`
|
|
457
478
|
);
|
|
458
479
|
}
|
|
@@ -481,7 +502,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
481
502
|
errors.push(error);
|
|
482
503
|
}
|
|
483
504
|
try {
|
|
484
|
-
await disposeLifecycleHandlers(activation.spot);
|
|
505
|
+
await disposeLifecycleHandlers(activation.spot, this.options.detachedTaskRunner);
|
|
485
506
|
} catch (error) {
|
|
486
507
|
errors.push(error);
|
|
487
508
|
}
|
|
@@ -582,7 +603,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
582
603
|
const context = createSpotContext({
|
|
583
604
|
meshName,
|
|
584
605
|
spotId,
|
|
585
|
-
objectGeneration:
|
|
606
|
+
objectGeneration: spotGeneration,
|
|
586
607
|
handlers,
|
|
587
608
|
outbound,
|
|
588
609
|
timers,
|
|
@@ -665,9 +686,13 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
665
686
|
} else {
|
|
666
687
|
const partialCleanup = await Promise.allSettled([
|
|
667
688
|
timers.dispose(),
|
|
668
|
-
...(spot === undefined
|
|
669
|
-
|
|
670
|
-
|
|
689
|
+
...(spot === undefined
|
|
690
|
+
? []
|
|
691
|
+
: [disposeLifecycleHandlers(spot, this.options.detachedTaskRunner)]),
|
|
692
|
+
Promise.resolve().then(() => nativeSpot.dispose()),
|
|
693
|
+
Promise.resolve().then(() =>
|
|
694
|
+
this.options.locationClaim.release(locationClaim.meshName, spotId)
|
|
695
|
+
)
|
|
671
696
|
]);
|
|
672
697
|
const partialErrors = partialCleanup
|
|
673
698
|
.filter((result): result is PromiseRejectedResult => result.status === 'rejected')
|
|
@@ -714,7 +739,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
714
739
|
const context = createSpotContext({
|
|
715
740
|
meshName,
|
|
716
741
|
spotId,
|
|
717
|
-
objectGeneration:
|
|
742
|
+
objectGeneration: objectGeneration,
|
|
718
743
|
handlers,
|
|
719
744
|
outbound,
|
|
720
745
|
timers,
|
|
@@ -796,12 +821,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
796
821
|
seal: import('../execution').ZLinkExecutionBarrierSeal,
|
|
797
822
|
signal?: AbortSignal
|
|
798
823
|
): Promise<void> {
|
|
799
|
-
|
|
800
|
-
await activation.waitForExecutionQuiescence(seal, signal);
|
|
801
|
-
} catch (error) {
|
|
802
|
-
activation.abortExecutionSeal(seal);
|
|
803
|
-
throw error;
|
|
804
|
-
}
|
|
824
|
+
await activation.waitForExecutionQuiescence(seal, signal);
|
|
805
825
|
if (!activation.commitExecutionSeal(seal)) {
|
|
806
826
|
throw new Error(`Spot '${String(activation.spotId)}' close seal is stale.`);
|
|
807
827
|
}
|
|
@@ -824,6 +844,18 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
824
844
|
);
|
|
825
845
|
}
|
|
826
846
|
|
|
847
|
+
async cleanupFailedIncarnation(activation: ZLinkSpotActivation): Promise<void> {
|
|
848
|
+
await this.cleanupActivation(
|
|
849
|
+
activation,
|
|
850
|
+
activation.meshName,
|
|
851
|
+
false,
|
|
852
|
+
undefined,
|
|
853
|
+
ZLinkSpotCloseReason.ExplicitClose,
|
|
854
|
+
undefined,
|
|
855
|
+
true
|
|
856
|
+
);
|
|
857
|
+
}
|
|
858
|
+
|
|
827
859
|
async dispatchActorPacket(
|
|
828
860
|
activation: ZLinkSpotActivation,
|
|
829
861
|
actorId: string,
|
|
@@ -1040,7 +1072,7 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
1040
1072
|
}
|
|
1041
1073
|
if (!state.handlersDisposed) {
|
|
1042
1074
|
await cleanup(
|
|
1043
|
-
() => disposeLifecycleHandlers(activation.spot),
|
|
1075
|
+
() => disposeLifecycleHandlers(activation.spot, this.options.detachedTaskRunner),
|
|
1044
1076
|
() => {
|
|
1045
1077
|
state.handlersDisposed = true;
|
|
1046
1078
|
}
|
|
@@ -1064,6 +1096,13 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
1064
1096
|
}
|
|
1065
1097
|
if (
|
|
1066
1098
|
!state.locationReleased &&
|
|
1099
|
+
// Spot messaging §7 step 3: an Instance Spot's ExplicitClose releases its authority
|
|
1100
|
+
// through the Close operation's Closing fence; a User Spot still releases its location.
|
|
1101
|
+
!(
|
|
1102
|
+
owningLifecycle &&
|
|
1103
|
+
reason === ZLinkSpotCloseReason.ExplicitClose &&
|
|
1104
|
+
activation.domain.kind === 'instance'
|
|
1105
|
+
) &&
|
|
1067
1106
|
state.timersDisposed &&
|
|
1068
1107
|
state.serialDisposed &&
|
|
1069
1108
|
state.handlersDisposed &&
|
|
@@ -1101,12 +1140,3 @@ export class ZLinkSpotActivationLifecycle {
|
|
|
1101
1140
|
}
|
|
1102
1141
|
}
|
|
1103
1142
|
}
|
|
1104
|
-
|
|
1105
|
-
function toContextGeneration(generation: bigint): number {
|
|
1106
|
-
if (generation < 0n || generation > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
1107
|
-
throw new ZLinkConfigurationException(
|
|
1108
|
-
`Spot object generation '${generation}' cannot be represented by the Node.js public context.`
|
|
1109
|
-
);
|
|
1110
|
-
}
|
|
1111
|
-
return Number(generation);
|
|
1112
|
-
}
|
|
@@ -16,7 +16,6 @@ import { ZLinkSpotActivation } from './spot-activation-state';
|
|
|
16
16
|
import { ZLinkSpotActorJoinDispatch } from './spot-actor-join-dispatch';
|
|
17
17
|
import { ZLinkSpotActorPacketDispatch } from './spot-actor-packet-dispatch';
|
|
18
18
|
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
19
|
-
import type { ZLinkNativeActorJoinSnapshot } from './spot-runtime-ports';
|
|
20
19
|
|
|
21
20
|
type AdmissionOptions = Pick<
|
|
22
21
|
ZLinkSpotActivationLifecycleOptions,
|
|
@@ -34,7 +33,6 @@ type AdmissionOptions = Pick<
|
|
|
34
33
|
| 'providerResolver'
|
|
35
34
|
| 'runtimeEventPublisher'
|
|
36
35
|
| 'routeToActorJoinPrewarm'
|
|
37
|
-
| 'isSpotClosing'
|
|
38
36
|
>;
|
|
39
37
|
|
|
40
38
|
export class ZLinkSpotActorAdmissionCoordinator {
|
|
@@ -97,7 +95,6 @@ export class ZLinkSpotActorAdmissionCoordinator {
|
|
|
97
95
|
'TopicMessage'
|
|
98
96
|
),
|
|
99
97
|
serial: activation.serial,
|
|
100
|
-
isSpotClosing: () => this.options.isSpotClosing(activation),
|
|
101
98
|
actors: {
|
|
102
99
|
resolveActor: (actorId) =>
|
|
103
100
|
activation.hasDepartedActor(actorId)
|
|
@@ -112,10 +109,9 @@ export class ZLinkSpotActorAdmissionCoordinator {
|
|
|
112
109
|
kind: 'enabled',
|
|
113
110
|
runtime: this.options.actorTransferRuntime
|
|
114
111
|
},
|
|
115
|
-
commitNativeActor: (actor) => this.commitNativeActorTransaction(activation, actor),
|
|
116
112
|
commitActorDeparture: (actorId) => activation.commitActorDeparture(actorId),
|
|
117
|
-
commitTransferredActor: (actor, backlog) =>
|
|
118
|
-
this.commitTransferredActorTransaction(activation, actor, backlog)
|
|
113
|
+
commitTransferredActor: (actor, backlog, sealedSession) =>
|
|
114
|
+
this.commitTransferredActorTransaction(activation, actor, backlog, sealedSession)
|
|
119
115
|
},
|
|
120
116
|
packets: {
|
|
121
117
|
handle: (delivery) =>
|
|
@@ -130,16 +126,6 @@ export class ZLinkSpotActorAdmissionCoordinator {
|
|
|
130
126
|
bindRemoteSession: (actor, sourceNodeRid, sourceSessionRid) => {
|
|
131
127
|
const node = this.options.nativeSpotNodeProvider?.(activation.meshName);
|
|
132
128
|
if (node === undefined || routingIdsEqual(sourceNodeRid, node.routingId)) return;
|
|
133
|
-
const target = this.options.boundSessionRuntime?.resolveRemoteBoundSessionTarget(
|
|
134
|
-
sourceNodeRid,
|
|
135
|
-
sourceSessionRid
|
|
136
|
-
);
|
|
137
|
-
if (target !== undefined) {
|
|
138
|
-
this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(
|
|
139
|
-
actor.actorId,
|
|
140
|
-
target
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
129
|
node.bindRemoteActorSession(actor, sourceNodeRid, sourceSessionRid);
|
|
144
130
|
},
|
|
145
131
|
replyNoBind: (info, parts, result) =>
|
|
@@ -251,8 +237,6 @@ export class ZLinkSpotActorAdmissionCoordinator {
|
|
|
251
237
|
: (activation.resolveJoinedActor(targetActorId) ??
|
|
252
238
|
this.options.actorResolver?.(targetActorId)),
|
|
253
239
|
actorLeft: (targetActorId) => activation.hasDepartedActor(targetActorId),
|
|
254
|
-
onRemoteBoundSessionTarget: (targetActorId, target) =>
|
|
255
|
-
this.options.boundSessionRuntime?.rememberRemoteBoundSessionTarget(targetActorId, target),
|
|
256
240
|
onDisconnectActor: (actor) =>
|
|
257
241
|
activation.serial.execute(() => activation.spot.onDisconnectActor?.(actor)),
|
|
258
242
|
actorResponseSender: this.options.boundSessionRuntime?.sendActorResponse.bind(
|
|
@@ -275,47 +259,11 @@ export class ZLinkSpotActorAdmissionCoordinator {
|
|
|
275
259
|
);
|
|
276
260
|
}
|
|
277
261
|
|
|
278
|
-
private async commitNativeActorTransaction(
|
|
279
|
-
activation: ZLinkSpotActivation,
|
|
280
|
-
actor: ZLinkActor
|
|
281
|
-
): Promise<void> {
|
|
282
|
-
const transfer = this.options.actorTransferRuntime;
|
|
283
|
-
let snapshot: ZLinkNativeActorJoinSnapshot | undefined;
|
|
284
|
-
let rollbackMembership: (() => void) | undefined;
|
|
285
|
-
let routeSwitchStarted = false;
|
|
286
|
-
try {
|
|
287
|
-
snapshot = await transfer?.claimNativeActorLocation(
|
|
288
|
-
actor,
|
|
289
|
-
activation.spotId,
|
|
290
|
-
activation.meshName
|
|
291
|
-
);
|
|
292
|
-
transfer?.commitRoutedActor(actor, activation.spotId, activation.spot);
|
|
293
|
-
rollbackMembership = activation.commitActorJoin(actor);
|
|
294
|
-
activation.beginActorTransfer(actor.context.actorId);
|
|
295
|
-
await activation.serial.execute(() => activation.spot.onJoinedActor(actor));
|
|
296
|
-
routeSwitchStarted = true;
|
|
297
|
-
await transfer?.publishRoutedActorOwnership(actor);
|
|
298
|
-
await transfer?.openRoutedActorSession(actor);
|
|
299
|
-
activation.cancelActorTransfer(actor.context.actorId);
|
|
300
|
-
} catch (error) {
|
|
301
|
-
if (routeSwitchStarted) throw error;
|
|
302
|
-
rollbackMembership?.();
|
|
303
|
-
try {
|
|
304
|
-
if (snapshot !== undefined) await transfer?.rollbackNativeActorJoin(actor, snapshot);
|
|
305
|
-
} catch (rollbackError) {
|
|
306
|
-
throw new AggregateError(
|
|
307
|
-
[error, rollbackError],
|
|
308
|
-
'Native actor admission and rollback both failed.'
|
|
309
|
-
);
|
|
310
|
-
}
|
|
311
|
-
throw error;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
|
|
315
262
|
private async commitTransferredActorTransaction(
|
|
316
263
|
activation: ZLinkSpotActivation,
|
|
317
264
|
actor: ZLinkActor,
|
|
318
|
-
backlog: readonly ZLinkActorHandoffPacket[]
|
|
265
|
+
backlog: readonly ZLinkActorHandoffPacket[],
|
|
266
|
+
sealedSession: ZLinkRemoteBoundSessionTarget | undefined
|
|
319
267
|
): Promise<readonly ZLinkActorHandoffResult[]> {
|
|
320
268
|
const transfer = this.options.actorTransferRuntime;
|
|
321
269
|
let routeSwitchStarted = false;
|
|
@@ -328,7 +276,7 @@ export class ZLinkSpotActorAdmissionCoordinator {
|
|
|
328
276
|
backlog.length === 0 ? [] : await this.replayActorBacklog(activation, actor, backlog);
|
|
329
277
|
await transfer?.claimRoutedActorLocation(actor, activation.spotId, activation.meshName);
|
|
330
278
|
routeSwitchStarted = true;
|
|
331
|
-
await transfer?.publishRoutedActorOwnership(actor);
|
|
279
|
+
await transfer?.publishRoutedActorOwnership(actor, sealedSession);
|
|
332
280
|
await transfer?.openRoutedActorSession(actor);
|
|
333
281
|
activation.cancelActorTransfer(actor.context.actorId);
|
|
334
282
|
return results;
|