@zlink-systems/framework 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Common/CoreTypes.d.ts +6 -0
- package/dist/contracts/Common/CoreTypes.js +7 -0
- package/dist/contracts/Common/index.d.ts +1 -1
- package/dist/contracts/Common/index.js +0 -1
- package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
- package/dist/contracts/Configuration/InternalDefaults.js +9 -1
- package/dist/contracts/Configuration/Registration.d.ts +13 -2
- package/dist/contracts/Configuration/Registration.js +58 -36
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
- package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
- package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Configuration/RegistrationValidators.js +15 -12
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
- package/dist/contracts/Handlers/JsonContract.js +10 -4
- package/dist/contracts/Locations/Authority.d.ts +1 -1
- package/dist/contracts/Locations/Authority.js +3 -2
- package/dist/contracts/Locations/Options.js +1 -1
- package/dist/contracts/Locations/Stores.d.ts +12 -0
- package/dist/contracts/Locations/Stores.js +9 -0
- package/dist/contracts/Spots/Contracts.d.ts +1 -1
- package/dist/internal.d.ts +4 -0
- package/dist/internal.js +15 -1
- package/dist/nest-integration.d.ts +4 -2
- package/dist/nest-integration.js +14 -4
- package/dist/runtime/abort.d.ts +1 -0
- package/dist/runtime/abort.js +8 -5
- package/dist/runtime/activation-admission.d.ts +1 -2
- package/dist/runtime/activation-admission.js +2 -6
- package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
- package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
- package/dist/runtime/actors/actor-client.d.ts +2 -2
- package/dist/runtime/actors/actor-client.js +42 -143
- package/dist/runtime/actors/actor-context.d.ts +3 -5
- package/dist/runtime/actors/actor-context.js +13 -11
- package/dist/runtime/actors/actor-handoff.d.ts +4 -4
- package/dist/runtime/actors/actor-handoff.js +8 -8
- package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
- package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
- package/dist/runtime/actors/actor-local-native-join.js +83 -105
- package/dist/runtime/actors/actor-native-lookup.js +2 -8
- package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
- package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
- package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
- package/dist/runtime/actors/actor-remote-joiner.js +5 -9
- package/dist/runtime/actors/actor-remote-wire.js +5 -3
- package/dist/runtime/actors/actor-request-deadline.d.ts +3 -0
- package/dist/runtime/actors/actor-request-deadline.js +31 -0
- package/dist/runtime/actors/actor-retry-delay.js +2 -1
- package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
- package/dist/runtime/actors/actor-runtime-state.js +70 -187
- package/dist/runtime/actors/bound-session-wire.js +2 -7
- package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
- package/dist/runtime/actors/deferred-join-completion.js +1 -0
- package/dist/runtime/actors/index.d.ts +9 -7
- package/dist/runtime/actors/index.js +87 -69
- package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
- package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
- package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
- package/dist/runtime/admission.d.ts +2 -0
- package/dist/runtime/admission.js +7 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
- package/dist/runtime/backend/contracts/index.d.ts +6 -23
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
- package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +1 -1
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -6
- package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
- package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
- package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
- package/dist/runtime/backend/node/node-raw-binding-port.js +40 -16
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +3 -2
- package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
- package/dist/runtime/backend/runtime-values.d.ts +4 -1
- package/dist/runtime/backend/runtime-values.js +2 -0
- package/dist/runtime/channels/channel-clients.d.ts +20 -8
- package/dist/runtime/channels/channel-clients.js +68 -52
- package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
- package/dist/runtime/channels/channel-envelope.js +47 -29
- package/dist/runtime/channels/channel-outbound-operations.d.ts +3 -0
- package/dist/runtime/channels/channel-outbound-operations.js +9 -10
- package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
- package/dist/runtime/channels/channel-receive-loops.js +27 -6
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
- package/dist/runtime/channels/channel-runtime-manager.js +5 -2
- package/dist/runtime/channels/channel-socket-options.js +3 -2
- package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
- package/dist/runtime/channels/channel-socket-registry.js +248 -174
- package/dist/runtime/channels/channel-transports.d.ts +11 -17
- package/dist/runtime/channels/channel-transports.js +68 -47
- package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/client-server-location-runtime.js +10 -11
- package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
- package/dist/runtime/channels/client-server-service-wire.js +32 -11
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
- package/dist/runtime/channels/fanout-location-runtime.js +130 -72
- package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
- package/dist/runtime/channels/spot-direct-envelope.js +4 -3
- package/dist/runtime/channels/spot-node-route-transport.js +3 -2
- package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
- package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
- package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
- package/dist/runtime/diagnostics/flow-context.js +16 -2
- package/dist/runtime/diagnostics/index.d.ts +4 -2
- package/dist/runtime/diagnostics/index.js +14 -4
- package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
- package/dist/runtime/diagnostics/message-flow.js +10 -19
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
- package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
- package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
- package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
- package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
- package/dist/runtime/disposal.d.ts +5 -0
- package/dist/runtime/disposal.js +22 -0
- package/dist/runtime/execution/index.d.ts +12 -9
- package/dist/runtime/execution/index.js +58 -14
- package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
- package/dist/runtime/execution/serial-execution-queue.js +54 -15
- package/dist/runtime/execution/state-lane.d.ts +8 -1
- package/dist/runtime/execution/state-lane.js +118 -3
- package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
- package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
- package/dist/runtime/foundation/event-loop-resources.js +6 -119
- package/dist/runtime/foundation/operation-identity.d.ts +2 -0
- package/dist/runtime/foundation/operation-identity.js +9 -5
- package/dist/runtime/foundation/operation-registry.d.ts +5 -7
- package/dist/runtime/foundation/operation-registry.js +34 -44
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +62 -83
- package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
- package/dist/runtime/foundation/runtime-state-projections.js +8 -0
- package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
- package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
- package/dist/runtime/foundation/service-discovery-registry.js +22 -3
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
- package/dist/runtime/foundation/service-liveness-registry.js +2 -1
- package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
- package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
- package/dist/runtime/foundation/service-metadata-codec.js +3 -3
- package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
- package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
- package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
- package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
- package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
- package/dist/runtime/foundation/service-stateful-registry.js +10 -2
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
- package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
- package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
- package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
- package/dist/runtime/foundation/service-topology-registry.js +17 -32
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
- package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
- package/dist/runtime/foundation/service-wire-codec.js +10 -8
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
- package/dist/runtime/framework-errors-internal.d.ts +2 -1
- package/dist/runtime/framework-errors-internal.js +343 -122
- package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
- package/dist/runtime/handlers/handler-instance-scope.js +61 -74
- package/dist/runtime/host/actor-packet-relay.d.ts +9 -6
- package/dist/runtime/host/actor-packet-relay.js +48 -91
- package/dist/runtime/host/actor-placement-coordinator.js +7 -5
- package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
- package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
- package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
- package/dist/runtime/host/actor-transfer-runtime.js +143 -176
- package/dist/runtime/host/application-job-queue.js +16 -33
- package/dist/runtime/host/bound-session-relay.js +1 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
- package/dist/runtime/host/index.d.ts +14 -13
- package/dist/runtime/host/index.js +190 -157
- package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
- package/dist/runtime/host/instance-activation-authority.js +17 -45
- package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
- package/dist/runtime/host/location-runtime-owner.js +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
- package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
- package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
- package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
- package/dist/runtime/host/remote-bound-session-relay.js +7 -20
- package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
- package/dist/runtime/host/route-mesh-runtime.js +171 -252
- package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
- package/dist/runtime/host/runtime-shutdown.js +18 -21
- package/dist/runtime/host/service-relocation-control.js +6 -1
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
- package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
- package/dist/runtime/host/spot-address-transport.d.ts +2 -3
- package/dist/runtime/host/spot-address-transport.js +34 -136
- package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
- package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
- package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
- package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
- package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
- package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
- package/dist/runtime/locations/authority-key-codec.js +4 -3
- package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
- package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
- package/dist/runtime/locations/creation-operation-id.js +6 -4
- package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
- package/dist/runtime/locations/in-memory-authority-store.js +31 -15
- package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
- package/dist/runtime/locations/in-memory-location-store.js +17 -14
- package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
- package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
- package/dist/runtime/locations/key-codec.js +3 -2
- package/dist/runtime/locations/lease-tracker.d.ts +3 -5
- package/dist/runtime/locations/lease-tracker.js +7 -11
- package/dist/runtime/locations/lifecycle.d.ts +4 -9
- package/dist/runtime/locations/lifecycle.js +2 -31
- package/dist/runtime/locations/location-store-failure.d.ts +2 -0
- package/dist/runtime/locations/location-store-failure.js +7 -0
- package/dist/runtime/locations/location-store-pages.d.ts +3 -0
- package/dist/runtime/locations/location-store-pages.js +13 -0
- package/dist/runtime/locations/location-store-repository.d.ts +5 -7
- package/dist/runtime/locations/location-store-repository.js +303 -332
- package/dist/runtime/locations/relocation-blob.js +18 -5
- package/dist/runtime/locations/resolvers.d.ts +5 -5
- package/dist/runtime/locations/resolvers.js +37 -28
- package/dist/runtime/locations/runtime.d.ts +5 -4
- package/dist/runtime/locations/runtime.js +123 -92
- package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
- package/dist/runtime/locations/spot-location-claims.js +42 -1
- package/dist/runtime/messaging/payload-codec.js +26 -20
- package/dist/runtime/messaging/submission-result.d.ts +3 -0
- package/dist/runtime/messaging/submission-result.js +48 -0
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
- package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
- package/dist/runtime/spots/index.d.ts +14 -20
- package/dist/runtime/spots/index.js +302 -176
- package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
- package/dist/runtime/spots/spot-activation-registry.js +14 -50
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +2 -2
- package/dist/runtime/spots/spot-activation.d.ts +3 -4
- package/dist/runtime/spots/spot-activation.js +49 -32
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
- package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
- package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
- package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
- package/dist/runtime/spots/spot-actor-membership.js +22 -45
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
- package/dist/runtime/spots/spot-context.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +9 -20
- package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
- package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
- package/dist/runtime/spots/spot-manager-public.js +5 -4
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
- package/dist/runtime/spots/spot-outbound.d.ts +4 -3
- package/dist/runtime/spots/spot-outbound.js +9 -8
- package/dist/runtime/spots/spot-remote-codec.js +5 -3
- package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
- package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
- package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
- package/dist/runtime/spots/spot-route-replies.js +3 -1
- package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
- package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
- package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
- package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
- package/dist/runtime/spots/spot-serial-executor.js +2 -2
- package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
- package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
- package/dist/runtime/spots/spot-timer.d.ts +3 -2
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +6 -2
- package/dist/runtime/streams/bound-actor-relay-sender.js +57 -33
- package/dist/runtime/streams/bound-session-service.d.ts +7 -0
- package/dist/runtime/streams/bound-session-service.js +11 -1
- package/dist/runtime/streams/index.d.ts +14 -15
- package/dist/runtime/streams/index.js +20 -21
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +17 -8
- package/dist/runtime/streams/native-fallback-bound-session.js +1 -3
- package/dist/runtime/streams/protocol.d.ts +6 -33
- package/dist/runtime/streams/protocol.js +38 -110
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
- package/dist/runtime/streams/session-actor-coordinator.js +12 -4
- package/dist/runtime/streams/session-calls.d.ts +1 -1
- package/dist/runtime/streams/session-calls.js +5 -4
- package/dist/runtime/streams/session-context.d.ts +6 -6
- package/dist/runtime/streams/session-context.js +22 -4
- package/dist/runtime/streams/session-requests.js +2 -1
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
- package/dist/runtime/streams/stream-frame-factory.js +2 -2
- package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
- package/dist/runtime/streams/stream-session-runtime.js +25 -33
- package/dist/runtime/workers/index.d.ts +2 -2
- package/dist/runtime/workers/index.js +5 -4
- package/package.json +3 -3
- package/src/contracts/Common/CoreTypes.ts +7 -0
- package/src/contracts/Common/index.ts +1 -1
- package/src/contracts/Configuration/InternalDefaults.ts +12 -0
- package/src/contracts/Configuration/Registration.ts +92 -48
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +77 -68
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Configuration/RegistrationValidators.ts +19 -13
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
- package/src/contracts/Handlers/JsonContract.ts +14 -4
- package/src/contracts/Locations/Authority.ts +7 -3
- package/src/contracts/Locations/Options.ts +1 -1
- package/src/contracts/Locations/Stores.ts +14 -0
- package/src/contracts/Spots/Contracts.ts +1 -1
- package/src/internal.ts +14 -0
- package/src/nest-integration.ts +28 -10
- package/src/runtime/abort.ts +6 -5
- package/src/runtime/activation-admission.ts +2 -8
- package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
- package/src/runtime/actors/actor-client.ts +77 -204
- package/src/runtime/actors/actor-context.ts +39 -33
- package/src/runtime/actors/actor-handoff.ts +24 -22
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
- package/src/runtime/actors/actor-local-native-join.ts +172 -174
- package/src/runtime/actors/actor-native-lookup.ts +2 -9
- package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
- package/src/runtime/actors/actor-remote-joiner.ts +9 -11
- package/src/runtime/actors/actor-remote-wire.ts +5 -3
- package/src/runtime/actors/actor-request-deadline.ts +49 -0
- package/src/runtime/actors/actor-retry-delay.ts +2 -1
- package/src/runtime/actors/actor-runtime-state.ts +85 -247
- package/src/runtime/actors/bound-session-wire.ts +2 -8
- package/src/runtime/actors/deferred-join-completion.ts +10 -6
- package/src/runtime/actors/index.ts +100 -79
- package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
- package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
- package/src/runtime/admission.ts +8 -1
- package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
- package/src/runtime/backend/contracts/index.ts +13 -29
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
- package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
- package/src/runtime/backend/node/node-backend-adapter-support.ts +23 -6
- package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
- package/src/runtime/backend/node/node-raw-binding-port.ts +41 -20
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +3 -2
- package/src/runtime/backend/raw-binding-port.ts +1 -1
- package/src/runtime/backend/runtime-values.ts +4 -1
- package/src/runtime/channels/channel-clients.ts +132 -85
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
- package/src/runtime/channels/channel-envelope.ts +58 -29
- package/src/runtime/channels/channel-outbound-operations.ts +10 -23
- package/src/runtime/channels/channel-receive-loops.ts +39 -7
- package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
- package/src/runtime/channels/channel-runtime-manager.ts +6 -2
- package/src/runtime/channels/channel-socket-options.ts +8 -2
- package/src/runtime/channels/channel-socket-registry.ts +301 -192
- package/src/runtime/channels/channel-transports.ts +161 -112
- package/src/runtime/channels/client-server-location-runtime.ts +17 -17
- package/src/runtime/channels/client-server-service-wire.ts +40 -12
- package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
- package/src/runtime/channels/fanout-location-runtime.ts +172 -91
- package/src/runtime/channels/spot-direct-envelope.ts +1 -1
- package/src/runtime/channels/spot-node-route-transport.ts +5 -2
- package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
- package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
- package/src/runtime/diagnostics/flow-context.ts +16 -2
- package/src/runtime/diagnostics/index.ts +27 -17
- package/src/runtime/diagnostics/message-flow.ts +15 -25
- package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
- package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
- package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
- package/src/runtime/disposal.ts +19 -0
- package/src/runtime/execution/index.ts +60 -20
- package/src/runtime/execution/serial-execution-queue.ts +131 -18
- package/src/runtime/execution/state-lane.ts +142 -4
- package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
- package/src/runtime/foundation/event-loop-resources.ts +5 -122
- package/src/runtime/foundation/operation-identity.ts +11 -5
- package/src/runtime/foundation/operation-registry.ts +33 -50
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +110 -111
- package/src/runtime/foundation/runtime-state-projections.ts +9 -1
- package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
- package/src/runtime/foundation/service-discovery-registry.ts +32 -3
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
- package/src/runtime/foundation/service-liveness-registry.ts +2 -1
- package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
- package/src/runtime/foundation/service-metadata-codec.ts +2 -2
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
- package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
- package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
- package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
- package/src/runtime/foundation/service-stateful-registry.ts +14 -2
- package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
- package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
- package/src/runtime/foundation/service-topology-registry.ts +23 -32
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
- package/src/runtime/foundation/service-wire-codec.ts +15 -8
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
- package/src/runtime/framework-errors-internal.ts +380 -134
- package/src/runtime/handlers/handler-instance-scope.ts +68 -95
- package/src/runtime/host/actor-packet-relay.ts +57 -147
- package/src/runtime/host/actor-placement-coordinator.ts +8 -5
- package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
- package/src/runtime/host/actor-transfer-runtime.ts +180 -260
- package/src/runtime/host/application-job-queue.ts +28 -34
- package/src/runtime/host/bound-session-relay.ts +1 -2
- package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
- package/src/runtime/host/index.ts +327 -296
- package/src/runtime/host/instance-activation-authority.ts +89 -109
- package/src/runtime/host/location-runtime-owner.ts +4 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
- package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
- package/src/runtime/host/remote-bound-session-relay.ts +8 -41
- package/src/runtime/host/route-mesh-runtime.ts +228 -271
- package/src/runtime/host/runtime-shutdown.ts +17 -21
- package/src/runtime/host/service-relocation-control.ts +14 -1
- package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
- package/src/runtime/host/spot-address-transport.ts +73 -195
- package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
- package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
- package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
- package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
- package/src/runtime/locations/authority-key-codec.ts +7 -3
- package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
- package/src/runtime/locations/creation-operation-id.ts +6 -3
- package/src/runtime/locations/domain-store-contract.ts +12 -3
- package/src/runtime/locations/in-memory-authority-store.ts +44 -15
- package/src/runtime/locations/in-memory-location-store.ts +50 -39
- package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
- package/src/runtime/locations/key-codec.ts +3 -2
- package/src/runtime/locations/lease-tracker.ts +8 -14
- package/src/runtime/locations/lifecycle.ts +13 -43
- package/src/runtime/locations/location-store-failure.ts +4 -0
- package/src/runtime/locations/location-store-pages.ts +18 -0
- package/src/runtime/locations/location-store-repository.ts +450 -478
- package/src/runtime/locations/relocation-blob.ts +17 -6
- package/src/runtime/locations/resolvers.ts +75 -49
- package/src/runtime/locations/runtime.ts +220 -110
- package/src/runtime/locations/spot-location-claims.ts +58 -1
- package/src/runtime/messaging/payload-codec.ts +35 -24
- package/src/runtime/messaging/submission-result.ts +57 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
- package/src/runtime/spots/index.ts +433 -229
- package/src/runtime/spots/spot-activation-registry.ts +30 -69
- package/src/runtime/spots/spot-activation-state.ts +2 -2
- package/src/runtime/spots/spot-activation.ts +67 -37
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
- package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
- package/src/runtime/spots/spot-actor-membership.ts +40 -72
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
- package/src/runtime/spots/spot-context.ts +3 -3
- package/src/runtime/spots/spot-entry-activation.ts +13 -30
- package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
- package/src/runtime/spots/spot-manager-public.ts +21 -17
- package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
- package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
- package/src/runtime/spots/spot-outbound.ts +45 -23
- package/src/runtime/spots/spot-remote-codec.ts +7 -3
- package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
- package/src/runtime/spots/spot-route-replies.ts +6 -4
- package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
- package/src/runtime/spots/spot-runtime-ports.ts +5 -27
- package/src/runtime/spots/spot-serial-executor.ts +2 -2
- package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
- package/src/runtime/spots/spot-timer.ts +3 -2
- package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +89 -43
- package/src/runtime/streams/bound-session-service.ts +21 -1
- package/src/runtime/streams/index.ts +76 -64
- package/src/runtime/streams/managed-stream.ts +29 -10
- package/src/runtime/streams/native-fallback-bound-session.ts +1 -3
- package/src/runtime/streams/protocol.ts +34 -88
- package/src/runtime/streams/session-actor-coordinator.ts +17 -5
- package/src/runtime/streams/session-calls.ts +6 -5
- package/src/runtime/streams/session-context.ts +54 -10
- package/src/runtime/streams/session-requests.ts +2 -1
- package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
- package/src/runtime/streams/stream-frame-factory.ts +2 -3
- package/src/runtime/streams/stream-session-runtime.ts +57 -59
- package/src/runtime/workers/index.ts +13 -12
- package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
- package/dist/runtime/actors/post-commit-actor-location.js +0 -72
- package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
- package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
- package/src/runtime/actors/post-commit-actor-location.ts +0 -121
- package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DefaultZLinkActorManager = exports.ZLINK_ACTOR_LIFECYCLE_SNAPSHOT = exports.createActorMembership = exports.createActorJoinRequest = exports.actorJoinIdentity = exports.ZLinkRemoteBoundSessionFenceError = exports.isRemoteBoundSessionFenceError = exports.encodeRemoteBoundSessionNack = exports.ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET = exports.ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET = exports.ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE = exports.ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET = exports.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET = exports.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = exports.decodeRemoteActorSourceLeaveTerminal = exports.ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL = exports.ZLINK_REMOTE_ACTOR_JOIN_PACKET = exports.ZLinkActorTransferRegistry = exports.ZLinkActorNativeJoinCoordinator = exports.ZLinkSpotActorHandlerRegistryRuntime = exports.ZLinkSpotActorDispatcher = exports.ZLinkActorPacketKind = exports.publishInitialActorAuthority = exports.rewriteActorAuthorityOwner = exports.rewriteActorAuthorityRoute = exports.isActorAuthorityPayload = exports.encodeActorAuthorityIdentity = exports.decodeRelocatingActorAuthorityIdentity = exports.decodeActorAuthorityIdentity = exports.createDeferredJoinCompletion = exports.toFrameworkRoutingId = exports.toFrameworkActorRef = exports.
|
|
4
|
-
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
3
|
+
exports.DefaultZLinkActorManager = exports.ZLINK_ACTOR_LIFECYCLE_SNAPSHOT = exports.createActorMembership = exports.createActorJoinRequest = exports.actorJoinIdentity = exports.ZLinkRemoteBoundSessionFenceError = exports.isRemoteBoundSessionFenceError = exports.encodeRemoteBoundSessionNack = exports.ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET = exports.ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET = exports.ZLINK_REMOTE_BOUND_SESSION_FENCE_NACK_CODE = exports.ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET = exports.ZLINK_REMOTE_ACTOR_SESSION_DISCONNECTED_PACKET = exports.ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET = exports.decodeRemoteActorSourceLeaveTerminal = exports.ZLINK_REMOTE_ACTOR_SOURCE_LEAVE_TERMINAL = exports.ZLINK_REMOTE_ACTOR_JOIN_PACKET = exports.ZLinkActorTransferRegistry = exports.ZLinkActorNativeJoinCoordinator = exports.ZLinkSpotActorHandlerRegistryRuntime = exports.ZLinkSpotActorDispatcher = exports.ZLinkActorPacketKind = exports.publishInitialActorAuthority = exports.rewriteActorAuthorityOwner = exports.rewriteActorAuthorityRoute = exports.isActorAuthorityPayload = exports.encodeActorAuthorityIdentity = exports.decodeRelocatingActorAuthorityIdentity = exports.decodeActorAuthorityIdentity = exports.createDeferredJoinCompletion = exports.toFrameworkRoutingId = exports.toFrameworkActorRef = exports.ZLinkActorRuntimeState = exports.decodeActorMessageFollowContext = exports.attachActorMessageFollowContext = exports.actorMessageFollowContext = exports.decodeHandoffPacket = exports.ZLinkActorHandoffCoordinator = exports.DEFAULT_MESSAGE_FOLLOW_DURATION_MS = exports.ZLinkActorSerialExecutor = exports.ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME = exports.DefaultZLinkActorContext = exports.forwardEncodedActorPacket = exports.DefaultZLinkActorClient = void 0;
|
|
5
4
|
const contracts_1 = require("../../contracts");
|
|
6
|
-
const
|
|
7
|
-
const contracts_2 = require("../../contracts");
|
|
8
|
-
const configuration_1 = require("../configuration");
|
|
5
|
+
const Registration_1 = require("../../contracts/Configuration/Registration");
|
|
9
6
|
const abort_1 = require("../abort");
|
|
10
7
|
const mesh_completion_table_1 = require("../backend/mesh-completion-table");
|
|
8
|
+
const runtime_message_1 = require("../backend/runtime-message");
|
|
9
|
+
const configuration_1 = require("../configuration");
|
|
10
|
+
const runtime_metrics_1 = require("../diagnostics/runtime-metrics");
|
|
11
11
|
const execution_1 = require("../execution");
|
|
12
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
12
13
|
const handler_instance_scope_1 = require("../handlers/handler-instance-scope");
|
|
14
|
+
const payload_codec_1 = require("../messaging/payload-codec");
|
|
15
|
+
const actor_creation_1 = require("./actor-creation");
|
|
16
|
+
const actor_runtime_state_1 = require("./actor-runtime-state");
|
|
17
|
+
const transferred_actor_rollback_1 = require("./transferred-actor-rollback");
|
|
18
|
+
const ACTOR_CREATION_RETRY_INTERVAL_MS = 5;
|
|
19
|
+
const LOCAL_DIAGNOSTIC_NODE_RID = 'local';
|
|
13
20
|
var actor_client_1 = require("./actor-client");
|
|
14
21
|
Object.defineProperty(exports, "DefaultZLinkActorClient", { enumerable: true, get: function () { return actor_client_1.DefaultZLinkActorClient; } });
|
|
15
22
|
Object.defineProperty(exports, "forwardEncodedActorPacket", { enumerable: true, get: function () { return actor_client_1.forwardEncodedActorPacket; } });
|
|
16
|
-
const payload_codec_1 = require("../messaging/payload-codec");
|
|
17
23
|
var actor_context_1 = require("./actor-context");
|
|
18
24
|
Object.defineProperty(exports, "DefaultZLinkActorContext", { enumerable: true, get: function () { return actor_context_1.DefaultZLinkActorContext; } });
|
|
19
25
|
Object.defineProperty(exports, "ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME", { enumerable: true, get: function () { return actor_context_1.ZLINK_ACTOR_JOIN_ENTRY_SPOT_RUNTIME; } });
|
|
20
|
-
const actor_creation_1 = require("./actor-creation");
|
|
21
26
|
var actor_mailbox_1 = require("./actor-mailbox");
|
|
22
27
|
Object.defineProperty(exports, "ZLinkActorSerialExecutor", { enumerable: true, get: function () { return actor_mailbox_1.ZLinkActorSerialExecutor; } });
|
|
23
28
|
var actor_handoff_1 = require("./actor-handoff");
|
|
@@ -28,12 +33,10 @@ var actor_message_follow_context_1 = require("./actor-message-follow-context");
|
|
|
28
33
|
Object.defineProperty(exports, "actorMessageFollowContext", { enumerable: true, get: function () { return actor_message_follow_context_1.actorMessageFollowContext; } });
|
|
29
34
|
Object.defineProperty(exports, "attachActorMessageFollowContext", { enumerable: true, get: function () { return actor_message_follow_context_1.attachActorMessageFollowContext; } });
|
|
30
35
|
Object.defineProperty(exports, "decodeActorMessageFollowContext", { enumerable: true, get: function () { return actor_message_follow_context_1.decodeActorMessageFollowContext; } });
|
|
31
|
-
var
|
|
32
|
-
Object.defineProperty(exports, "ZLinkActorRuntimeState", { enumerable: true, get: function () { return
|
|
33
|
-
Object.defineProperty(exports, "
|
|
34
|
-
Object.defineProperty(exports, "
|
|
35
|
-
Object.defineProperty(exports, "toFrameworkActorRef", { enumerable: true, get: function () { return actor_runtime_state_1.toFrameworkActorRef; } });
|
|
36
|
-
Object.defineProperty(exports, "toFrameworkRoutingId", { enumerable: true, get: function () { return actor_runtime_state_1.toFrameworkRoutingId; } });
|
|
36
|
+
var actor_runtime_state_2 = require("./actor-runtime-state");
|
|
37
|
+
Object.defineProperty(exports, "ZLinkActorRuntimeState", { enumerable: true, get: function () { return actor_runtime_state_2.ZLinkActorRuntimeState; } });
|
|
38
|
+
Object.defineProperty(exports, "toFrameworkActorRef", { enumerable: true, get: function () { return actor_runtime_state_2.toFrameworkActorRef; } });
|
|
39
|
+
Object.defineProperty(exports, "toFrameworkRoutingId", { enumerable: true, get: function () { return actor_runtime_state_2.toFrameworkRoutingId; } });
|
|
37
40
|
var deferred_join_completion_1 = require("./deferred-join-completion");
|
|
38
41
|
Object.defineProperty(exports, "createDeferredJoinCompletion", { enumerable: true, get: function () { return deferred_join_completion_1.createDeferredJoinCompletion; } });
|
|
39
42
|
var actor_authority_publication_1 = require("./actor-authority-publication");
|
|
@@ -44,14 +47,12 @@ Object.defineProperty(exports, "isActorAuthorityPayload", { enumerable: true, ge
|
|
|
44
47
|
Object.defineProperty(exports, "rewriteActorAuthorityRoute", { enumerable: true, get: function () { return actor_authority_publication_1.rewriteActorAuthorityRoute; } });
|
|
45
48
|
Object.defineProperty(exports, "rewriteActorAuthorityOwner", { enumerable: true, get: function () { return actor_authority_publication_1.rewriteActorAuthorityOwner; } });
|
|
46
49
|
Object.defineProperty(exports, "publishInitialActorAuthority", { enumerable: true, get: function () { return actor_authority_publication_1.publishInitialActorAuthority; } });
|
|
47
|
-
const actor_runtime_state_2 = require("./actor-runtime-state");
|
|
48
50
|
var spot_actor_dispatch_1 = require("./spot-actor-dispatch");
|
|
49
51
|
Object.defineProperty(exports, "ZLinkActorPacketKind", { enumerable: true, get: function () { return spot_actor_dispatch_1.ZLinkActorPacketKind; } });
|
|
50
52
|
Object.defineProperty(exports, "ZLinkSpotActorDispatcher", { enumerable: true, get: function () { return spot_actor_dispatch_1.ZLinkSpotActorDispatcher; } });
|
|
51
53
|
Object.defineProperty(exports, "ZLinkSpotActorHandlerRegistryRuntime", { enumerable: true, get: function () { return spot_actor_dispatch_1.ZLinkSpotActorHandlerRegistryRuntime; } });
|
|
52
54
|
var actor_remote_joiner_1 = require("./actor-remote-joiner");
|
|
53
55
|
Object.defineProperty(exports, "ZLinkActorNativeJoinCoordinator", { enumerable: true, get: function () { return actor_remote_joiner_1.ZLinkActorNativeJoinCoordinator; } });
|
|
54
|
-
const transferred_actor_rollback_1 = require("./transferred-actor-rollback");
|
|
55
56
|
var actor_transfer_registry_1 = require("./actor-transfer-registry");
|
|
56
57
|
Object.defineProperty(exports, "ZLinkActorTransferRegistry", { enumerable: true, get: function () { return actor_transfer_registry_1.ZLinkActorTransferRegistry; } });
|
|
57
58
|
var actor_remote_wire_1 = require("./actor-remote-wire");
|
|
@@ -76,15 +77,20 @@ Object.defineProperty(exports, "createActorMembership", { enumerable: true, get:
|
|
|
76
77
|
Object.defineProperty(exports, "ZLINK_ACTOR_LIFECYCLE_SNAPSHOT", { enumerable: true, get: function () { return actor_lifecycle_snapshot_1.ZLINK_ACTOR_LIFECYCLE_SNAPSHOT; } });
|
|
77
78
|
class DefaultZLinkActorManager {
|
|
78
79
|
options;
|
|
80
|
+
detachedTaskRunner;
|
|
79
81
|
states = new Map();
|
|
80
82
|
actorMeshNames = new Map();
|
|
81
83
|
relocationStaged = new Set();
|
|
82
84
|
creation;
|
|
83
85
|
transferredActorRollback;
|
|
84
|
-
constructor(options) {
|
|
86
|
+
constructor(options, detachedTaskRunner) {
|
|
85
87
|
this.options = options;
|
|
88
|
+
this.detachedTaskRunner = detachedTaskRunner;
|
|
89
|
+
if (detachedTaskRunner === undefined) {
|
|
90
|
+
throw new Error('Actor manager requires a detached task runner.');
|
|
91
|
+
}
|
|
86
92
|
this.creation = new actor_creation_1.ZLinkActorCreationCoordinator(options);
|
|
87
|
-
this.transferredActorRollback = new transferred_actor_rollback_1.ZLinkTransferredActorRollbackCoordinator(this.states, options);
|
|
93
|
+
this.transferredActorRollback = new transferred_actor_rollback_1.ZLinkTransferredActorRollbackCoordinator(this.states, options, (actorId, state) => this.finalizeDestroyedActor(actorId, state));
|
|
88
94
|
}
|
|
89
95
|
create(actorId, actorType) {
|
|
90
96
|
return new ZLinkActorCreateCallRuntime((options, signal) => this.submitCreate(actorId, actorType, true, options, signal));
|
|
@@ -128,7 +134,6 @@ class DefaultZLinkActorManager {
|
|
|
128
134
|
if (state.isMoving) {
|
|
129
135
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorMoving, `Actor '${actor.actorId}' is relocating.`);
|
|
130
136
|
}
|
|
131
|
-
const actorInstance = state.actor;
|
|
132
137
|
const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
|
|
133
138
|
const completions = this.options.nativeActorCompletionTableProvider?.();
|
|
134
139
|
const entryNodeRid = state.entryNodeRid ?? current.nodeRid;
|
|
@@ -155,14 +160,7 @@ class DefaultZLinkActorManager {
|
|
|
155
160
|
if (state.actorType !== undefined && state.ownsLocation) {
|
|
156
161
|
await this.options.locationLifecycle?.releaseActor(state.actorType, actor.actorId, current);
|
|
157
162
|
}
|
|
158
|
-
this.
|
|
159
|
-
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(actorInstance);
|
|
160
|
-
state.clearAfterDestroy();
|
|
161
|
-
if (this.states.get(actor.actorId) === state) {
|
|
162
|
-
this.states.delete(actor.actorId);
|
|
163
|
-
this.actorMeshNames.delete(actor.actorId);
|
|
164
|
-
}
|
|
165
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
163
|
+
await this.finalizeDestroyedActor(actor.actorId, state);
|
|
166
164
|
});
|
|
167
165
|
try {
|
|
168
166
|
await destroyTask;
|
|
@@ -178,7 +176,7 @@ class DefaultZLinkActorManager {
|
|
|
178
176
|
const state = this.getOrCreateState(actorId);
|
|
179
177
|
this.rememberActorMeshFromType(actorId, actorType);
|
|
180
178
|
if (state.actor !== undefined) {
|
|
181
|
-
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(state.actor);
|
|
179
|
+
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(state.actor, this.detachedTaskRunner);
|
|
182
180
|
}
|
|
183
181
|
state.prepareForRemoteReentry();
|
|
184
182
|
const operation = state.getOrStartCreation(actorType, false, () => this.creation.materializeTransferredActor(actorId, actorType, state, adapterKey === undefined
|
|
@@ -284,7 +282,7 @@ class DefaultZLinkActorManager {
|
|
|
284
282
|
this.relocationStaged.add(actorId);
|
|
285
283
|
let nativeRef;
|
|
286
284
|
try {
|
|
287
|
-
nativeRef = restore.call(node, actorId, actorType, objectGeneration, authorityOwnerGeneration, String(spotId), spotGeneration, membershipEpoch);
|
|
285
|
+
nativeRef = restore.call(node, actorId, actorType, objectGeneration, authorityOwnerGeneration, spotId === undefined ? undefined : String(spotId), spotGeneration, membershipEpoch);
|
|
288
286
|
this.rememberActorMeshFromType(actorId, actorType);
|
|
289
287
|
const state = this.getOrCreateState(actorId);
|
|
290
288
|
state.setNativeActorRef(nativeRef);
|
|
@@ -302,7 +300,8 @@ class DefaultZLinkActorManager {
|
|
|
302
300
|
await registry.restore(transfer.adapterKey, actor, transfer.state, signal);
|
|
303
301
|
}
|
|
304
302
|
state.setLocationGeneration(authorityOwnerGeneration);
|
|
305
|
-
|
|
303
|
+
if (spotId !== undefined)
|
|
304
|
+
state.setJoinedSpot(spotId, undefined, membershipEpoch);
|
|
306
305
|
return actor;
|
|
307
306
|
}
|
|
308
307
|
catch (error) {
|
|
@@ -310,12 +309,7 @@ class DefaultZLinkActorManager {
|
|
|
310
309
|
node.discardRelocatedActor?.(nativeRef);
|
|
311
310
|
this.relocationStaged.delete(actorId);
|
|
312
311
|
const failedState = this.states.get(actorId);
|
|
313
|
-
|
|
314
|
-
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(failedState.actor);
|
|
315
|
-
}
|
|
316
|
-
failedState?.clearAfterDestroy();
|
|
317
|
-
this.states.delete(actorId);
|
|
318
|
-
this.actorMeshNames.delete(actorId);
|
|
312
|
+
await this.finalizeActorState(actorId, failedState);
|
|
319
313
|
throw error;
|
|
320
314
|
}
|
|
321
315
|
}
|
|
@@ -335,26 +329,57 @@ class DefaultZLinkActorManager {
|
|
|
335
329
|
const state = this.states.get(actorId);
|
|
336
330
|
const node = this.options.nativeActorNodeProvider?.() ?? this.options.nativeActorNode;
|
|
337
331
|
const nativeActorRef = exactNativeActorRef ?? state?.nativeActorRef;
|
|
338
|
-
|
|
339
|
-
|
|
332
|
+
const failures = [];
|
|
333
|
+
try {
|
|
334
|
+
if (nativeActorRef !== undefined) {
|
|
335
|
+
node?.discardRelocatedActor?.(nativeActorRef);
|
|
336
|
+
}
|
|
340
337
|
}
|
|
341
|
-
|
|
342
|
-
|
|
338
|
+
catch (error) {
|
|
339
|
+
failures.push(error);
|
|
340
|
+
}
|
|
341
|
+
try {
|
|
342
|
+
await this.completeCoreRelocationSource(actorId);
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
failures.push(error);
|
|
346
|
+
}
|
|
347
|
+
if (failures.length > 0) {
|
|
348
|
+
throw failures.length === 1
|
|
349
|
+
? failures[0]
|
|
350
|
+
: new AggregateError(failures, 'Actor relocation cleanup failed.');
|
|
343
351
|
}
|
|
344
|
-
state?.clearAfterDestroy();
|
|
345
|
-
this.states.delete(actorId);
|
|
346
|
-
this.actorMeshNames.delete(actorId);
|
|
347
|
-
this.relocationStaged.delete(actorId);
|
|
348
352
|
}
|
|
349
353
|
async completeCoreRelocationSource(actorId) {
|
|
350
354
|
const state = this.states.get(actorId);
|
|
351
|
-
|
|
352
|
-
|
|
355
|
+
await this.finalizeActorState(actorId, state);
|
|
356
|
+
}
|
|
357
|
+
async finalizeActorState(actorId, state) {
|
|
358
|
+
if (state === undefined || this.states.get(actorId) !== state)
|
|
359
|
+
return;
|
|
360
|
+
try {
|
|
361
|
+
if (state.actor !== undefined)
|
|
362
|
+
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(state.actor, this.detachedTaskRunner);
|
|
363
|
+
}
|
|
364
|
+
finally {
|
|
365
|
+
state.clearAfterDestroy();
|
|
366
|
+
if (this.states.get(actorId) === state) {
|
|
367
|
+
this.states.delete(actorId);
|
|
368
|
+
this.actorMeshNames.delete(actorId);
|
|
369
|
+
this.relocationStaged.delete(actorId);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
async finalizeDestroyedActor(actorId, state) {
|
|
374
|
+
if (this.states.get(actorId) !== state)
|
|
375
|
+
return;
|
|
376
|
+
try {
|
|
377
|
+
this.options.actorDestroyedCleanup?.(actorId);
|
|
378
|
+
}
|
|
379
|
+
finally {
|
|
380
|
+
await this.finalizeActorState(actorId, state);
|
|
381
|
+
this.options.metrics?.change(runtime_metrics_1.METRIC_NAMES.ActorCount, -1);
|
|
353
382
|
}
|
|
354
|
-
state?.clearAfterDestroy();
|
|
355
|
-
this.states.delete(actorId);
|
|
356
|
-
this.actorMeshNames.delete(actorId);
|
|
357
|
-
this.relocationStaged.delete(actorId);
|
|
358
383
|
}
|
|
359
384
|
async getOrCreateActor(actorId, actorType, signal) {
|
|
360
385
|
this.rememberActorMeshFromType(actorId, actorType);
|
|
@@ -374,7 +399,7 @@ class DefaultZLinkActorManager {
|
|
|
374
399
|
}
|
|
375
400
|
async createReservedActorResult(actorId, actorType, createRequest, signal, nativeActorRef) {
|
|
376
401
|
this.rememberActorMeshFromType(actorId, actorType);
|
|
377
|
-
return await this.createOrGet(actorId, actorType, false, createRequest, signal, false,
|
|
402
|
+
return await this.createOrGet(actorId, actorType, false, createRequest, signal, false, Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, nativeActorRef);
|
|
378
403
|
}
|
|
379
404
|
adoptCreatedAuthority(actorId, authorityOwnerGeneration, ownerLeaseGeneration) {
|
|
380
405
|
const state = this.states.get(actorId);
|
|
@@ -405,7 +430,7 @@ class DefaultZLinkActorManager {
|
|
|
405
430
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.context.actorId}' must leave its current SPOT before destroy.`);
|
|
406
431
|
}
|
|
407
432
|
const destroyTask = state.getOrStartDestroy(entryNodeRid, async (actorRef) => {
|
|
408
|
-
const destroyedActorRef = actorRef === undefined ? undefined : (0,
|
|
433
|
+
const destroyedActorRef = actorRef === undefined ? undefined : (0, actor_runtime_state_1.toFrameworkActorRef)(actorRef, state.meshName ?? '');
|
|
409
434
|
if (actorRef !== undefined) {
|
|
410
435
|
await node.destroyActor(actorRef, 0, destroySignal);
|
|
411
436
|
state.markNativeActorDestroyed(actorRef);
|
|
@@ -413,14 +438,7 @@ class DefaultZLinkActorManager {
|
|
|
413
438
|
if (state.actorType !== undefined && state.ownsLocation) {
|
|
414
439
|
await this.options.locationLifecycle?.releaseActor(state.actorType, actor.context.actorId, destroyedActorRef);
|
|
415
440
|
}
|
|
416
|
-
this.
|
|
417
|
-
await (0, handler_instance_scope_1.disposeLifecycleHandlers)(actor);
|
|
418
|
-
state.clearAfterDestroy();
|
|
419
|
-
if (this.states.get(actor.context.actorId) === state) {
|
|
420
|
-
this.states.delete(actor.context.actorId);
|
|
421
|
-
this.actorMeshNames.delete(actor.context.actorId);
|
|
422
|
-
}
|
|
423
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
441
|
+
await this.finalizeDestroyedActor(actor.context.actorId, state);
|
|
424
442
|
});
|
|
425
443
|
try {
|
|
426
444
|
await destroyTask;
|
|
@@ -430,7 +448,7 @@ class DefaultZLinkActorManager {
|
|
|
430
448
|
throw error;
|
|
431
449
|
}
|
|
432
450
|
}
|
|
433
|
-
async createOrGet(actorId, actorType, failIfExists, request, signal, claimLocation = true, timeoutMs =
|
|
451
|
+
async createOrGet(actorId, actorType, failIfExists, request, signal, claimLocation = true, timeoutMs = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS, nativeActorRef) {
|
|
434
452
|
const deadline = performance.now() + timeoutMs;
|
|
435
453
|
const requestedMeshName = this.actorMeshNames.get(actorId);
|
|
436
454
|
for (;;) {
|
|
@@ -509,7 +527,7 @@ class DefaultZLinkActorManager {
|
|
|
509
527
|
if (this.states.get(actorId) === state) {
|
|
510
528
|
this.states.delete(actorId);
|
|
511
529
|
this.actorMeshNames.delete(actorId);
|
|
512
|
-
this.options.metrics?.change(
|
|
530
|
+
this.options.metrics?.change(runtime_metrics_1.METRIC_NAMES.ActorCount, -1);
|
|
513
531
|
}
|
|
514
532
|
}
|
|
515
533
|
createRequestMessage(request) {
|
|
@@ -517,13 +535,13 @@ class DefaultZLinkActorManager {
|
|
|
517
535
|
const empty = runtime_message_1.ZLinkBufferMessage.from(Buffer.alloc(0));
|
|
518
536
|
return {
|
|
519
537
|
nativeRequest: empty,
|
|
520
|
-
callbackRequest:
|
|
538
|
+
callbackRequest: contracts_1.ZLinkMessage.fromEncoded(contracts_1.ZLinkEncodedPayload.from(empty.data()))
|
|
521
539
|
};
|
|
522
540
|
}
|
|
523
541
|
const nativeRequest = (0, payload_codec_1.encodeFrameworkPayloadMessage)(request, this.options.messageSerializers);
|
|
524
542
|
return {
|
|
525
543
|
nativeRequest,
|
|
526
|
-
callbackRequest:
|
|
544
|
+
callbackRequest: contracts_1.ZLinkMessage.fromEncoded(contracts_1.ZLinkEncodedPayload.from(nativeRequest.data()))
|
|
527
545
|
};
|
|
528
546
|
}
|
|
529
547
|
getOrCreateState(actorId) {
|
|
@@ -531,25 +549,25 @@ class DefaultZLinkActorManager {
|
|
|
531
549
|
if (existing !== undefined) {
|
|
532
550
|
return existing;
|
|
533
551
|
}
|
|
534
|
-
const state = new
|
|
552
|
+
const state = new actor_runtime_state_1.ZLinkActorRuntimeState(actorId);
|
|
535
553
|
const remembered = this.actorMeshNames.get(actorId);
|
|
536
554
|
if (remembered !== undefined) {
|
|
537
555
|
state.rememberMeshName(remembered);
|
|
538
556
|
}
|
|
539
557
|
this.states.set(actorId, state);
|
|
540
|
-
this.options.metrics?.change(
|
|
558
|
+
this.options.metrics?.change(runtime_metrics_1.METRIC_NAMES.ActorCount, 1);
|
|
541
559
|
return state;
|
|
542
560
|
}
|
|
543
561
|
actorRefForState(state) {
|
|
544
562
|
const nativeActorRef = state.nativeActorRef;
|
|
545
563
|
if (nativeActorRef !== undefined) {
|
|
546
|
-
return (0,
|
|
564
|
+
return (0, actor_runtime_state_1.toFrameworkActorRef)(nativeActorRef, state.meshName ?? '');
|
|
547
565
|
}
|
|
548
566
|
return {
|
|
549
567
|
actorId: state.actorId,
|
|
550
568
|
objectGeneration: 1n,
|
|
551
569
|
meshName: state.meshName ?? '',
|
|
552
|
-
nodeRid: this.options.actorCreatedNodeRidProvider?.() ??
|
|
570
|
+
nodeRid: this.options.actorCreatedNodeRidProvider?.() ?? LOCAL_DIAGNOSTIC_NODE_RID
|
|
553
571
|
};
|
|
554
572
|
}
|
|
555
573
|
}
|
|
@@ -559,7 +577,7 @@ class ZLinkActorCreateCallRuntime {
|
|
|
559
577
|
meshNameValue;
|
|
560
578
|
requestValue;
|
|
561
579
|
requestConfigured = false;
|
|
562
|
-
timeoutMsValue =
|
|
580
|
+
timeoutMsValue = Registration_1.DEFAULT_REQUEST_TIMEOUT_MS;
|
|
563
581
|
timeoutConfigured = false;
|
|
564
582
|
submitted = false;
|
|
565
583
|
turn = (0, execution_1.captureZLinkSpotSerialTurn)();
|
|
@@ -643,7 +661,7 @@ async function waitForCreationRetry(signal) {
|
|
|
643
661
|
else
|
|
644
662
|
reject(error);
|
|
645
663
|
};
|
|
646
|
-
const timer = setTimeout(() => finish(),
|
|
664
|
+
const timer = setTimeout(() => finish(), ACTOR_CREATION_RETRY_INTERVAL_MS);
|
|
647
665
|
const onAbort = () => {
|
|
648
666
|
finish(signal?.reason ?? new Error('Actor creation was aborted.'));
|
|
649
667
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
1
|
+
import { type Type, type ZLinkActor, type ZLinkActorHandlerRegistry, type ZLinkMessageContext, type ZLinkMessageSerializer, type ZLinkSpot, type ZLinkSpotActorJoinResult } from '../../contracts';
|
|
3
2
|
import type { Message } from '../../contracts/Common/Message';
|
|
4
|
-
import type {
|
|
3
|
+
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
5
4
|
import type { ZLinkSerialWorkOptions } from '../execution/serial-execution-queue';
|
|
6
5
|
export declare enum ZLinkActorPacketKind {
|
|
7
6
|
Send = "send",
|
|
@@ -12,6 +11,7 @@ export interface ZLinkActorPacketDescriptor {
|
|
|
12
11
|
readonly packetName: string;
|
|
13
12
|
readonly actorType: Type<ZLinkActor>;
|
|
14
13
|
readonly handlerType: Type;
|
|
14
|
+
readonly methodName?: string;
|
|
15
15
|
}
|
|
16
16
|
export declare class ZLinkSpotActorHandlerRegistryRuntime implements ZLinkActorHandlerRegistry {
|
|
17
17
|
private readonly packets;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkSpotActorDispatcher = exports.ZLinkSpotActorHandlerRegistryRuntime = exports.ZLinkActorPacketKind = void 0;
|
|
4
|
-
const
|
|
4
|
+
const stream_wire_1 = require("@zlink-systems/stream-wire");
|
|
5
5
|
const contracts_1 = require("../../contracts");
|
|
6
|
-
const configuration_1 = require("../configuration");
|
|
7
6
|
const Attributes_1 = require("../../contracts/Handlers/Attributes");
|
|
7
|
+
const configuration_1 = require("../configuration");
|
|
8
|
+
const framework_errors_internal_1 = require("../framework-errors-internal");
|
|
9
|
+
const handler_instance_scope_1 = require("../handlers/handler-instance-scope");
|
|
8
10
|
const payload_codec_1 = require("../messaging/payload-codec");
|
|
9
|
-
const actor_lifecycle_snapshot_1 = require("./actor-lifecycle-snapshot");
|
|
10
11
|
const actor_join_deferred_scope_1 = require("./actor-join-deferred-scope");
|
|
11
|
-
const
|
|
12
|
+
const actor_lifecycle_snapshot_1 = require("./actor-lifecycle-snapshot");
|
|
12
13
|
var ZLinkActorPacketKind;
|
|
13
14
|
(function (ZLinkActorPacketKind) {
|
|
14
15
|
ZLinkActorPacketKind["Send"] = "send";
|
|
@@ -28,7 +29,8 @@ class ZLinkSpotActorHandlerRegistryRuntime {
|
|
|
28
29
|
: ZLinkActorPacketKind.Request,
|
|
29
30
|
packetName: resolvedPacketName,
|
|
30
31
|
actorType: Object,
|
|
31
|
-
handlerType
|
|
32
|
+
handlerType,
|
|
33
|
+
methodName: metadata.methodName
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
addPacket(descriptor) {
|
|
@@ -36,7 +38,13 @@ class ZLinkSpotActorHandlerRegistryRuntime {
|
|
|
36
38
|
if (this.packets.has(key)) {
|
|
37
39
|
throw new configuration_1.ZLinkConfigurationException(`Actor packet '${descriptor.packetName}' for '${descriptor.actorType.name}' is already registered.`);
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
const metadata = (0, Attributes_1.readZLinkDecoratorMetadata)(descriptor.handlerType).find((entry) => entry.kind ===
|
|
42
|
+
(descriptor.kind === ZLinkActorPacketKind.Send ? 'spotActorSend' : 'spotActorRequest') &&
|
|
43
|
+
entry.packetName === descriptor.packetName);
|
|
44
|
+
this.packets.set(key, {
|
|
45
|
+
...descriptor,
|
|
46
|
+
methodName: descriptor.methodName ?? metadata?.methodName
|
|
47
|
+
});
|
|
40
48
|
return this;
|
|
41
49
|
}
|
|
42
50
|
resolvePacket(kind, actor, packetName) {
|
|
@@ -73,7 +81,7 @@ class ZLinkSpotActorDispatcher {
|
|
|
73
81
|
const descriptor = this.requirePacket(ZLinkActorPacketKind.Send, actor, packetName);
|
|
74
82
|
const message = decode();
|
|
75
83
|
this.options.onHandlerStart?.();
|
|
76
|
-
await this.invokeHandler(actor, descriptor, (handler) => (0, actor_join_deferred_scope_1.runActorHandlerWithDeferredJoins)(() =>
|
|
84
|
+
await this.invokeHandler(actor, descriptor, (handler, method) => (0, actor_join_deferred_scope_1.runActorHandlerWithDeferredJoins)(() => method.call(handler, this.options.spot, actor, this.createContext(packetName, context), message)));
|
|
77
85
|
});
|
|
78
86
|
}
|
|
79
87
|
dispatchRequest(actor, packetName, request, context = {}) {
|
|
@@ -90,7 +98,7 @@ class ZLinkSpotActorDispatcher {
|
|
|
90
98
|
const descriptor = this.requirePacket(ZLinkActorPacketKind.Request, actor, packetName);
|
|
91
99
|
const request = decode();
|
|
92
100
|
this.options.onHandlerStart?.();
|
|
93
|
-
return await this.invokeHandler(actor, descriptor, (handler) => (0, actor_join_deferred_scope_1.runActorHandlerWithDeferredJoins)(() =>
|
|
101
|
+
return await this.invokeHandler(actor, descriptor, (handler, method) => (0, actor_join_deferred_scope_1.runActorHandlerWithDeferredJoins)(() => method.call(handler, this.options.spot, actor, this.createContext(packetName, context), request), (reply) => afterReply(reply, {
|
|
94
102
|
metadata: new Map(),
|
|
95
103
|
compressPayload: false
|
|
96
104
|
}), beforeReply === undefined
|
|
@@ -109,7 +117,7 @@ class ZLinkSpotActorDispatcher {
|
|
|
109
117
|
return result;
|
|
110
118
|
});
|
|
111
119
|
}
|
|
112
|
-
evaluateActorJoin(actor, request, contentType =
|
|
120
|
+
evaluateActorJoin(actor, request, contentType = stream_wire_1.ZlinkStreamContentType.Json) {
|
|
113
121
|
return this.execute(async () => {
|
|
114
122
|
const payload = (0, payload_codec_1.wrapFrameworkPayloadMessage)(request, this.options.messageSerializers, contentType);
|
|
115
123
|
const onActorJoin = this.options.spot.onActorJoin;
|
|
@@ -151,7 +159,14 @@ class ZLinkSpotActorDispatcher {
|
|
|
151
159
|
throw actorDispatchHandlerNotFound(`Actor handler '${descriptor.handlerType.name}' expects actor '${descriptor.actorType.name}'.`);
|
|
152
160
|
}
|
|
153
161
|
async invokeHandler(actor, descriptor, callback) {
|
|
154
|
-
return await (0, handler_instance_scope_1.runWithLifecycleHandler)(actor, descriptor.handlerType, this.options.providerResolver, (resolved) =>
|
|
162
|
+
return await (0, handler_instance_scope_1.runWithLifecycleHandler)(actor, descriptor.handlerType, this.options.providerResolver, (resolved) => {
|
|
163
|
+
const methodName = descriptor.methodName ?? 'handle';
|
|
164
|
+
const method = resolved[methodName];
|
|
165
|
+
if (typeof method !== 'function') {
|
|
166
|
+
throw new configuration_1.ZLinkConfigurationException(`Actor handler '${descriptor.handlerType.name}.${methodName}' is not callable.`);
|
|
167
|
+
}
|
|
168
|
+
return callback(resolved, method);
|
|
169
|
+
});
|
|
155
170
|
}
|
|
156
171
|
execute(operation) {
|
|
157
172
|
const pending = this.options.serial?.execute(operation, this.options.serialWorkOptions) ??
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import type { ZLinkActor } from '../../contracts';
|
|
2
2
|
import type { ZLinkActorManagerOptions } from './actor-runtime-contracts';
|
|
3
3
|
import type { ZLinkActorRuntimeState } from './actor-runtime-state';
|
|
4
|
-
type ZLinkTransferredActorRollbackOptions = Pick<ZLinkActorManagerOptions, '
|
|
4
|
+
type ZLinkTransferredActorRollbackOptions = Pick<ZLinkActorManagerOptions, 'nativeActorNode' | 'nativeActorNodeProvider' | 'nativeActorCompletionTableProvider'>;
|
|
5
5
|
export declare class ZLinkTransferredActorRollbackCoordinator {
|
|
6
6
|
private readonly states;
|
|
7
7
|
private readonly options;
|
|
8
|
-
private readonly
|
|
9
|
-
constructor(states: Map<string, ZLinkActorRuntimeState>, options: ZLinkTransferredActorRollbackOptions);
|
|
8
|
+
private readonly finalize;
|
|
9
|
+
constructor(states: Map<string, ZLinkActorRuntimeState>, options: ZLinkTransferredActorRollbackOptions, finalize: (actorId: string, state: ZLinkActorRuntimeState) => Promise<void>);
|
|
10
10
|
rollback(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
|
|
11
|
-
private schedule;
|
|
12
|
-
private retry;
|
|
13
11
|
private destroyNativeActor;
|
|
14
12
|
private complete;
|
|
15
13
|
}
|
|
@@ -3,14 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZLinkTransferredActorRollbackCoordinator = void 0;
|
|
4
4
|
const backend_1 = require("../backend");
|
|
5
5
|
const runtime_values_1 = require("../backend/runtime-values");
|
|
6
|
-
const
|
|
6
|
+
const actor_lifecycle_snapshot_1 = require("./actor-lifecycle-snapshot");
|
|
7
7
|
class ZLinkTransferredActorRollbackCoordinator {
|
|
8
8
|
states;
|
|
9
9
|
options;
|
|
10
|
-
|
|
11
|
-
constructor(states, options) {
|
|
10
|
+
finalize;
|
|
11
|
+
constructor(states, options, finalize) {
|
|
12
12
|
this.states = states;
|
|
13
13
|
this.options = options;
|
|
14
|
+
this.finalize = finalize;
|
|
14
15
|
}
|
|
15
16
|
async rollback(actor, signal) {
|
|
16
17
|
const state = this.states.get(actor.context.actorId);
|
|
@@ -23,41 +24,10 @@ class ZLinkTransferredActorRollbackCoordinator {
|
|
|
23
24
|
}
|
|
24
25
|
const actorRef = state.nativeActorRef;
|
|
25
26
|
const node = this.options.nativeActorNode ?? this.options.nativeActorNodeProvider?.();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
await this.destroyNativeActor(node, actorRef, signal);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
this.schedule(actor, state, node, actorRef);
|
|
33
|
-
throw error;
|
|
34
|
-
}
|
|
35
|
-
this.complete(actor, state);
|
|
36
|
-
}
|
|
37
|
-
schedule(actor, state, node, actorRef) {
|
|
38
|
-
if (this.tasks.has(actor.context.actorId)) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const task = this.retry(actor, state, node, actorRef).finally(() => this.tasks.delete(actor.context.actorId));
|
|
42
|
-
this.tasks.set(actor.context.actorId, task);
|
|
43
|
-
}
|
|
44
|
-
async retry(actor, state, node, actorRef) {
|
|
45
|
-
const retryDelay = new actor_retry_delay_1.ZLinkActorRetryDelay();
|
|
46
|
-
while (this.states.get(actor.context.actorId) === state &&
|
|
47
|
-
this.options.shutdownSignal?.aborted !== true) {
|
|
48
|
-
if (!(await retryDelay.wait(this.options.shutdownSignal)))
|
|
49
|
-
return;
|
|
50
|
-
try {
|
|
51
|
-
if (node !== undefined && actorRef !== undefined) {
|
|
52
|
-
await this.destroyNativeActor(node, actorRef);
|
|
53
|
-
}
|
|
54
|
-
this.complete(actor, state);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
// The tombstone prevents dispatch while the next retry is pending.
|
|
59
|
-
}
|
|
27
|
+
if (node !== undefined && actorRef !== undefined) {
|
|
28
|
+
await this.destroyNativeActor(node, actorRef, signal);
|
|
60
29
|
}
|
|
30
|
+
await this.complete(actor, state);
|
|
61
31
|
}
|
|
62
32
|
async destroyNativeActor(node, actorRef, signal) {
|
|
63
33
|
const completions = this.options.nativeActorCompletionTableProvider?.();
|
|
@@ -78,14 +48,11 @@ class ZLinkTransferredActorRollbackCoordinator {
|
|
|
78
48
|
(0, backend_1.closeMeshCompletion)(completion);
|
|
79
49
|
}
|
|
80
50
|
}
|
|
81
|
-
complete(actor, state) {
|
|
51
|
+
async complete(actor, state) {
|
|
82
52
|
if (this.states.get(actor.context.actorId) !== state) {
|
|
83
53
|
return;
|
|
84
54
|
}
|
|
85
|
-
|
|
86
|
-
state.clearAfterDestroy();
|
|
87
|
-
this.states.delete(actor.context.actorId);
|
|
88
|
-
this.options.metrics?.change('zlink.actor.count', -1);
|
|
55
|
+
await state.getOrStartDestroy((0, actor_lifecycle_snapshot_1.createActorMembership)(actor).actor.nodeRid, () => this.finalize(actor.context.actorId, state));
|
|
89
56
|
}
|
|
90
57
|
}
|
|
91
58
|
exports.ZLinkTransferredActorRollbackCoordinator = ZLinkTransferredActorRollbackCoordinator;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ZLinkFrameworkInternalErrorKind } from './framework-errors-internal';
|
|
2
|
+
/** 소비한 배열 prefix가 정리 조건에 도달했는지 판정합니다. */
|
|
3
|
+
export declare function shouldCompactBackingArray(head: number, length: number): boolean;
|
|
2
4
|
export declare class ZLinkRuntimeAdmissionGate {
|
|
3
5
|
readonly ownerAdmissionOpen: () => boolean;
|
|
4
6
|
private readonly meshes;
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ZLinkRuntimeAdmissionGate = void 0;
|
|
4
|
+
exports.shouldCompactBackingArray = shouldCompactBackingArray;
|
|
4
5
|
const framework_errors_internal_1 = require("./framework-errors-internal");
|
|
6
|
+
const BACKING_ARRAY_COMPACTION_MIN_HEAD = 1024;
|
|
7
|
+
/** 소비한 배열 prefix가 정리 조건에 도달했는지 판정합니다. */
|
|
8
|
+
function shouldCompactBackingArray(head, length) {
|
|
9
|
+
return head >= BACKING_ARRAY_COMPACTION_MIN_HEAD && head * 2 >= length;
|
|
10
|
+
}
|
|
5
11
|
class ZLinkRuntimeAdmissionGate {
|
|
6
12
|
ownerAdmissionOpen;
|
|
7
13
|
meshes = new Map();
|
|
@@ -165,7 +171,7 @@ function compactWaiters(state) {
|
|
|
165
171
|
state.waiters.length = 0;
|
|
166
172
|
state.waiterHead = 0;
|
|
167
173
|
}
|
|
168
|
-
else if (state.waiterHead
|
|
174
|
+
else if (shouldCompactBackingArray(state.waiterHead, state.waiters.length)) {
|
|
169
175
|
state.waiters.splice(0, state.waiterHead);
|
|
170
176
|
state.waiterHead = 0;
|
|
171
177
|
}
|
|
@@ -9,7 +9,7 @@ export declare function releaseApplicationJobPermitBeforeHandler(): void;
|
|
|
9
9
|
/** True while dispatch already owns the host-wide application job permit. */
|
|
10
10
|
export declare function hasApplicationJobPermit(): boolean;
|
|
11
11
|
/** Re-enters the captured permit scope when a serial executor runs later. */
|
|
12
|
-
export declare function bindApplicationJobPermit<TResult>(callback: () => Promise<TResult> | TResult): () => Promise<TResult> | TResult;
|
|
12
|
+
export declare function bindApplicationJobPermit<TResult, TArgument>(callback: (argument?: TArgument) => Promise<TResult> | TResult): (argument?: TArgument) => Promise<TResult> | TResult;
|
|
13
13
|
/**
|
|
14
14
|
* Transfers the current permit to a detached internal handler turn. The
|
|
15
15
|
* detached owner must release it at handler entry or at a pre-start terminal.
|
|
@@ -41,7 +41,7 @@ function bindApplicationJobPermit(callback) {
|
|
|
41
41
|
const scope = applicationJobPermitScope.getStore();
|
|
42
42
|
if (scope === undefined)
|
|
43
43
|
return callback;
|
|
44
|
-
return () => applicationJobPermitScope.run(scope, callback);
|
|
44
|
+
return (argument) => applicationJobPermitScope.run(scope, callback, argument);
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* Transfers the current permit to a detached internal handler turn. The
|