@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
|
@@ -80,8 +80,8 @@ export interface ZLinkBackendMeshNode {
|
|
|
80
80
|
readonly stableType: string;
|
|
81
81
|
readonly descriptorVersion: string;
|
|
82
82
|
}, parts: ZLinkBackendMessageLike | readonly ZLinkBackendMessageLike[], deadlineUnixMs: bigint, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>): MeshOperationId;
|
|
83
|
-
sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string
|
|
84
|
-
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string
|
|
83
|
+
sendToInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): Promise<SubmitResult>;
|
|
84
|
+
requestInstanceSpot(route: ServiceInstanceRouteFence, parts: MessageLike | readonly MessageLike[], timeoutMs?: number, sourceSpotId?: string, metadata?: ReadonlyMap<string, string>, instanceIntent?: boolean): MeshOperationId;
|
|
85
85
|
registerUserSpotOperationHandler(handler: ServiceUserSpotOperationHandler): void;
|
|
86
86
|
requestUserSpotCreate(targetNodeRid: string, request: Omit<ServiceUserSpotCreateRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
|
|
87
87
|
requestUserSpotClose(targetNodeRid: string, request: Omit<ServiceUserSpotCloseRecord, 'kind' | 'correlation' | 'operation'>, timeoutMs: number): Promise<ServiceUserSpotOperationResult>;
|
|
@@ -156,11 +156,12 @@ export interface ZLinkBackendMeshNode {
|
|
|
156
156
|
readonly stableType: string;
|
|
157
157
|
readonly objectGeneration: bigint;
|
|
158
158
|
} | undefined;
|
|
159
|
+
registerInstanceIntent?(instanceType: string, route: import('../../foundation/service-stateful-wire-codec').ServiceInstanceRouteFence, expectedCurrentRoute?: import('../../foundation/service-stateful-wire-codec').ServiceInstanceRouteFence | null): void;
|
|
159
160
|
waitForInstanceApplicationQuiescence?(spotId: string, signal?: AbortSignal): Promise<void>;
|
|
160
161
|
restoreUserSpotAuthority?(spotId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint): ServiceSpot;
|
|
161
162
|
restoreSpotAuthority?(spotId: string, objectKind: 'user_spot' | 'instance_spot', stableType: string, generation: bigint, authorityOwnerGeneration: bigint): ServiceSpot;
|
|
162
163
|
createActor(actorId: string, parts?: MessageLike | readonly MessageLike[]): ZLinkBackendActorRef;
|
|
163
|
-
restoreActorAuthority?(actorId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint, spotId: string, spotGeneration: bigint, membershipEpoch: bigint): ZLinkBackendActorRef;
|
|
164
|
+
restoreActorAuthority?(actorId: string, stableType: string, generation: bigint, authorityOwnerGeneration: bigint, spotId: string | undefined, spotGeneration: bigint, membershipEpoch: bigint): ZLinkBackendActorRef;
|
|
164
165
|
discardRelocatedActor?(actor: ZLinkBackendActorRef): void;
|
|
165
166
|
restoreActorSessionBinding?(actor: ZLinkBackendActorRef, sessionNodeRid: unknown, sessionRid: unknown, bindingGeneration: bigint): void;
|
|
166
167
|
actorLookup(actorId: string): {
|
|
@@ -248,24 +249,6 @@ export interface ZLinkBackendActorRecvInfo {
|
|
|
248
249
|
readonly requestId: bigint;
|
|
249
250
|
readonly flags: number;
|
|
250
251
|
}
|
|
251
|
-
export interface ZLinkBackendActorJoinInfo {
|
|
252
|
-
readonly sourceActor: ZLinkBackendActorRef;
|
|
253
|
-
readonly targetActor: ZLinkBackendActorRef;
|
|
254
|
-
readonly sourceNodeRid: RoutingId;
|
|
255
|
-
readonly sourceSpotId: RoutingId;
|
|
256
|
-
readonly targetNodeRid: RoutingId;
|
|
257
|
-
readonly targetSpotId: RoutingId;
|
|
258
|
-
readonly joinEpoch: bigint;
|
|
259
|
-
readonly flags: number;
|
|
260
|
-
}
|
|
261
|
-
export interface ZLinkBackendActorJoinRequest {
|
|
262
|
-
readonly info: ZLinkBackendActorJoinInfo;
|
|
263
|
-
readonly message: Message;
|
|
264
|
-
}
|
|
265
|
-
export interface ZLinkBackendActorJoinReplyOperation {
|
|
266
|
-
message(message: Message): ZLinkBackendActorJoinReplyOperation;
|
|
267
|
-
submit(): void;
|
|
268
|
-
}
|
|
269
252
|
export interface ZLinkBackendSpotDispatchInfo {
|
|
270
253
|
readonly event: ZLinkBackendSpotDispatchEvent;
|
|
271
254
|
readonly subjectKind?: number;
|
|
@@ -274,6 +257,7 @@ export interface ZLinkBackendSpotDispatchInfo {
|
|
|
274
257
|
}
|
|
275
258
|
export interface ZLinkBackendSocketMonitorEvent {
|
|
276
259
|
readonly nativeEvent: MonitorEventType;
|
|
260
|
+
readonly readyEdge: boolean;
|
|
277
261
|
readonly routingId?: unknown;
|
|
278
262
|
readonly localAddr: string;
|
|
279
263
|
readonly remoteAddr: string;
|
|
@@ -348,6 +332,7 @@ export interface ZLinkBackendRouterSocket extends ZLinkBackendConnectableSocket
|
|
|
348
332
|
reply(routingId: RoutingId, replyToken: unknown, message: Message | readonly Message[]): void;
|
|
349
333
|
}
|
|
350
334
|
export interface ZLinkBackendPublisherSocket extends ZLinkBackendSocket {
|
|
335
|
+
sendTimeoutMs: number;
|
|
351
336
|
sendHighWaterMark: number;
|
|
352
337
|
noDrop: boolean;
|
|
353
338
|
publish(topic: string, message: Message | readonly Message[]): void;
|
|
@@ -446,8 +431,6 @@ export interface ZLinkBackendSpot extends ZLinkBackendObject {
|
|
|
446
431
|
publish(topic: string, payload: Message | readonly Message[], flags: ZLinkBackendSendFlags): boolean;
|
|
447
432
|
sendToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[]): Promise<void>;
|
|
448
433
|
requestToSpot(targetRid: RoutingId, spotId: RoutingId, payload: Message | readonly Message[], timeoutMs?: number): Promise<readonly Message[]>;
|
|
449
|
-
recvActorJoin(flags: ZLinkBackendRecvFlags): ZLinkBackendActorJoinRequest | null;
|
|
450
|
-
replyActorJoin(request: ZLinkBackendActorJoinRequest, joinResultCode: number): ZLinkBackendActorJoinReplyOperation;
|
|
451
434
|
dispose(): Promise<void>;
|
|
452
435
|
}
|
|
453
436
|
export interface ZLinkChannelBackendAdapter {
|
|
@@ -1,29 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.meshActorSessionNodeAdapter = meshActorSessionNodeAdapter;
|
|
4
|
-
const runtime_values_1 = require("./runtime-values");
|
|
5
4
|
const submission_result_1 = require("../messaging/submission-result");
|
|
6
5
|
const mesh_completion_table_1 = require("./mesh-completion-table");
|
|
7
6
|
function meshActorSessionNodeAdapter(node, completions) {
|
|
8
7
|
return {
|
|
9
8
|
async sendActorBoundSession(actor, expectedBindingGeneration, parts, flags) {
|
|
10
9
|
const result = await node.sendActorBoundSession(actor, expectedBindingGeneration, parts, flags);
|
|
11
|
-
|
|
12
|
-
case runtime_values_1.SubmitResult.Ok:
|
|
13
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Submitted };
|
|
14
|
-
case runtime_values_1.SubmitResult.Backpressured:
|
|
15
|
-
case runtime_values_1.SubmitResult.NotAdmitted:
|
|
16
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Backpressured };
|
|
17
|
-
case runtime_values_1.SubmitResult.NotFound:
|
|
18
|
-
case runtime_values_1.SubmitResult.InvalidState:
|
|
19
|
-
return { status: submission_result_1.ZLinkSubmitStatus.TargetNotFound };
|
|
20
|
-
case runtime_values_1.SubmitResult.NotConnected:
|
|
21
|
-
return { status: submission_result_1.ZLinkSubmitStatus.RouteNotConnected };
|
|
22
|
-
case runtime_values_1.SubmitResult.Terminated:
|
|
23
|
-
return { status: submission_result_1.ZLinkSubmitStatus.Shutdown };
|
|
24
|
-
default:
|
|
25
|
-
throw new Error(`Actor bound-session send failed with result '${result}'.`);
|
|
26
|
-
}
|
|
10
|
+
return (0, submission_result_1.classifySubmitResult)(result, 'Actor bound-session send');
|
|
27
11
|
},
|
|
28
12
|
async closeActorBoundSession(actor, expectedBindingGeneration, timeoutMs, signal) {
|
|
29
13
|
if (completions === undefined) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { ApplicationJobQueuePort } from '../application-jobs/contracts';
|
|
1
2
|
import { type ReadyRecord, type ReceiveRecord } from '../foundation/service-runtime-contracts';
|
|
2
3
|
import type { ZLinkBackendMeshNode } from './contracts';
|
|
3
|
-
import type { ApplicationJobQueuePort } from '../application-jobs/contracts';
|
|
4
4
|
export interface ZLinkMeshDispatchPumpOptions {
|
|
5
5
|
readonly readyCapacity?: number;
|
|
6
6
|
readonly messageCapacity?: number;
|
|
@@ -23,7 +23,6 @@ export declare class ZLinkMeshDispatchPump {
|
|
|
23
23
|
private pendingDomains;
|
|
24
24
|
private infrastructureScheduled;
|
|
25
25
|
private disposed;
|
|
26
|
-
private infrastructureDrainPromise?;
|
|
27
26
|
private readonly activeDrains;
|
|
28
27
|
private readonly idleApplicationWorkers;
|
|
29
28
|
private applicationWorkerCount;
|
|
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZLinkMeshDispatchPump = void 0;
|
|
4
4
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
5
5
|
const node_os_1 = require("node:os");
|
|
6
|
-
const runtime_values_1 = require("./runtime-values");
|
|
7
|
-
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
8
|
-
const execution_1 = require("../execution");
|
|
9
6
|
const application_job_queue_scope_1 = require("../application-jobs/application-job-queue-scope");
|
|
7
|
+
const execution_1 = require("../execution");
|
|
8
|
+
const service_runtime_contracts_1 = require("../foundation/service-runtime-contracts");
|
|
9
|
+
const service_wire_binary_primitives_1 = require("../foundation/service-wire-binary-primitives");
|
|
10
|
+
const service_wire_constants_generated_1 = require("../foundation/service-wire-constants.generated");
|
|
11
|
+
const runtime_values_1 = require("./runtime-values");
|
|
12
|
+
const DEFAULT_MESH_READY_CAPACITY = 32;
|
|
13
|
+
const DEFAULT_MESH_PART_CAPACITY = 256;
|
|
10
14
|
const MESH_DISPATCH_YIELD_RECORDS = 16;
|
|
11
15
|
const MESH_DISPATCH_YIELD_INTERVAL_MS = 2;
|
|
12
16
|
const MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET = 4;
|
|
@@ -17,23 +21,12 @@ const MESH_DISPATCH_MAX_APPLICATION_WORKERS = Math.max(2, (0, node_os_1.availabl
|
|
|
17
21
|
// must enter like an independent receive-loop task, without inheriting that
|
|
18
22
|
// owner's AsyncLocalStorage identity.
|
|
19
23
|
const detachedMeshDispatchScope = node_async_hooks_1.AsyncLocalStorage.snapshot();
|
|
20
|
-
class ZLinkMeshDispatchFailure extends Error {
|
|
21
|
-
context;
|
|
22
|
-
dispatchCause;
|
|
23
|
-
constructor(context, dispatchCause) {
|
|
24
|
-
super('Mesh record dispatch failed.', { cause: dispatchCause });
|
|
25
|
-
this.context = context;
|
|
26
|
-
this.dispatchCause = dispatchCause;
|
|
27
|
-
this.name = 'ZLinkMeshDispatchFailure';
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
24
|
class ZLinkMeshDispatchPump {
|
|
31
25
|
node;
|
|
32
26
|
options;
|
|
33
27
|
pendingDomains = service_runtime_contracts_1.ReadyDomain.None;
|
|
34
28
|
infrastructureScheduled = false;
|
|
35
29
|
disposed = false;
|
|
36
|
-
infrastructureDrainPromise;
|
|
37
30
|
activeDrains = new Set();
|
|
38
31
|
idleApplicationWorkers = new Set();
|
|
39
32
|
applicationWorkerCount = 0;
|
|
@@ -119,7 +112,7 @@ class ZLinkMeshDispatchPump {
|
|
|
119
112
|
// A worker claims one owner at a time so a suspended handler cannot hold
|
|
120
113
|
// unrelated owners. Each owner may supply up to 64 pre-admitted records.
|
|
121
114
|
const readyBatch = this.node.createReadyBatch(1);
|
|
122
|
-
const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ??
|
|
115
|
+
const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? DEFAULT_MESH_PART_CAPACITY);
|
|
123
116
|
try {
|
|
124
117
|
for (;;) {
|
|
125
118
|
await this.waitForApplicationReady();
|
|
@@ -147,12 +140,8 @@ class ZLinkMeshDispatchPump {
|
|
|
147
140
|
}
|
|
148
141
|
return new Promise((resolve) => this.idleApplicationWorkers.add(resolve));
|
|
149
142
|
}
|
|
150
|
-
reportDispatchError(error) {
|
|
151
|
-
|
|
152
|
-
this.options.reportError?.(error.dispatchCause, error.context);
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
this.options.reportError?.(error);
|
|
143
|
+
reportDispatchError(error, context) {
|
|
144
|
+
this.options.reportError?.(error, context);
|
|
156
145
|
}
|
|
157
146
|
/**
|
|
158
147
|
* Infrastructure controls must not wait for an application permit. During
|
|
@@ -168,29 +157,18 @@ class ZLinkMeshDispatchPump {
|
|
|
168
157
|
this.infrastructureScheduled = true;
|
|
169
158
|
const drain = (startTurn ?? this.yieldIfNeeded() ?? Promise.resolve())
|
|
170
159
|
.then(() => detachedMeshDispatchScope(() => (0, execution_1.runZLinkExecutionArea)('infrastructure', () => this.drainInfrastructure())))
|
|
171
|
-
.catch((error) =>
|
|
172
|
-
if (error instanceof ZLinkMeshDispatchFailure) {
|
|
173
|
-
this.options.reportError?.(error.dispatchCause, error.context);
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
this.options.reportError?.(error);
|
|
177
|
-
});
|
|
160
|
+
.catch((error) => this.reportDispatchError(error));
|
|
178
161
|
this.activeDrains.add(drain);
|
|
179
|
-
this.infrastructureDrainPromise = drain;
|
|
180
162
|
void drain.finally(() => {
|
|
181
163
|
this.activeDrains.delete(drain);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
this.
|
|
185
|
-
if (!this.disposed && (this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
|
|
186
|
-
this.scheduleInfrastructure();
|
|
187
|
-
}
|
|
164
|
+
this.infrastructureScheduled = false;
|
|
165
|
+
if (!this.disposed && (this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
|
|
166
|
+
this.scheduleInfrastructure();
|
|
188
167
|
}
|
|
189
168
|
});
|
|
190
169
|
}
|
|
191
170
|
async drainInfrastructure() {
|
|
192
|
-
const readyBatch = this.node.createReadyBatch(Math.min(this.options.readyCapacity ??
|
|
193
|
-
const receiveBatch = this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? 256);
|
|
171
|
+
const readyBatch = this.node.createReadyBatch(Math.min(this.options.readyCapacity ?? DEFAULT_MESH_READY_CAPACITY, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET));
|
|
194
172
|
try {
|
|
195
173
|
while (!this.disposed) {
|
|
196
174
|
if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) === 0) {
|
|
@@ -200,7 +178,7 @@ class ZLinkMeshDispatchPump {
|
|
|
200
178
|
if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Application) !== 0) {
|
|
201
179
|
setImmediate(() => this.wakeApplicationWorker());
|
|
202
180
|
}
|
|
203
|
-
const lifecycleBudgetExhausted = await this.drainDomain(service_runtime_contracts_1.ReadyDomain.Infrastructure, readyBatch,
|
|
181
|
+
const lifecycleBudgetExhausted = await this.drainDomain(service_runtime_contracts_1.ReadyDomain.Infrastructure, readyBatch, undefined, MESH_DISPATCH_LIFECYCLE_CLAIM_BUDGET);
|
|
204
182
|
if (lifecycleBudgetExhausted) {
|
|
205
183
|
this.pendingDomains |= service_runtime_contracts_1.ReadyDomain.Infrastructure;
|
|
206
184
|
await yieldToEventLoop();
|
|
@@ -208,7 +186,6 @@ class ZLinkMeshDispatchPump {
|
|
|
208
186
|
}
|
|
209
187
|
}
|
|
210
188
|
finally {
|
|
211
|
-
receiveBatch.close();
|
|
212
189
|
readyBatch.close();
|
|
213
190
|
}
|
|
214
191
|
}
|
|
@@ -235,84 +212,92 @@ class ZLinkMeshDispatchPump {
|
|
|
235
212
|
const owner = drained.records[index];
|
|
236
213
|
// Raw ingress already attached one host permit to each record.
|
|
237
214
|
// A claim that reserves admission here may receive only that permit's record.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
receiveBatch.reset(capacity);
|
|
250
|
-
const received = claim.recvBatch(receiveBatch, runtime_values_1.ZLINK_BACKEND_RECV_DONT_WAIT);
|
|
251
|
-
if (!received.ok)
|
|
252
|
-
break;
|
|
253
|
-
// This owner keeps its claim while it drains. Other owners and
|
|
254
|
-
// infrastructure may progress if one of its handlers suspends.
|
|
255
|
-
if (domain === service_runtime_contracts_1.ReadyDomain.Infrastructure) {
|
|
256
|
-
this.infrastructureScheduled = false;
|
|
257
|
-
this.infrastructureDrainPromise = undefined;
|
|
258
|
-
if ((this.pendingDomains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0) {
|
|
259
|
-
this.scheduleInfrastructure();
|
|
260
|
-
}
|
|
261
|
-
}
|
|
215
|
+
const drainClaim = async () => {
|
|
216
|
+
let ownerReceiveBatch = receiveBatch;
|
|
217
|
+
try {
|
|
218
|
+
ownerReceiveBatch ??= this.node.createReceiveBatch(MESH_DISPATCH_RECEIVE_CAPACITY, this.options.partCapacity ?? DEFAULT_MESH_PART_CAPACITY);
|
|
219
|
+
const capacity = owner.ordinaryIngressPreAdmitted === true ? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
|
|
220
|
+
for (;;) {
|
|
221
|
+
let claimPermit = owner.terminalCompletion === true ||
|
|
222
|
+
owner.ordinaryIngressPreAdmitted === true ||
|
|
223
|
+
domain === service_runtime_contracts_1.ReadyDomain.Infrastructure
|
|
224
|
+
? undefined
|
|
225
|
+
: await this.acquirePermit();
|
|
262
226
|
try {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
227
|
+
if (this.capacityStop.signal.aborted)
|
|
228
|
+
return;
|
|
229
|
+
ownerReceiveBatch.reset(capacity);
|
|
230
|
+
const received = claim.recvBatch(ownerReceiveBatch, runtime_values_1.ZLINK_BACKEND_RECV_DONT_WAIT);
|
|
231
|
+
if (!received.ok)
|
|
232
|
+
break;
|
|
233
|
+
// This owner keeps its claim while it drains, so its records stay in FIFO order.
|
|
234
|
+
try {
|
|
235
|
+
for (const record of received.records) {
|
|
236
|
+
if (this.disposed)
|
|
237
|
+
break;
|
|
238
|
+
const permit = record.applicationJobPermit ?? claimPermit;
|
|
239
|
+
if (owner.ordinaryIngressPreAdmitted === true && permit === undefined) {
|
|
240
|
+
throw new Error('Pre-admitted raw ingress record lost its Application Job Queue permit.');
|
|
274
241
|
}
|
|
275
|
-
|
|
276
|
-
|
|
242
|
+
this.recordsSinceYield += 1;
|
|
243
|
+
const dispatch = async () => {
|
|
244
|
+
try {
|
|
245
|
+
await this.options.dispatch(owner, record);
|
|
246
|
+
await record.onTerminalCompletion?.();
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
this.reportDispatchError(error, meshDispatchFailureContext(record));
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
if (permit === undefined) {
|
|
253
|
+
await dispatch();
|
|
277
254
|
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
255
|
+
else {
|
|
256
|
+
if (domain === service_runtime_contracts_1.ReadyDomain.Application &&
|
|
257
|
+
record.applicationJobPermit === undefined)
|
|
258
|
+
permit.markApplicationQueued();
|
|
259
|
+
// The scope now owns this reservation, including failure
|
|
260
|
+
// and detached handler handoff. Only unused permits remain
|
|
261
|
+
// owned by the receive attempt's finally block.
|
|
262
|
+
if (permit === claimPermit)
|
|
263
|
+
claimPermit = undefined;
|
|
264
|
+
await (0, application_job_queue_scope_1.runWithApplicationJobPermit)(permit, dispatch);
|
|
265
|
+
}
|
|
266
|
+
const yieldTurn = this.yieldIfNeeded();
|
|
267
|
+
if (yieldTurn !== undefined)
|
|
268
|
+
await yieldTurn;
|
|
282
269
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
claimPermit = undefined;
|
|
292
|
-
await (0, application_job_queue_scope_1.runWithApplicationJobPermit)(permit, dispatch);
|
|
270
|
+
}
|
|
271
|
+
finally {
|
|
272
|
+
// Batch ownership includes records whose dispatch never began,
|
|
273
|
+
// including on failure or shutdown in the middle of the batch.
|
|
274
|
+
for (const record of received.records) {
|
|
275
|
+
for (const part of record.parts)
|
|
276
|
+
part.close();
|
|
277
|
+
record.releaseRetainedIngress?.();
|
|
293
278
|
}
|
|
294
|
-
const yieldTurn = this.yieldIfNeeded();
|
|
295
|
-
if (yieldTurn !== undefined)
|
|
296
|
-
await yieldTurn;
|
|
297
279
|
}
|
|
298
280
|
}
|
|
299
281
|
finally {
|
|
300
|
-
|
|
301
|
-
// including on failure or shutdown in the middle of the batch.
|
|
302
|
-
for (const record of received.records) {
|
|
303
|
-
for (const part of record.parts)
|
|
304
|
-
part.close();
|
|
305
|
-
record.releaseRetainedIngress?.();
|
|
306
|
-
}
|
|
282
|
+
claimPermit?.releaseAfterInternalProcessing();
|
|
307
283
|
}
|
|
308
284
|
}
|
|
309
|
-
finally {
|
|
310
|
-
claimPermit?.releaseAfterInternalProcessing();
|
|
311
|
-
}
|
|
312
285
|
}
|
|
286
|
+
finally {
|
|
287
|
+
claim.release();
|
|
288
|
+
if (receiveBatch === undefined)
|
|
289
|
+
ownerReceiveBatch?.close();
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
// An application worker drains the one owner it claimed. Infrastructure owners
|
|
293
|
+
// drain independently, so a suspended owner does not hold the other claims.
|
|
294
|
+
if (receiveBatch !== undefined) {
|
|
295
|
+
await drainClaim();
|
|
313
296
|
}
|
|
314
|
-
|
|
315
|
-
|
|
297
|
+
else {
|
|
298
|
+
const drain = drainClaim().catch((error) => this.reportDispatchError(error));
|
|
299
|
+
this.activeDrains.add(drain);
|
|
300
|
+
void drain.finally(() => this.activeDrains.delete(drain));
|
|
316
301
|
}
|
|
317
302
|
}
|
|
318
303
|
if (claimBudget !== undefined && claimsDrained >= claimBudget) {
|
|
@@ -373,8 +358,11 @@ function serviceWireCommand(record) {
|
|
|
373
358
|
if (record.parts.length !== 1)
|
|
374
359
|
return undefined;
|
|
375
360
|
const bytes = record.parts[0].data();
|
|
376
|
-
return bytes.byteLength >=
|
|
377
|
-
|
|
361
|
+
return bytes.byteLength >= service_wire_binary_primitives_1.SERVICE_WIRE_PREFIX_SIZE &&
|
|
362
|
+
bytes[0] === service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[0] &&
|
|
363
|
+
bytes[1] === service_wire_constants_generated_1.SERVICE_WIRE_MAGIC[1] &&
|
|
364
|
+
bytes[service_wire_binary_primitives_1.SERVICE_WIRE_MAJOR_OFFSET] === service_wire_constants_generated_1.SERVICE_WIRE_MAJOR
|
|
365
|
+
? bytes[service_wire_binary_primitives_1.SERVICE_WIRE_COMMAND_OFFSET]
|
|
378
366
|
: undefined;
|
|
379
367
|
}
|
|
380
368
|
function yieldToEventLoop() {
|
|
@@ -50,6 +50,6 @@ export declare function closeBindingHandle(target: {
|
|
|
50
50
|
export declare function isContextTerminatedError(error: unknown): boolean;
|
|
51
51
|
export declare function disableSocketLinger(target: unknown): void;
|
|
52
52
|
export declare function toNativeRoutingId(routingId: unknown): unknown;
|
|
53
|
-
export declare function translateBindingResultError(error: unknown): unknown;
|
|
53
|
+
export declare function translateBindingResultError(error: unknown, phase?: 'submit' | 'completion'): unknown;
|
|
54
54
|
export declare function toNativeActorRef(actor: unknown): unknown;
|
|
55
55
|
export {};
|
|
@@ -14,12 +14,14 @@ exports.disableSocketLinger = disableSocketLinger;
|
|
|
14
14
|
exports.toNativeRoutingId = toNativeRoutingId;
|
|
15
15
|
exports.translateBindingResultError = translateBindingResultError;
|
|
16
16
|
exports.toNativeActorRef = toNativeActorRef;
|
|
17
|
+
const node_os_1 = require("node:os");
|
|
18
|
+
const submission_result_1 = require("../../messaging/submission-result");
|
|
17
19
|
const node_backend_adapter_1 = require("../node-backend-adapter");
|
|
18
20
|
const runtime_values_1 = require("../runtime-values");
|
|
19
|
-
const
|
|
21
|
+
const nativeErrnoValues = node_os_1.constants.errno;
|
|
20
22
|
exports.zlink = (0, node_backend_adapter_1.loadBinding)();
|
|
21
23
|
function isBindingNotFound(error) {
|
|
22
|
-
return error instanceof exports.zlink.
|
|
24
|
+
return error instanceof exports.zlink.ConnectError && error.result === exports.zlink.ConnectResult.NotFound;
|
|
23
25
|
}
|
|
24
26
|
function isNonBlockingRecvEmpty(error) {
|
|
25
27
|
return error instanceof exports.zlink.RecvError && error.result === exports.zlink.RecvResult.NoData;
|
|
@@ -32,7 +34,8 @@ function isRouteRecvRetryable(error) {
|
|
|
32
34
|
isNativeBadAddress(error)));
|
|
33
35
|
}
|
|
34
36
|
function isNativeBadAddress(error) {
|
|
35
|
-
return error.nativeErrno ===
|
|
37
|
+
return (error.nativeErrno === nativeErrnoValues.EFAULT ||
|
|
38
|
+
/Bad address/i.test(String(error.message ?? '')));
|
|
36
39
|
}
|
|
37
40
|
function submitBindingPublish(operation, payload) {
|
|
38
41
|
try {
|
|
@@ -139,7 +142,11 @@ function isSuccessfulOrAlreadyShutdownCloseError(error) {
|
|
|
139
142
|
return (isContextTerminatedError(error) ||
|
|
140
143
|
(error instanceof Error &&
|
|
141
144
|
'code' in error &&
|
|
142
|
-
[
|
|
145
|
+
[
|
|
146
|
+
exports.zlink.CloseResult.Ok,
|
|
147
|
+
exports.zlink.CloseResult.Shutdown,
|
|
148
|
+
exports.zlink.CloseResult.InvalidHandle
|
|
149
|
+
].includes(error.code)));
|
|
143
150
|
}
|
|
144
151
|
function isContextTerminatedError(error) {
|
|
145
152
|
return error instanceof Error && /context was terminated/i.test(error.message);
|
|
@@ -182,9 +189,12 @@ function toNativeMessageLike(message) {
|
|
|
182
189
|
}
|
|
183
190
|
return message;
|
|
184
191
|
}
|
|
185
|
-
function translateBindingResultError(error) {
|
|
192
|
+
function translateBindingResultError(error, phase = 'completion') {
|
|
186
193
|
if (error instanceof exports.zlink.SubmitError) {
|
|
187
|
-
return new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
194
|
+
return new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, {
|
|
195
|
+
cause: error,
|
|
196
|
+
phase
|
|
197
|
+
});
|
|
188
198
|
}
|
|
189
199
|
if (error instanceof exports.zlink.RequestError) {
|
|
190
200
|
return new runtime_values_1.ZLinkBackendResultError('request', error.result, error.nativeErrno, {
|
|
@@ -9,8 +9,8 @@ export declare class ZLinkNodeEventLoopPoller {
|
|
|
9
9
|
private readonly events;
|
|
10
10
|
private readableHandler;
|
|
11
11
|
private disposed;
|
|
12
|
-
constructor(socket: Socket, pollCompletion: boolean, readableHandler: () => void, pollRoute?: boolean);
|
|
13
|
-
setReadableHandler(handler: () => void): void;
|
|
12
|
+
constructor(socket: Socket, pollCompletion: boolean, readableHandler: (receiveReady: boolean, routeReady: boolean) => void, pollRoute?: boolean);
|
|
13
|
+
setReadableHandler(handler: (receiveReady: boolean, routeReady: boolean) => void): void;
|
|
14
14
|
dispose(): void;
|
|
15
15
|
private readonly onReady;
|
|
16
16
|
}
|
|
@@ -37,19 +37,18 @@ class ZLinkNodeEventLoopPoller {
|
|
|
37
37
|
dispose() {
|
|
38
38
|
if (this.disposed)
|
|
39
39
|
return;
|
|
40
|
-
this.disposed = true;
|
|
41
|
-
this.events.close();
|
|
42
40
|
this.poller.close();
|
|
41
|
+
this.events.close();
|
|
42
|
+
this.disposed = true;
|
|
43
43
|
}
|
|
44
44
|
onReady = () => {
|
|
45
45
|
if (this.disposed)
|
|
46
46
|
return;
|
|
47
47
|
const ready = this.poller.wait(this.events, 0);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this.readableHandler();
|
|
52
|
-
}
|
|
48
|
+
const receiveReady = ready === 0 || this.events.hasEvent(0, node_backend_adapter_support_1.zlink.PollEventFlag.PollIn);
|
|
49
|
+
const routeReady = ready > 0 && this.events.hasEvent(0, node_backend_adapter_support_1.zlink.PollEventFlag.PollRoute);
|
|
50
|
+
if (receiveReady || routeReady)
|
|
51
|
+
this.readableHandler(receiveReady, routeReady);
|
|
53
52
|
};
|
|
54
53
|
}
|
|
55
54
|
exports.ZLinkNodeEventLoopPoller = ZLinkNodeEventLoopPoller;
|
|
@@ -30,6 +30,7 @@ function wrapMonitorSocket(nativeInstance) {
|
|
|
30
30
|
function toBackendMonitorEvent(event) {
|
|
31
31
|
return {
|
|
32
32
|
nativeEvent: event.event,
|
|
33
|
+
readyEdge: (event.flags & node_backend_adapter_support_1.zlink.MonitorEventFlag.ConnectionReadyEdge) !== 0,
|
|
33
34
|
routingId: event.routingId ?? undefined,
|
|
34
35
|
localAddr: event.localAddr,
|
|
35
36
|
remoteAddr: event.remoteAddr,
|