@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,3 +1,5 @@
|
|
|
1
|
+
import { ZLINK_MAX_SPOT_ID_BYTES } from '../../contracts/Common/CoreTypes';
|
|
2
|
+
import { ZlinkStreamContentType } from '@zlink-systems/stream-wire';
|
|
1
3
|
import type { ZLinkBackendActorRef } from '../backend/contracts';
|
|
2
4
|
import { decodeActorMessageFollowContext, type ZLinkRemoteBoundSessionTarget } from '../actors';
|
|
3
5
|
import type { RoutingId, ZLinkActor } from '../../contracts';
|
|
@@ -146,7 +148,7 @@ export function decodeRemoteActorJoinPayload(
|
|
|
146
148
|
requestContentType:
|
|
147
149
|
typeof payload.requestContentType === 'string'
|
|
148
150
|
? payload.requestContentType
|
|
149
|
-
:
|
|
151
|
+
: ZlinkStreamContentType.Json
|
|
150
152
|
};
|
|
151
153
|
}
|
|
152
154
|
|
|
@@ -302,8 +304,10 @@ function decodeBoundSessionServiceWireRelocation(
|
|
|
302
304
|
|
|
303
305
|
function requireSpotId(value: string): string {
|
|
304
306
|
const bytes = Buffer.byteLength(value, 'utf8');
|
|
305
|
-
if (bytes < 1 || bytes >
|
|
306
|
-
throw new Error(
|
|
307
|
+
if (bytes < 1 || bytes > ZLINK_MAX_SPOT_ID_BYTES) {
|
|
308
|
+
throw new Error(
|
|
309
|
+
`Remote bound session SpotId must contain 1..${ZLINK_MAX_SPOT_ID_BYTES} UTF-8 bytes.`
|
|
310
|
+
);
|
|
307
311
|
}
|
|
308
312
|
return value;
|
|
309
313
|
}
|
|
@@ -1,21 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
Type,
|
|
3
|
-
ZLinkMessageSerializer,
|
|
4
|
-
ZLinkSpot,
|
|
5
|
-
ZLinkSpotPacketHandler,
|
|
6
|
-
ZLinkSpotRequestHandler
|
|
1
|
+
import {
|
|
2
|
+
type Type,
|
|
3
|
+
type ZLinkMessageSerializer,
|
|
4
|
+
type ZLinkSpot,
|
|
5
|
+
type ZLinkSpotPacketHandler,
|
|
6
|
+
type ZLinkSpotRequestHandler,
|
|
7
|
+
ZLinkFrameworkException,
|
|
8
|
+
zlinkMessageMetadata
|
|
7
9
|
} from '../../contracts';
|
|
10
|
+
|
|
11
|
+
import type { Message } from '../../contracts/Common/Message';
|
|
8
12
|
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
9
|
-
import { ZLinkFrameworkException, zlinkMessageMetadata } from '../../contracts';
|
|
10
13
|
import {
|
|
11
14
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
12
15
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
13
16
|
ZLinkDispatchErrorSurface,
|
|
14
17
|
ZLinkDispatchMessageKind
|
|
15
18
|
} from '../../contracts/Dispatch/ZLinkDispatchOptions';
|
|
19
|
+
import {
|
|
20
|
+
ZLINK_REMOTE_ACTOR_PACKET_RELAY_PACKET,
|
|
21
|
+
ZLINK_REMOTE_BOUND_SESSION_ERROR_PACKET,
|
|
22
|
+
ZLINK_REMOTE_BOUND_SESSION_RESPONSE_PACKET,
|
|
23
|
+
ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET
|
|
24
|
+
} from '../actors';
|
|
25
|
+
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
26
|
+
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
16
27
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
17
28
|
import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
|
|
18
|
-
import type { Message } from '../../contracts/Common/Message';
|
|
19
29
|
import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
20
30
|
import {
|
|
21
31
|
decodeChannelEnvelope,
|
|
@@ -27,25 +37,18 @@ import {
|
|
|
27
37
|
ZLinkChannelMessageKind,
|
|
28
38
|
type ZLinkChannelEnvelopeCodecRegistry
|
|
29
39
|
} from '../channels/channel-envelope';
|
|
40
|
+
import { SPOT_DIRECT_ENVELOPE } from '../channels/spot-direct-envelope';
|
|
41
|
+
import { createInboundFlow, runWithFlow } from '../diagnostics/flow-context';
|
|
42
|
+
import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
|
|
30
43
|
import {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
ZLINK_REMOTE_BOUND_SESSION_SEND_PACKET
|
|
35
|
-
} from '../actors';
|
|
44
|
+
internalFrameworkErrorKind,
|
|
45
|
+
ZLinkFrameworkInternalErrorKind
|
|
46
|
+
} from '../framework-errors-internal';
|
|
36
47
|
import { resolveLifecycleHandler } from '../handlers/handler-instance-scope';
|
|
37
48
|
import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
|
|
38
|
-
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
39
|
-
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
40
|
-
import { zlinkMetadataByteLength, zlinkSerialWorkOptions } from '../execution/serial-work-size';
|
|
41
49
|
import { REMOTE_ACTOR_JOIN_PACKET } from './spot-remote-codec';
|
|
42
50
|
import { appendRouteReplyParts, hasReplyToken, submitRouteReply } from './spot-route-replies';
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
ZLinkFrameworkInternalErrorKind,
|
|
46
|
-
internalFrameworkErrorKind
|
|
47
|
-
} from '../framework-errors-internal';
|
|
48
|
-
import { releaseApplicationJobPermitBeforeHandler } from '../application-jobs/application-job-queue-scope';
|
|
51
|
+
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
49
52
|
|
|
50
53
|
interface ZLinkSpotRoutePacketDispatchOptions {
|
|
51
54
|
readonly packetHandlers: ReadonlyMap<string, readonly ZLinkSpotHandlerRegistration[]>;
|
|
@@ -58,8 +61,6 @@ interface ZLinkSpotRoutePacketDispatchOptions {
|
|
|
58
61
|
readonly claimApplicationWork?: () => ZLinkApplicationWorkClaim;
|
|
59
62
|
}
|
|
60
63
|
|
|
61
|
-
const SPOT_DIRECT_ENVELOPE = 'zlink.framework.spot-direct.v1';
|
|
62
|
-
|
|
63
64
|
/** D5: reply metadata attached only to framework-self-generated errors. */
|
|
64
65
|
const FRAMEWORK_ORIGIN_REPLY_METADATA: Readonly<Record<string, string>> = Object.freeze({
|
|
65
66
|
[ZLINK_FRAMEWORK_ORIGIN_METADATA_KEY]: ZLINK_FRAMEWORK_ORIGIN_METADATA_VALUE
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { constants as osConstants } from 'node:os';
|
|
1
2
|
import type {
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
ZLinkBackendReceived as BackendReceived,
|
|
4
|
+
ZLinkBackendMessageLike as MessageLike
|
|
4
5
|
} from '../backend/runtime-values';
|
|
5
6
|
import {
|
|
6
7
|
decodeChannelEnvelope,
|
|
@@ -8,8 +9,9 @@ import {
|
|
|
8
9
|
encodeChannelReplyParts
|
|
9
10
|
} from '../channels/channel-envelope';
|
|
10
11
|
import { ZLinkConfigurationException } from '../configuration';
|
|
11
|
-
import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
|
|
12
12
|
import type { ZLinkDecodedRemoteActorJoinRequest } from './spot-remote-codec';
|
|
13
|
+
import { encodeSpotRouteBridgeReply } from './spot-route-reply-wire';
|
|
14
|
+
const nativeErrnoValues = osConstants.errno;
|
|
13
15
|
|
|
14
16
|
export interface ZLinkRouteReplySubmitOperation {
|
|
15
17
|
message(message: MessageLike): ZLinkRouteReplySubmitOperation;
|
|
@@ -120,6 +122,6 @@ function isNativeBadAddress(error: unknown): boolean {
|
|
|
120
122
|
return (
|
|
121
123
|
typeof error === 'object' &&
|
|
122
124
|
error !== null &&
|
|
123
|
-
Number((error as { nativeErrno?: unknown }).nativeErrno) ===
|
|
125
|
+
Number((error as { nativeErrno?: unknown }).nativeErrno) === nativeErrnoValues.EFAULT
|
|
124
126
|
);
|
|
125
127
|
}
|
|
@@ -5,6 +5,8 @@ import type {
|
|
|
5
5
|
ZLinkSpotActorJoinResult
|
|
6
6
|
} from '../../contracts';
|
|
7
7
|
import type { Message } from '../../contracts/Common/Message';
|
|
8
|
+
import type { ZLinkActorHandoffPacket, ZLinkActorHandoffResult } from '../actors/actor-handoff';
|
|
9
|
+
import type { ZLinkRemoteBoundSessionTarget } from '../actors/actor-runtime-state';
|
|
8
10
|
import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
|
|
9
11
|
import type { ZLinkBackendReceived as BackendReceived } from '../backend/runtime-values';
|
|
10
12
|
import {
|
|
@@ -23,16 +25,12 @@ import {
|
|
|
23
25
|
hasRemoteActorJoinIdentity,
|
|
24
26
|
isRemoteActorJoinPayload,
|
|
25
27
|
type ZLinkDecodedRemoteActorJoinRequest,
|
|
26
|
-
type
|
|
27
|
-
type
|
|
28
|
+
type ZLinkRemoteActorJoinWirePayload,
|
|
29
|
+
type ZLinkRoutedActorTransferProvider
|
|
28
30
|
} from './spot-remote-codec';
|
|
29
31
|
import { submitRoutedActorJoinError, submitRoutedActorJoinReply } from './spot-route-replies';
|
|
30
32
|
import type { ZLinkSpotSerialTurnExecutor } from './spot-serial-turn-executor';
|
|
31
|
-
|
|
32
|
-
import {
|
|
33
|
-
ZLinkFrameworkInternalErrorKind,
|
|
34
|
-
createInternalFrameworkException
|
|
35
|
-
} from '../framework-errors-internal';
|
|
33
|
+
const DEFAULT_PENDING_ADMISSION_TIMEOUT_MS = 30_000;
|
|
36
34
|
|
|
37
35
|
interface ZLinkRoutedActorAdmissionTarget {
|
|
38
36
|
onActorJoin?(actorId: string, request: ZLinkMessage): Promise<ZLinkSpotActorJoinResult>;
|
|
@@ -40,13 +38,13 @@ interface ZLinkRoutedActorAdmissionTarget {
|
|
|
40
38
|
|
|
41
39
|
interface ZLinkSpotRoutedActorAdmissionOptions {
|
|
42
40
|
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
43
|
-
readonly isSpotClosing?: () => boolean;
|
|
44
41
|
readonly getTarget: () => ZLinkRoutedActorAdmissionTarget;
|
|
45
42
|
readonly defaultAccept: boolean;
|
|
46
43
|
readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
|
|
47
44
|
readonly commitTransferredActor?: (
|
|
48
45
|
actor: ZLinkActor,
|
|
49
|
-
backlog: readonly ZLinkActorHandoffPacket[]
|
|
46
|
+
backlog: readonly ZLinkActorHandoffPacket[],
|
|
47
|
+
sealedSession: ZLinkRemoteBoundSessionTarget | undefined
|
|
50
48
|
) => Promise<readonly ZLinkActorHandoffResult[]>;
|
|
51
49
|
readonly messageSerializers?: ReadonlyMap<string, ZLinkMessageSerializer>;
|
|
52
50
|
readonly pendingAdmissionTimeoutMs?: number;
|
|
@@ -78,21 +76,6 @@ export class ZLinkSpotRoutedActorAdmission {
|
|
|
78
76
|
if (decoded === undefined) {
|
|
79
77
|
return false;
|
|
80
78
|
}
|
|
81
|
-
if (this.options.isSpotClosing?.() === true) {
|
|
82
|
-
try {
|
|
83
|
-
submitRoutedActorJoinError(
|
|
84
|
-
received,
|
|
85
|
-
decoded,
|
|
86
|
-
createInternalFrameworkException(
|
|
87
|
-
ZLinkFrameworkInternalErrorKind.RequestRejected,
|
|
88
|
-
`Actor '${decoded.actorId}' target Spot is closing.`
|
|
89
|
-
)
|
|
90
|
-
);
|
|
91
|
-
} finally {
|
|
92
|
-
this.closeDecoded(decoded);
|
|
93
|
-
}
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
79
|
if (decoded.phase === 'admission') {
|
|
97
80
|
await this.admitTransfer(decoded, received);
|
|
98
81
|
return true;
|
|
@@ -240,7 +223,11 @@ export class ZLinkSpotRoutedActorAdmission {
|
|
|
240
223
|
decoded.remoteBoundSessionTarget
|
|
241
224
|
);
|
|
242
225
|
const handoffResults =
|
|
243
|
-
(await this.options.commitTransferredActor?.(
|
|
226
|
+
(await this.options.commitTransferredActor?.(
|
|
227
|
+
actor,
|
|
228
|
+
decoded.handoffBacklog,
|
|
229
|
+
decoded.remoteBoundSessionTarget
|
|
230
|
+
)) ?? [];
|
|
244
231
|
const commitReply = {
|
|
245
232
|
accepted: true,
|
|
246
233
|
actorNodeRid: String(actorRef.nodeRid),
|
|
@@ -298,7 +285,7 @@ export class ZLinkSpotRoutedActorAdmission {
|
|
|
298
285
|
if (pending.deadline !== undefined) clearTimeout(pending.deadline);
|
|
299
286
|
pending.deadline = setTimeout(() => {
|
|
300
287
|
if (this.pending.get(transferId) === pending) this.pending.delete(transferId);
|
|
301
|
-
}, this.options.pendingAdmissionTimeoutMs ??
|
|
288
|
+
}, this.options.pendingAdmissionTimeoutMs ?? DEFAULT_PENDING_ADMISSION_TIMEOUT_MS);
|
|
302
289
|
pending.deadline.unref();
|
|
303
290
|
}
|
|
304
291
|
|
|
@@ -34,14 +34,14 @@ interface ZLinkRoutedFrameAdmissionTarget {
|
|
|
34
34
|
interface ZLinkSpotRoutedFrameDispatchOptions {
|
|
35
35
|
readonly nativeSpotId: string;
|
|
36
36
|
readonly serial: ZLinkSpotSerialTurnExecutor;
|
|
37
|
-
readonly isSpotClosing?: () => boolean;
|
|
38
37
|
readonly resolveActor: (actorId: string) => ZLinkActor | undefined;
|
|
39
38
|
readonly getTarget: () => ZLinkRoutedFrameAdmissionTarget & ZLinkSpot;
|
|
40
39
|
readonly defaultAccept: boolean;
|
|
41
40
|
readonly routedActorTransferProvider?: ZLinkRoutedActorTransferProvider;
|
|
42
41
|
readonly commitTransferredActor?: (
|
|
43
42
|
actor: ZLinkActor,
|
|
44
|
-
backlog: readonly ZLinkActorHandoffPacket[]
|
|
43
|
+
backlog: readonly ZLinkActorHandoffPacket[],
|
|
44
|
+
sealedSession: ZLinkRemoteBoundSessionTarget | undefined
|
|
45
45
|
) => Promise<readonly ZLinkActorHandoffResult[]>;
|
|
46
46
|
readonly actorPacketHandler?: (delivery: ZLinkActorPacketDelivery) => Promise<unknown>;
|
|
47
47
|
readonly routedBoundSessionReceiver?: (
|
|
@@ -119,7 +119,6 @@ export class ZLinkSpotRoutedFrameDispatch {
|
|
|
119
119
|
});
|
|
120
120
|
this.routedActorAdmission = new ZLinkSpotRoutedActorAdmission({
|
|
121
121
|
serial: options.serial,
|
|
122
|
-
isSpotClosing: options.isSpotClosing,
|
|
123
122
|
getTarget: options.getTarget,
|
|
124
123
|
defaultAccept: options.defaultAccept,
|
|
125
124
|
routedActorTransferProvider: options.routedActorTransferProvider,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { dispatchReasonFromError } from '../diagnostics/dispatch-error-details';
|
|
1
2
|
import type {
|
|
2
3
|
RoutingId,
|
|
3
4
|
Type,
|
|
@@ -7,7 +8,7 @@ import type {
|
|
|
7
8
|
} from '../../contracts';
|
|
8
9
|
import type { ZLinkProviderResolver } from '../../contracts/Common/ZLinkProviderResolver';
|
|
9
10
|
import type { ZLinkApplicationWorkClaim } from '../admission';
|
|
10
|
-
import {
|
|
11
|
+
import { zlinkMessageMetadata } from '../../contracts';
|
|
11
12
|
import {
|
|
12
13
|
ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
|
|
13
14
|
ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
|
|
@@ -18,8 +19,7 @@ import type { ZLinkDispatchErrorReporter } from '../channels';
|
|
|
18
19
|
import { ZLinkConfigurationException } from '../configuration';
|
|
19
20
|
import {
|
|
20
21
|
ZLinkFrameworkInternalErrorKind,
|
|
21
|
-
createInternalFrameworkException
|
|
22
|
-
internalFrameworkErrorKind
|
|
22
|
+
createInternalFrameworkException
|
|
23
23
|
} from '../framework-errors-internal';
|
|
24
24
|
import { resolveLifecycleHandler } from '../handlers/handler-instance-scope';
|
|
25
25
|
import type { ZLinkSpotHandlerRegistration } from './spot-handler-registry';
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
} from '../application-jobs/application-job-queue-scope';
|
|
32
32
|
|
|
33
33
|
interface ZLinkRoutedSpotPacketActivation {
|
|
34
|
+
readonly objectGeneration?: bigint;
|
|
34
35
|
readonly meshName?: string;
|
|
35
36
|
readonly spotId: RoutingId;
|
|
36
37
|
readonly spot: ZLinkSpot;
|
|
@@ -55,6 +56,9 @@ interface ZLinkRoutedSpotPacketContext {
|
|
|
55
56
|
readonly signal?: AbortSignal;
|
|
56
57
|
/** Wait until a recovered activation has actually entered its first handler. */
|
|
57
58
|
readonly awaitFirstHandlerTurn?: boolean;
|
|
59
|
+
readonly onOneWayError?: (error: unknown) => void;
|
|
60
|
+
/** Retains the caller's Instance address intent through an incarnation boundary. */
|
|
61
|
+
readonly activationRecord?: import('../foundation/service-runtime-contracts').ReceiveRecord;
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
export class ZLinkRoutedSpotPacketDispatch {
|
|
@@ -143,14 +147,52 @@ export class ZLinkRoutedSpotPacketDispatch {
|
|
|
143
147
|
activation.meshName === undefined
|
|
144
148
|
? undefined
|
|
145
149
|
: this.options.claimApplicationWork?.(activation.meshName);
|
|
146
|
-
const
|
|
150
|
+
const originalRecord = context.activationRecord?.activationRecord;
|
|
151
|
+
const instanceIntent =
|
|
152
|
+
originalRecord?.activation === 'missing' ||
|
|
153
|
+
(originalRecord?.activation === 'ready' && originalRecord.instanceIntent);
|
|
154
|
+
const runHandler = async (failure?: unknown) => {
|
|
147
155
|
try {
|
|
156
|
+
if (failure !== undefined) throw failure;
|
|
157
|
+
const current = this.options.resolveActivation(spotId);
|
|
158
|
+
if (
|
|
159
|
+
current === undefined ||
|
|
160
|
+
(!instanceIntent &&
|
|
161
|
+
(current !== activation ||
|
|
162
|
+
(originalRecord?.activation === 'ready' &&
|
|
163
|
+
originalRecord.route.objectGeneration !== current.objectGeneration)))
|
|
164
|
+
) {
|
|
165
|
+
throw createInternalFrameworkException(
|
|
166
|
+
ZLinkFrameworkInternalErrorKind.RequestTargetNotFound,
|
|
167
|
+
`Spot '${String(spotId)}' is not active.`
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
if (
|
|
171
|
+
context.activationRecord?.deadlineUnixMs !== undefined &&
|
|
172
|
+
context.activationRecord.deadlineUnixMs < BigInt(Date.now())
|
|
173
|
+
) {
|
|
174
|
+
throw createInternalFrameworkException(
|
|
175
|
+
ZLinkFrameworkInternalErrorKind.DeadlineExceeded,
|
|
176
|
+
`Spot '${String(spotId)}' request deadline has expired.`
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
const currentRegistrations =
|
|
180
|
+
current === activation
|
|
181
|
+
? registrations
|
|
182
|
+
: current.handlers
|
|
183
|
+
.snapshot()
|
|
184
|
+
.filter(
|
|
185
|
+
(registration) =>
|
|
186
|
+
registration.kind === 'packet' &&
|
|
187
|
+
(registration.packetName ?? registration.handlerType.name) ===
|
|
188
|
+
(packetName ?? '')
|
|
189
|
+
);
|
|
148
190
|
// Decode only after the Spot has acquired both application admission
|
|
149
191
|
// and its execution authority.
|
|
150
192
|
const payload = decodePayload();
|
|
151
|
-
for (const registration of
|
|
193
|
+
for (const registration of currentRegistrations) {
|
|
152
194
|
const handler = await resolveLifecycleHandler(
|
|
153
|
-
|
|
195
|
+
current.spot,
|
|
154
196
|
registration.handlerType as Type<
|
|
155
197
|
| ZLinkSpotPacketHandler<ZLinkSpot, unknown>
|
|
156
198
|
| ZLinkSpotRequestHandler<ZLinkSpot, unknown, unknown>
|
|
@@ -159,8 +201,9 @@ export class ZLinkRoutedSpotPacketDispatch {
|
|
|
159
201
|
);
|
|
160
202
|
resolveFirstHandlerTurn?.();
|
|
161
203
|
resolveFirstHandlerTurn = undefined;
|
|
204
|
+
context.activationRecord?.onHandlerTurnStarted?.();
|
|
162
205
|
releaseApplicationJobPermitBeforeHandler();
|
|
163
|
-
response = await handler.handle(
|
|
206
|
+
response = await handler.handle(current.spot, payload, {
|
|
164
207
|
channelName: context.channelName,
|
|
165
208
|
contentType: context.contentType,
|
|
166
209
|
packetName: packetName!,
|
|
@@ -186,17 +229,33 @@ export class ZLinkRoutedSpotPacketDispatch {
|
|
|
186
229
|
applicationClaim?.close();
|
|
187
230
|
}
|
|
188
231
|
},
|
|
189
|
-
(error) =>
|
|
232
|
+
(error) => {
|
|
233
|
+
if (context.onOneWayError === undefined) {
|
|
234
|
+
this.reportFailure(spotId, packetName, context, false, error);
|
|
235
|
+
} else if (resolveFirstHandlerTurn === undefined) {
|
|
236
|
+
context.onOneWayError(error);
|
|
237
|
+
}
|
|
238
|
+
},
|
|
190
239
|
context.workOptions,
|
|
191
|
-
{ signal: context.signal }
|
|
240
|
+
{ signal: context.signal },
|
|
241
|
+
instanceIntent
|
|
242
|
+
? async (failure?: unknown) => {
|
|
243
|
+
try {
|
|
244
|
+
await runHandler(failure);
|
|
245
|
+
} finally {
|
|
246
|
+
detachedApplicationPermit?.releaseAfterInternalProcessing();
|
|
247
|
+
applicationClaim?.close();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
: undefined
|
|
192
251
|
);
|
|
193
|
-
await firstHandlerTurn;
|
|
194
252
|
} catch (error) {
|
|
195
253
|
detached = false;
|
|
196
254
|
detachedApplicationPermit?.releaseAfterInternalProcessing();
|
|
197
255
|
rejectFirstHandlerTurn?.(error);
|
|
198
256
|
throw error;
|
|
199
257
|
}
|
|
258
|
+
await firstHandlerTurn;
|
|
200
259
|
} else {
|
|
201
260
|
if (activation.serial.isCurrentTurn) {
|
|
202
261
|
throw createInternalFrameworkException(
|
|
@@ -204,10 +263,15 @@ export class ZLinkRoutedSpotPacketDispatch {
|
|
|
204
263
|
`Spot '${spotId}' cannot await a request to its current serial turn.`
|
|
205
264
|
);
|
|
206
265
|
}
|
|
207
|
-
await activation.serial.execute(
|
|
266
|
+
await activation.serial.execute(
|
|
267
|
+
runHandler,
|
|
268
|
+
context.workOptions,
|
|
269
|
+
instanceIntent ? runHandler : undefined
|
|
270
|
+
);
|
|
208
271
|
}
|
|
209
272
|
} catch (error) {
|
|
210
|
-
|
|
273
|
+
if (context.activationRecord?.activationRecord === undefined)
|
|
274
|
+
this.reportFailure(spotId, packetName, context, returnResponse, error);
|
|
211
275
|
throw error;
|
|
212
276
|
} finally {
|
|
213
277
|
if (!detached) applicationClaim?.close();
|
|
@@ -222,18 +286,17 @@ export class ZLinkRoutedSpotPacketDispatch {
|
|
|
222
286
|
returnResponse: boolean,
|
|
223
287
|
error: unknown
|
|
224
288
|
): void {
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
surface:
|
|
289
|
+
const reporter = this.options.dispatchErrors;
|
|
290
|
+
if (reporter?.captureEnabled() !== true) return;
|
|
291
|
+
reporter.report({
|
|
292
|
+
surface:
|
|
293
|
+
context.activationRecord?.activationRecord?.kind === 'instanceSpot'
|
|
294
|
+
? ZLinkDispatchErrorSurface.InstanceSpot
|
|
295
|
+
: ZLinkDispatchErrorSurface.SpotRoute,
|
|
229
296
|
messageKind: returnResponse
|
|
230
297
|
? ZLinkDispatchMessageKind.Request
|
|
231
298
|
: ZLinkDispatchMessageKind.Send,
|
|
232
|
-
reason:
|
|
233
|
-
frameworkErrorKind === ZLinkFrameworkInternalErrorKind.WorkerQueueFull ||
|
|
234
|
-
frameworkErrorKind === ZLinkFrameworkInternalErrorKind.DeadlineExceeded
|
|
235
|
-
? ZLinkDispatchErrorReason.Backpressure
|
|
236
|
-
: ZLinkDispatchErrorReason.HandlerException,
|
|
299
|
+
reason: dispatchReasonFromError(error),
|
|
237
300
|
action: returnResponse ? ZLinkDispatchErrorAction.FailCaller : ZLinkDispatchErrorAction.Drop,
|
|
238
301
|
packetName,
|
|
239
302
|
channelName: context.channelName,
|
|
@@ -245,9 +308,19 @@ export class ZLinkRoutedSpotPacketDispatch {
|
|
|
245
308
|
private reportMissing(
|
|
246
309
|
spotId: RoutingId,
|
|
247
310
|
packetName: string | undefined,
|
|
248
|
-
context:
|
|
311
|
+
context: ZLinkRoutedSpotPacketContext,
|
|
249
312
|
returnResponse: boolean
|
|
250
313
|
): void {
|
|
314
|
+
if (context.activationRecord?.activationRecord !== undefined) {
|
|
315
|
+
if (!returnResponse && context.onOneWayError !== undefined)
|
|
316
|
+
context.onOneWayError(
|
|
317
|
+
createInternalFrameworkException(
|
|
318
|
+
ZLinkFrameworkInternalErrorKind.HandlerNotFound,
|
|
319
|
+
`SPOT route handler not found: ${packetName}`
|
|
320
|
+
)
|
|
321
|
+
);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
251
324
|
this.options.dispatchErrors?.report({
|
|
252
325
|
surface: ZLinkDispatchErrorSurface.SpotRoute,
|
|
253
326
|
messageKind: returnResponse
|
|
@@ -46,7 +46,7 @@ export interface ZLinkSpotActorTransferRuntime {
|
|
|
46
46
|
rawReply: Uint8Array,
|
|
47
47
|
replyContentType?: string
|
|
48
48
|
): ZLinkDeferredJoinCompletion;
|
|
49
|
-
|
|
49
|
+
deliverDeferredJoinCompletion(
|
|
50
50
|
completion: ZLinkDeferredJoinCompletion,
|
|
51
51
|
actor: ZLinkActor,
|
|
52
52
|
actorRef: ActorRef,
|
|
@@ -72,15 +72,6 @@ export interface ZLinkSpotActorTransferRuntime {
|
|
|
72
72
|
deadlineAtMs: number,
|
|
73
73
|
signal?: AbortSignal
|
|
74
74
|
): Promise<import('../locations/internal-location-contracts').ZLinkAuthoritySnapshot>;
|
|
75
|
-
rememberRoutedActorTransferTarget(
|
|
76
|
-
actorId: string,
|
|
77
|
-
target: ZLinkRemoteBoundSessionTarget | undefined
|
|
78
|
-
): void;
|
|
79
|
-
claimNativeActorLocation(
|
|
80
|
-
actor: ZLinkActor,
|
|
81
|
-
spotId: RoutingId,
|
|
82
|
-
spotMeshName: string
|
|
83
|
-
): Promise<ZLinkNativeActorJoinSnapshot>;
|
|
84
75
|
claimRoutedActorLocation(
|
|
85
76
|
actor: ZLinkActor,
|
|
86
77
|
spotId: RoutingId,
|
|
@@ -90,28 +81,19 @@ export interface ZLinkSpotActorTransferRuntime {
|
|
|
90
81
|
readonly membershipEpoch: bigint;
|
|
91
82
|
}
|
|
92
83
|
): Promise<void>;
|
|
93
|
-
publishRoutedActorOwnership(
|
|
84
|
+
publishRoutedActorOwnership(
|
|
85
|
+
actor: ZLinkActor,
|
|
86
|
+
sealedSession: ZLinkRemoteBoundSessionTarget | undefined
|
|
87
|
+
): Promise<void>;
|
|
94
88
|
openRoutedActorSession(actor: ZLinkActor): Promise<void>;
|
|
95
89
|
bindRoutedActorRef(actor: ZLinkActor, actorRef: ActorRef): void;
|
|
96
90
|
commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void;
|
|
97
91
|
clearRoutedActor(actor: ZLinkActor): void;
|
|
98
|
-
rollbackNativeActorJoin(actor: ZLinkActor, snapshot: ZLinkNativeActorJoinSnapshot): Promise<void>;
|
|
99
92
|
rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
|
|
100
93
|
notifyCoreSourceLeave(actor: ZLinkActor, callback: () => Promise<void>): Promise<void>;
|
|
101
94
|
actorEntryNodeRid(actor: ZLinkActor): RoutingId | undefined;
|
|
102
95
|
}
|
|
103
96
|
|
|
104
|
-
export interface ZLinkNativeActorJoinSnapshot {
|
|
105
|
-
readonly spotId?: RoutingId;
|
|
106
|
-
readonly spot?: ZLinkSpot;
|
|
107
|
-
readonly locationSpotId?: RoutingId;
|
|
108
|
-
readonly spotMeshName?: string;
|
|
109
|
-
readonly actorRef?: ActorRef;
|
|
110
|
-
readonly spotGeneration?: bigint;
|
|
111
|
-
readonly membershipEpoch?: bigint;
|
|
112
|
-
readonly ownerNodeGeneration?: bigint;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
97
|
export interface ZLinkSpotBoundSessionRuntime {
|
|
116
98
|
receiveRoutedBoundSession(
|
|
117
99
|
actorId: string,
|
|
@@ -140,10 +122,6 @@ export interface ZLinkSpotBoundSessionRuntime {
|
|
|
140
122
|
actorPacketTarget?: unknown,
|
|
141
123
|
signal?: AbortSignal
|
|
142
124
|
): Promise<void>;
|
|
143
|
-
rememberRemoteBoundSessionTarget(
|
|
144
|
-
actorId: string,
|
|
145
|
-
target: ZLinkRemoteBoundSessionTarget | undefined
|
|
146
|
-
): void;
|
|
147
125
|
resolveRemoteBoundSessionTarget(
|
|
148
126
|
sourceNodeRid: RoutingId,
|
|
149
127
|
sourceSessionRid: RoutingId
|
|
@@ -108,7 +108,7 @@ export class ZLinkSpotSerialExecutor {
|
|
|
108
108
|
*/
|
|
109
109
|
close(): Promise<void> {
|
|
110
110
|
const children = this.closeChildren();
|
|
111
|
-
return Promise.all([children, this.spotSerial.
|
|
111
|
+
return Promise.all([children, this.spotSerial.whenIdle()]).then(() => undefined);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/**
|
|
@@ -124,7 +124,7 @@ export class ZLinkSpotSerialExecutor {
|
|
|
124
124
|
this.timerSerials.clear();
|
|
125
125
|
this.actorExecutors.clear();
|
|
126
126
|
this.closePromise = Promise.all([
|
|
127
|
-
...childSerials.map((serial) => serial.
|
|
127
|
+
...childSerials.map((serial) => serial.whenIdle()),
|
|
128
128
|
...actorExecutors.map((executor) => executor.close())
|
|
129
129
|
]).then(() => undefined);
|
|
130
130
|
return this.closePromise;
|