@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,41 +1,52 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ZLinkActorGetOrCreateCall,
|
|
14
|
-
ZLinkActorManager
|
|
2
|
+
type ActorRef,
|
|
3
|
+
type RoutingId,
|
|
4
|
+
type SpotRef,
|
|
5
|
+
type ZLinkActor,
|
|
6
|
+
type ZLinkActorCreateCall,
|
|
7
|
+
type ZLinkActorCreateResult,
|
|
8
|
+
type ZLinkActorGetOrCreateCall,
|
|
9
|
+
type ZLinkActorManager,
|
|
10
|
+
ZLinkEncodedPayload,
|
|
11
|
+
ZLinkFrameworkException,
|
|
12
|
+
ZLinkMessage
|
|
15
13
|
} from '../../contracts';
|
|
16
|
-
import {
|
|
17
|
-
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
18
|
-
import { ZLinkMessage } from '../../contracts';
|
|
19
|
-
import { ZLinkConfigurationException } from '../configuration';
|
|
14
|
+
import { DEFAULT_REQUEST_TIMEOUT_MS } from '../../contracts/Configuration/Registration';
|
|
20
15
|
import { throwIfAborted } from '../abort';
|
|
21
16
|
import type { ZLinkBackendActorRef, ZLinkBackendSpotNode } from '../backend/contracts';
|
|
22
17
|
import { closeMeshCompletion } from '../backend/mesh-completion-table';
|
|
18
|
+
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
19
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
20
|
+
import { METRIC_NAMES } from '../diagnostics/runtime-metrics';
|
|
23
21
|
import {
|
|
24
22
|
captureZLinkSpotSerialTurn,
|
|
25
23
|
requireZLinkYieldTurn,
|
|
26
24
|
type ZLinkSpotSerialTurn
|
|
27
25
|
} from '../execution';
|
|
26
|
+
import {
|
|
27
|
+
ZLinkFrameworkInternalErrorKind,
|
|
28
|
+
createInternalFrameworkException,
|
|
29
|
+
wireReplyFailureException
|
|
30
|
+
} from '../framework-errors-internal';
|
|
28
31
|
import { disposeLifecycleHandlers } from '../handlers/handler-instance-scope';
|
|
32
|
+
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
33
|
+
import { ZLinkActorCreationCoordinator, type ZLinkActorCreateRequest } from './actor-creation';
|
|
34
|
+
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
35
|
+
import {
|
|
36
|
+
ZLinkActorRuntimeState,
|
|
37
|
+
toFrameworkActorRef,
|
|
38
|
+
type ZLinkActorCreationAttemptResult
|
|
39
|
+
} from './actor-runtime-state';
|
|
40
|
+
import { ZLinkTransferredActorRollbackCoordinator } from './transferred-actor-rollback';
|
|
41
|
+
const ACTOR_CREATION_RETRY_INTERVAL_MS = 5;
|
|
42
|
+
const LOCAL_DIAGNOSTIC_NODE_RID = 'local';
|
|
29
43
|
|
|
30
44
|
export {
|
|
31
45
|
DefaultZLinkActorClient,
|
|
32
46
|
forwardEncodedActorPacket,
|
|
33
47
|
type ZLinkActorClientOptions
|
|
34
48
|
} from './actor-client';
|
|
35
|
-
|
|
36
|
-
import { encodeFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
37
49
|
export { DefaultZLinkActorContext, ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME } from './actor-context';
|
|
38
|
-
import { ZLinkActorCreationCoordinator, type ZLinkActorCreateRequest } from './actor-creation';
|
|
39
50
|
export { ZLinkActorSerialExecutor } from './actor-mailbox';
|
|
40
51
|
export {
|
|
41
52
|
DEFAULT_MESSAGE_FOLLOW_DURATION_MS,
|
|
@@ -60,8 +71,6 @@ export {
|
|
|
60
71
|
} from './actor-message-follow-context';
|
|
61
72
|
export {
|
|
62
73
|
ZLinkActorRuntimeState,
|
|
63
|
-
mergeRemoteBoundSessionTarget,
|
|
64
|
-
preferredRemoteBoundSessionTarget,
|
|
65
74
|
toFrameworkActorRef,
|
|
66
75
|
toFrameworkRoutingId,
|
|
67
76
|
type ZLinkActorCreationOperation,
|
|
@@ -82,11 +91,6 @@ export {
|
|
|
82
91
|
publishInitialActorAuthority,
|
|
83
92
|
type ZLinkActorAuthorityIdentity
|
|
84
93
|
} from './actor-authority-publication';
|
|
85
|
-
import {
|
|
86
|
-
ZLinkActorRuntimeState,
|
|
87
|
-
toFrameworkActorRef,
|
|
88
|
-
type ZLinkActorCreationAttemptResult
|
|
89
|
-
} from './actor-runtime-state';
|
|
90
94
|
export {
|
|
91
95
|
ZLinkActorPacketKind,
|
|
92
96
|
ZLinkSpotActorDispatcher,
|
|
@@ -104,8 +108,6 @@ export type {
|
|
|
104
108
|
ZLinkActorJoinCoordinator,
|
|
105
109
|
ZLinkActorManagerOptions
|
|
106
110
|
} from './actor-runtime-contracts';
|
|
107
|
-
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
108
|
-
import { ZLinkTransferredActorRollbackCoordinator } from './transferred-actor-rollback';
|
|
109
111
|
export {
|
|
110
112
|
ZLinkActorTransferRegistry,
|
|
111
113
|
type ZLinkActorTransferPayloadState
|
|
@@ -143,11 +145,18 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
143
145
|
private readonly creation: ZLinkActorCreationCoordinator;
|
|
144
146
|
private readonly transferredActorRollback: ZLinkTransferredActorRollbackCoordinator;
|
|
145
147
|
|
|
146
|
-
constructor(
|
|
148
|
+
constructor(
|
|
149
|
+
private readonly options: ZLinkActorManagerOptions,
|
|
150
|
+
private readonly detachedTaskRunner: import('../spots/spot-actor-join-dispatch').ZLinkDetachedTaskRunner
|
|
151
|
+
) {
|
|
152
|
+
if ((detachedTaskRunner as unknown) === undefined) {
|
|
153
|
+
throw new Error('Actor manager requires a detached task runner.');
|
|
154
|
+
}
|
|
147
155
|
this.creation = new ZLinkActorCreationCoordinator(options);
|
|
148
156
|
this.transferredActorRollback = new ZLinkTransferredActorRollbackCoordinator(
|
|
149
157
|
this.states,
|
|
150
|
-
options
|
|
158
|
+
options,
|
|
159
|
+
(actorId, state) => this.finalizeDestroyedActor(actorId, state)
|
|
151
160
|
);
|
|
152
161
|
}
|
|
153
162
|
|
|
@@ -204,7 +213,6 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
204
213
|
`Actor '${actor.actorId}' is relocating.`
|
|
205
214
|
);
|
|
206
215
|
}
|
|
207
|
-
const actorInstance = state.actor;
|
|
208
216
|
const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
|
|
209
217
|
const completions = this.options.nativeActorCompletionTableProvider?.();
|
|
210
218
|
const entryNodeRid = state.entryNodeRid ?? current.nodeRid;
|
|
@@ -233,14 +241,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
233
241
|
if (state.actorType !== undefined && state.ownsLocation) {
|
|
234
242
|
await this.options.locationLifecycle?.releaseActor(state.actorType, actor.actorId, current);
|
|
235
243
|
}
|
|
236
|
-
this.
|
|
237
|
-
await disposeLifecycleHandlers(actorInstance);
|
|
238
|
-
state.clearAfterDestroy();
|
|
239
|
-
if (this.states.get(actor.actorId) === state) {
|
|
240
|
-
this.states.delete(actor.actorId);
|
|
241
|
-
this.actorMeshNames.delete(actor.actorId);
|
|
242
|
-
}
|
|
243
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
244
|
+
await this.finalizeDestroyedActor(actor.actorId, state);
|
|
244
245
|
});
|
|
245
246
|
try {
|
|
246
247
|
await destroyTask;
|
|
@@ -262,7 +263,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
262
263
|
const state = this.getOrCreateState(actorId);
|
|
263
264
|
this.rememberActorMeshFromType(actorId, actorType);
|
|
264
265
|
if (state.actor !== undefined) {
|
|
265
|
-
await disposeLifecycleHandlers(state.actor);
|
|
266
|
+
await disposeLifecycleHandlers(state.actor, this.detachedTaskRunner);
|
|
266
267
|
}
|
|
267
268
|
state.prepareForRemoteReentry();
|
|
268
269
|
const operation = state.getOrStartCreation(actorType, false, () =>
|
|
@@ -407,7 +408,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
407
408
|
actorType: string,
|
|
408
409
|
objectGeneration: bigint,
|
|
409
410
|
authorityOwnerGeneration: bigint,
|
|
410
|
-
spotId: RoutingId,
|
|
411
|
+
spotId: RoutingId | undefined,
|
|
411
412
|
spotGeneration: bigint,
|
|
412
413
|
membershipEpoch: bigint,
|
|
413
414
|
signal?: AbortSignal,
|
|
@@ -433,7 +434,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
433
434
|
actorType,
|
|
434
435
|
objectGeneration,
|
|
435
436
|
authorityOwnerGeneration,
|
|
436
|
-
String(spotId),
|
|
437
|
+
spotId === undefined ? undefined : String(spotId),
|
|
437
438
|
spotGeneration,
|
|
438
439
|
membershipEpoch
|
|
439
440
|
);
|
|
@@ -456,18 +457,13 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
456
457
|
await registry.restore(transfer.adapterKey, actor, transfer.state, signal);
|
|
457
458
|
}
|
|
458
459
|
state.setLocationGeneration(authorityOwnerGeneration);
|
|
459
|
-
state.setJoinedSpot(spotId, undefined, membershipEpoch);
|
|
460
|
+
if (spotId !== undefined) state.setJoinedSpot(spotId, undefined, membershipEpoch);
|
|
460
461
|
return actor;
|
|
461
462
|
} catch (error) {
|
|
462
463
|
if (nativeRef !== undefined) node.discardRelocatedActor?.(nativeRef);
|
|
463
464
|
this.relocationStaged.delete(actorId);
|
|
464
465
|
const failedState = this.states.get(actorId);
|
|
465
|
-
|
|
466
|
-
await disposeLifecycleHandlers(failedState.actor);
|
|
467
|
-
}
|
|
468
|
-
failedState?.clearAfterDestroy();
|
|
469
|
-
this.states.delete(actorId);
|
|
470
|
-
this.actorMeshNames.delete(actorId);
|
|
466
|
+
await this.finalizeActorState(actorId, failedState);
|
|
471
467
|
throw error;
|
|
472
468
|
}
|
|
473
469
|
}
|
|
@@ -497,29 +493,61 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
497
493
|
const state = this.states.get(actorId);
|
|
498
494
|
const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
|
|
499
495
|
const nativeActorRef = exactNativeActorRef ?? state?.nativeActorRef;
|
|
500
|
-
|
|
501
|
-
|
|
496
|
+
const failures: unknown[] = [];
|
|
497
|
+
try {
|
|
498
|
+
if (nativeActorRef !== undefined) {
|
|
499
|
+
node?.discardRelocatedActor?.(nativeActorRef);
|
|
500
|
+
}
|
|
501
|
+
} catch (error) {
|
|
502
|
+
failures.push(error);
|
|
502
503
|
}
|
|
503
|
-
|
|
504
|
-
await
|
|
504
|
+
try {
|
|
505
|
+
await this.completeCoreRelocationSource(actorId);
|
|
506
|
+
} catch (error) {
|
|
507
|
+
failures.push(error);
|
|
508
|
+
}
|
|
509
|
+
if (failures.length > 0) {
|
|
510
|
+
throw failures.length === 1
|
|
511
|
+
? failures[0]
|
|
512
|
+
: new AggregateError(failures, 'Actor relocation cleanup failed.');
|
|
505
513
|
}
|
|
506
|
-
state?.clearAfterDestroy();
|
|
507
|
-
this.states.delete(actorId);
|
|
508
|
-
this.actorMeshNames.delete(actorId);
|
|
509
|
-
this.relocationStaged.delete(actorId);
|
|
510
514
|
}
|
|
511
515
|
|
|
512
516
|
async completeCoreRelocationSource(actorId: string): Promise<void> {
|
|
513
517
|
const state = this.states.get(actorId);
|
|
514
|
-
|
|
515
|
-
|
|
518
|
+
await this.finalizeActorState(actorId, state);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
private async finalizeActorState(
|
|
522
|
+
actorId: string,
|
|
523
|
+
state: ZLinkActorRuntimeState | undefined
|
|
524
|
+
): Promise<void> {
|
|
525
|
+
if (state === undefined || this.states.get(actorId) !== state) return;
|
|
526
|
+
try {
|
|
527
|
+
if (state.actor !== undefined)
|
|
528
|
+
await disposeLifecycleHandlers(state.actor, this.detachedTaskRunner);
|
|
529
|
+
} finally {
|
|
530
|
+
state.clearAfterDestroy();
|
|
531
|
+
if (this.states.get(actorId) === state) {
|
|
532
|
+
this.states.delete(actorId);
|
|
533
|
+
this.actorMeshNames.delete(actorId);
|
|
534
|
+
this.relocationStaged.delete(actorId);
|
|
535
|
+
}
|
|
516
536
|
}
|
|
517
|
-
state?.clearAfterDestroy();
|
|
518
|
-
this.states.delete(actorId);
|
|
519
|
-
this.actorMeshNames.delete(actorId);
|
|
520
|
-
this.relocationStaged.delete(actorId);
|
|
521
537
|
}
|
|
522
538
|
|
|
539
|
+
private async finalizeDestroyedActor(
|
|
540
|
+
actorId: string,
|
|
541
|
+
state: ZLinkActorRuntimeState
|
|
542
|
+
): Promise<void> {
|
|
543
|
+
if (this.states.get(actorId) !== state) return;
|
|
544
|
+
try {
|
|
545
|
+
this.options.actorDestroyedCleanup?.(actorId);
|
|
546
|
+
} finally {
|
|
547
|
+
await this.finalizeActorState(actorId, state);
|
|
548
|
+
this.options.metrics?.change(METRIC_NAMES.ActorCount, -1);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
523
551
|
async getOrCreateActor(
|
|
524
552
|
actorId: string,
|
|
525
553
|
actorType: string,
|
|
@@ -569,7 +597,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
569
597
|
createRequest,
|
|
570
598
|
signal,
|
|
571
599
|
false,
|
|
572
|
-
|
|
600
|
+
DEFAULT_REQUEST_TIMEOUT_MS,
|
|
573
601
|
nativeActorRef
|
|
574
602
|
);
|
|
575
603
|
}
|
|
@@ -634,14 +662,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
634
662
|
destroyedActorRef
|
|
635
663
|
);
|
|
636
664
|
}
|
|
637
|
-
this.
|
|
638
|
-
await disposeLifecycleHandlers(actor);
|
|
639
|
-
state.clearAfterDestroy();
|
|
640
|
-
if (this.states.get(actor.context.actorId) === state) {
|
|
641
|
-
this.states.delete(actor.context.actorId);
|
|
642
|
-
this.actorMeshNames.delete(actor.context.actorId);
|
|
643
|
-
}
|
|
644
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
665
|
+
await this.finalizeDestroyedActor(actor.context.actorId, state);
|
|
645
666
|
});
|
|
646
667
|
|
|
647
668
|
try {
|
|
@@ -659,7 +680,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
659
680
|
request: unknown,
|
|
660
681
|
signal?: AbortSignal,
|
|
661
682
|
claimLocation = true,
|
|
662
|
-
timeoutMs =
|
|
683
|
+
timeoutMs: number = DEFAULT_REQUEST_TIMEOUT_MS,
|
|
663
684
|
nativeActorRef?: ZLinkBackendActorRef
|
|
664
685
|
): Promise<ZLinkActorLocalCreateResult> {
|
|
665
686
|
const deadline = performance.now() + timeoutMs;
|
|
@@ -766,7 +787,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
766
787
|
if (this.states.get(actorId) === state) {
|
|
767
788
|
this.states.delete(actorId);
|
|
768
789
|
this.actorMeshNames.delete(actorId);
|
|
769
|
-
this.options.metrics?.change(
|
|
790
|
+
this.options.metrics?.change(METRIC_NAMES.ActorCount, -1);
|
|
770
791
|
}
|
|
771
792
|
}
|
|
772
793
|
|
|
@@ -797,7 +818,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
797
818
|
state.rememberMeshName(remembered);
|
|
798
819
|
}
|
|
799
820
|
this.states.set(actorId, state);
|
|
800
|
-
this.options.metrics?.change(
|
|
821
|
+
this.options.metrics?.change(METRIC_NAMES.ActorCount, 1);
|
|
801
822
|
return state;
|
|
802
823
|
}
|
|
803
824
|
|
|
@@ -810,7 +831,7 @@ export class DefaultZLinkActorManager implements ZLinkActorManager {
|
|
|
810
831
|
actorId: state.actorId,
|
|
811
832
|
objectGeneration: 1n,
|
|
812
833
|
meshName: state.meshName ?? '',
|
|
813
|
-
nodeRid: this.options.actorCreatedNodeRidProvider?.() ??
|
|
834
|
+
nodeRid: this.options.actorCreatedNodeRidProvider?.() ?? LOCAL_DIAGNOSTIC_NODE_RID
|
|
814
835
|
};
|
|
815
836
|
}
|
|
816
837
|
}
|
|
@@ -830,7 +851,7 @@ class ZLinkActorCreateCallRuntime implements ZLinkActorCreateCall {
|
|
|
830
851
|
private meshNameValue: string | undefined;
|
|
831
852
|
private requestValue: unknown;
|
|
832
853
|
private requestConfigured = false;
|
|
833
|
-
private timeoutMsValue =
|
|
854
|
+
private timeoutMsValue: number = DEFAULT_REQUEST_TIMEOUT_MS;
|
|
834
855
|
private timeoutConfigured = false;
|
|
835
856
|
private submitted = false;
|
|
836
857
|
private readonly turn: ZLinkSpotSerialTurn | undefined = captureZLinkSpotSerialTurn();
|
|
@@ -955,7 +976,7 @@ async function waitForCreationRetry(signal?: AbortSignal): Promise<void> {
|
|
|
955
976
|
if (error === undefined) resolve();
|
|
956
977
|
else reject(error);
|
|
957
978
|
};
|
|
958
|
-
const timer = setTimeout(() => finish(),
|
|
979
|
+
const timer = setTimeout(() => finish(), ACTOR_CREATION_RETRY_INTERVAL_MS);
|
|
959
980
|
const onAbort = () => {
|
|
960
981
|
finish(signal?.reason ?? new Error('Actor creation was aborted.'));
|
|
961
982
|
};
|
|
@@ -1,28 +1,31 @@
|
|
|
1
|
+
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
1
2
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ZLinkSpotActorSendHandler
|
|
3
|
+
type Type,
|
|
4
|
+
type ZLinkActor,
|
|
5
|
+
type ZLinkActorHandlerRegistry,
|
|
6
|
+
type ZLinkMessageContext,
|
|
7
|
+
type ZLinkMessageSerializer,
|
|
8
|
+
type ZLinkSpot,
|
|
9
|
+
type ZLinkSpotActorJoinResult,
|
|
10
|
+
type ZLinkSpotActorRequestHandler,
|
|
11
|
+
type ZLinkSpotActorSendHandler,
|
|
12
|
+
ZLinkFrameworkException,
|
|
13
|
+
ZLinkMessageMetadataEmpty
|
|
14
14
|
} from '../../contracts';
|
|
15
|
-
|
|
16
|
-
import { ZLinkFrameworkException, ZLinkMessageMetadataEmpty } from '../../contracts';
|
|
15
|
+
|
|
17
16
|
import type { Message } from '../../contracts/Common/Message';
|
|
18
|
-
import {
|
|
17
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
19
18
|
import { readZLinkDecoratorMetadata } from '../../contracts/Handlers/Attributes';
|
|
19
|
+
import { ZLinkConfigurationException } from '../configuration';
|
|
20
|
+
import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
|
|
21
|
+
import {
|
|
22
|
+
ZLinkFrameworkInternalErrorKind,
|
|
23
|
+
createInternalFrameworkException
|
|
24
|
+
} from '../framework-errors-internal';
|
|
25
|
+
import { runWithLifecycleHandler } from '../handlers/handler-instance-scope';
|
|
20
26
|
import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
|
|
21
|
-
import type { ZLinkMessageSerializer } from '../../contracts';
|
|
22
|
-
import { actorJoinIdentity } from './actor-lifecycle-snapshot';
|
|
23
27
|
import { runActorHandlerWithDeferredJoins } from './actor-join-deferred-scope';
|
|
24
|
-
import {
|
|
25
|
-
import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
|
|
28
|
+
import { actorJoinIdentity } from './actor-lifecycle-snapshot';
|
|
26
29
|
|
|
27
30
|
export enum ZLinkActorPacketKind {
|
|
28
31
|
Send = 'send',
|
|
@@ -34,6 +37,7 @@ export interface ZLinkActorPacketDescriptor {
|
|
|
34
37
|
readonly packetName: string;
|
|
35
38
|
readonly actorType: Type<ZLinkActor>;
|
|
36
39
|
readonly handlerType: Type;
|
|
40
|
+
readonly methodName?: string;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRegistry {
|
|
@@ -56,7 +60,8 @@ export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRe
|
|
|
56
60
|
: ZLinkActorPacketKind.Request,
|
|
57
61
|
packetName: resolvedPacketName,
|
|
58
62
|
actorType: Object as unknown as Type<ZLinkActor>,
|
|
59
|
-
handlerType
|
|
63
|
+
handlerType,
|
|
64
|
+
methodName: metadata.methodName
|
|
60
65
|
});
|
|
61
66
|
}
|
|
62
67
|
|
|
@@ -67,7 +72,16 @@ export class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRe
|
|
|
67
72
|
`Actor packet '${descriptor.packetName}' for '${descriptor.actorType.name}' is already registered.`
|
|
68
73
|
);
|
|
69
74
|
}
|
|
70
|
-
|
|
75
|
+
const metadata = readZLinkDecoratorMetadata(descriptor.handlerType).find(
|
|
76
|
+
(entry) =>
|
|
77
|
+
entry.kind ===
|
|
78
|
+
(descriptor.kind === ZLinkActorPacketKind.Send ? 'spotActorSend' : 'spotActorRequest') &&
|
|
79
|
+
entry.packetName === descriptor.packetName
|
|
80
|
+
);
|
|
81
|
+
this.packets.set(key, {
|
|
82
|
+
...descriptor,
|
|
83
|
+
methodName: descriptor.methodName ?? metadata?.methodName
|
|
84
|
+
});
|
|
71
85
|
return this;
|
|
72
86
|
}
|
|
73
87
|
|
|
@@ -144,9 +158,10 @@ export class ZLinkSpotActorDispatcher {
|
|
|
144
158
|
await this.invokeHandler<ZLinkSpotActorSendHandler<ZLinkSpot, ZLinkActor, TMessage>, void>(
|
|
145
159
|
actor,
|
|
146
160
|
descriptor,
|
|
147
|
-
(handler) =>
|
|
161
|
+
(handler, method) =>
|
|
148
162
|
runActorHandlerWithDeferredJoins(() =>
|
|
149
|
-
|
|
163
|
+
method.call(
|
|
164
|
+
handler,
|
|
150
165
|
this.options.spot,
|
|
151
166
|
actor,
|
|
152
167
|
this.createContext(packetName, context),
|
|
@@ -232,10 +247,11 @@ export class ZLinkSpotActorDispatcher {
|
|
|
232
247
|
return await this.invokeHandler<
|
|
233
248
|
ZLinkSpotActorRequestHandler<ZLinkSpot, ZLinkActor, TRequest, TReply>,
|
|
234
249
|
TResult
|
|
235
|
-
>(actor, descriptor, (handler) =>
|
|
250
|
+
>(actor, descriptor, (handler, method) =>
|
|
236
251
|
runActorHandlerWithDeferredJoins(
|
|
237
252
|
() =>
|
|
238
|
-
|
|
253
|
+
method.call(
|
|
254
|
+
handler,
|
|
239
255
|
this.options.spot,
|
|
240
256
|
actor,
|
|
241
257
|
this.createContext(packetName, context),
|
|
@@ -274,7 +290,7 @@ export class ZLinkSpotActorDispatcher {
|
|
|
274
290
|
evaluateActorJoin(
|
|
275
291
|
actor: ZLinkActor,
|
|
276
292
|
request: Message,
|
|
277
|
-
contentType =
|
|
293
|
+
contentType: string = ZlinkStreamContentType.Json
|
|
278
294
|
): Promise<ZLinkSpotActorJoinResult> {
|
|
279
295
|
return this.execute(async () => {
|
|
280
296
|
const payload = wrapFrameworkPayloadMessage(
|
|
@@ -337,14 +353,29 @@ export class ZLinkSpotActorDispatcher {
|
|
|
337
353
|
|
|
338
354
|
private async invokeHandler<THandler, TResult>(
|
|
339
355
|
actor: ZLinkActor,
|
|
340
|
-
descriptor: Pick<ZLinkActorPacketDescriptor, 'handlerType'>,
|
|
341
|
-
callback: (
|
|
356
|
+
descriptor: Pick<ZLinkActorPacketDescriptor, 'handlerType' | 'methodName'>,
|
|
357
|
+
callback: (
|
|
358
|
+
handler: THandler,
|
|
359
|
+
method: THandler extends { handle: infer TMethod } ? TMethod : never
|
|
360
|
+
) => Promise<TResult>
|
|
342
361
|
): Promise<TResult> {
|
|
343
362
|
return await runWithLifecycleHandler(
|
|
344
363
|
actor,
|
|
345
364
|
descriptor.handlerType,
|
|
346
365
|
this.options.providerResolver,
|
|
347
|
-
(resolved) =>
|
|
366
|
+
(resolved) => {
|
|
367
|
+
const methodName = descriptor.methodName ?? 'handle';
|
|
368
|
+
const method = (resolved as Record<string, unknown>)[methodName];
|
|
369
|
+
if (typeof method !== 'function') {
|
|
370
|
+
throw new ZLinkConfigurationException(
|
|
371
|
+
`Actor handler '${descriptor.handlerType.name}.${methodName}' is not callable.`
|
|
372
|
+
);
|
|
373
|
+
}
|
|
374
|
+
return callback(
|
|
375
|
+
resolved as THandler,
|
|
376
|
+
method as THandler extends { handle: infer TMethod } ? TMethod : never
|
|
377
|
+
);
|
|
378
|
+
}
|
|
348
379
|
);
|
|
349
380
|
}
|
|
350
381
|
|
|
@@ -4,24 +4,18 @@ import { closeMeshCompletion } from '../backend';
|
|
|
4
4
|
import { RequestResult } from '../backend/runtime-values';
|
|
5
5
|
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
6
6
|
import type { ZLinkActorRuntimeState } from './actor-runtime-state';
|
|
7
|
-
import {
|
|
7
|
+
import { createActorMembership } from './actor-lifecycle-snapshot';
|
|
8
8
|
|
|
9
9
|
type ZLinkTransferredActorRollbackOptions = Pick<
|
|
10
10
|
ZLinkActorManagerOptions,
|
|
11
|
-
| '
|
|
12
|
-
| 'nativeActorNode'
|
|
13
|
-
| 'nativeActorNodeProvider'
|
|
14
|
-
| 'nativeActorCompletionTableProvider'
|
|
15
|
-
| 'shutdownSignal'
|
|
16
|
-
| 'metrics'
|
|
11
|
+
'nativeActorNode' | 'nativeActorNodeProvider' | 'nativeActorCompletionTableProvider'
|
|
17
12
|
>;
|
|
18
13
|
|
|
19
14
|
export class ZLinkTransferredActorRollbackCoordinator {
|
|
20
|
-
private readonly tasks = new Map<string, Promise<void>>();
|
|
21
|
-
|
|
22
15
|
constructor(
|
|
23
16
|
private readonly states: Map<string, ZLinkActorRuntimeState>,
|
|
24
|
-
private readonly options: ZLinkTransferredActorRollbackOptions
|
|
17
|
+
private readonly options: ZLinkTransferredActorRollbackOptions,
|
|
18
|
+
private readonly finalize: (actorId: string, state: ZLinkActorRuntimeState) => Promise<void>
|
|
25
19
|
) {}
|
|
26
20
|
|
|
27
21
|
async rollback(actor: ZLinkActor, signal?: AbortSignal): Promise<void> {
|
|
@@ -37,54 +31,10 @@ export class ZLinkTransferredActorRollbackCoordinator {
|
|
|
37
31
|
|
|
38
32
|
const actorRef = state.nativeActorRef;
|
|
39
33
|
const node = this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
await this.destroyNativeActor(node, actorRef, signal);
|
|
43
|
-
}
|
|
44
|
-
} catch (error) {
|
|
45
|
-
this.schedule(actor, state, node, actorRef);
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
48
|
-
this.complete(actor, state);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
private schedule(
|
|
52
|
-
actor: ZLinkActor,
|
|
53
|
-
state: ZLinkActorRuntimeState,
|
|
54
|
-
node: ZLinkBackendMeshNode | undefined,
|
|
55
|
-
actorRef: ZLinkBackendActorRef | undefined
|
|
56
|
-
): void {
|
|
57
|
-
if (this.tasks.has(actor.context.actorId)) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
const task = this.retry(actor, state, node, actorRef).finally(() =>
|
|
61
|
-
this.tasks.delete(actor.context.actorId)
|
|
62
|
-
);
|
|
63
|
-
this.tasks.set(actor.context.actorId, task);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
private async retry(
|
|
67
|
-
actor: ZLinkActor,
|
|
68
|
-
state: ZLinkActorRuntimeState,
|
|
69
|
-
node: ZLinkBackendMeshNode | undefined,
|
|
70
|
-
actorRef: ZLinkBackendActorRef | undefined
|
|
71
|
-
): Promise<void> {
|
|
72
|
-
const retryDelay = new ZLinkActorRetryDelay();
|
|
73
|
-
while (
|
|
74
|
-
this.states.get(actor.context.actorId) === state &&
|
|
75
|
-
this.options.shutdownSignal?.aborted !== true
|
|
76
|
-
) {
|
|
77
|
-
if (!(await retryDelay.wait(this.options.shutdownSignal))) return;
|
|
78
|
-
try {
|
|
79
|
-
if (node !== undefined && actorRef !== undefined) {
|
|
80
|
-
await this.destroyNativeActor(node, actorRef);
|
|
81
|
-
}
|
|
82
|
-
this.complete(actor, state);
|
|
83
|
-
return;
|
|
84
|
-
} catch {
|
|
85
|
-
// The tombstone prevents dispatch while the next retry is pending.
|
|
86
|
-
}
|
|
34
|
+
if (node !== undefined && actorRef !== undefined) {
|
|
35
|
+
await this.destroyNativeActor(node, actorRef, signal);
|
|
87
36
|
}
|
|
37
|
+
await this.complete(actor, state);
|
|
88
38
|
}
|
|
89
39
|
|
|
90
40
|
private async destroyNativeActor(
|
|
@@ -116,13 +66,12 @@ export class ZLinkTransferredActorRollbackCoordinator {
|
|
|
116
66
|
}
|
|
117
67
|
}
|
|
118
68
|
|
|
119
|
-
private complete(actor: ZLinkActor, state: ZLinkActorRuntimeState): void {
|
|
69
|
+
private async complete(actor: ZLinkActor, state: ZLinkActorRuntimeState): Promise<void> {
|
|
120
70
|
if (this.states.get(actor.context.actorId) !== state) {
|
|
121
71
|
return;
|
|
122
72
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
73
|
+
await state.getOrStartDestroy(createActorMembership(actor).actor.nodeRid, () =>
|
|
74
|
+
this.finalize(actor.context.actorId, state)
|
|
75
|
+
);
|
|
127
76
|
}
|
|
128
77
|
}
|
package/src/runtime/admission.ts
CHANGED
|
@@ -2,6 +2,13 @@ import {
|
|
|
2
2
|
ZLinkFrameworkInternalErrorKind,
|
|
3
3
|
createInternalFrameworkException
|
|
4
4
|
} from './framework-errors-internal';
|
|
5
|
+
const BACKING_ARRAY_COMPACTION_MIN_HEAD = 1024;
|
|
6
|
+
|
|
7
|
+
/** 소비한 배열 prefix가 정리 조건에 도달했는지 판정합니다. */
|
|
8
|
+
export function shouldCompactBackingArray(head: number, length: number): boolean {
|
|
9
|
+
return head >= BACKING_ARRAY_COMPACTION_MIN_HEAD && head * 2 >= length;
|
|
10
|
+
}
|
|
11
|
+
|
|
5
12
|
export class ZLinkRuntimeAdmissionGate {
|
|
6
13
|
private readonly meshes = new Map<string, ZLinkMeshAdmissionState>();
|
|
7
14
|
|
|
@@ -192,7 +199,7 @@ function compactWaiters(state: ZLinkMeshAdmissionState): void {
|
|
|
192
199
|
if (state.waiterCount === 0) {
|
|
193
200
|
state.waiters.length = 0;
|
|
194
201
|
state.waiterHead = 0;
|
|
195
|
-
} else if (state.waiterHead
|
|
202
|
+
} else if (shouldCompactBackingArray(state.waiterHead, state.waiters.length)) {
|
|
196
203
|
state.waiters.splice(0, state.waiterHead);
|
|
197
204
|
state.waiterHead = 0;
|
|
198
205
|
}
|
|
@@ -43,12 +43,12 @@ export function hasApplicationJobPermit(): boolean {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/** Re-enters the captured permit scope when a serial executor runs later. */
|
|
46
|
-
export function bindApplicationJobPermit<TResult>(
|
|
47
|
-
callback: () => Promise<TResult> | TResult
|
|
48
|
-
): () => Promise<TResult> | TResult {
|
|
46
|
+
export function bindApplicationJobPermit<TResult, TArgument>(
|
|
47
|
+
callback: (argument?: TArgument) => Promise<TResult> | TResult
|
|
48
|
+
): (argument?: TArgument) => Promise<TResult> | TResult {
|
|
49
49
|
const scope = applicationJobPermitScope.getStore();
|
|
50
50
|
if (scope === undefined) return callback;
|
|
51
|
-
return () => applicationJobPermitScope.run(scope, callback);
|
|
51
|
+
return (argument?: TArgument) => applicationJobPermitScope.run(scope, callback, argument);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|