@zlink-systems/framework 0.21.0 → 0.23.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/ZLinkMessage.js +5 -5
- package/dist/contracts/Configuration/CodecContentType.js +5 -7
- package/dist/contracts/Configuration/DiagnosticsValidation.js +1 -6
- package/dist/contracts/Configuration/EndpointNotation.js +4 -8
- package/dist/contracts/Configuration/Registration.js +14 -11
- package/dist/contracts/Configuration/RegistrationBuilders.js +32 -25
- package/dist/contracts/Configuration/RegistrationNormalizers.js +25 -26
- package/dist/contracts/Configuration/RegistrationValidators.js +36 -38
- package/dist/contracts/Configuration/SendTimeoutValidation.js +4 -4
- package/dist/contracts/Configuration/TimerRegistrationValidator.js +7 -7
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -0
- package/dist/contracts/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- package/dist/contracts/Streams/IZLinkSession.d.ts +2 -1
- package/dist/location-store-integration.js +16 -16
- package/dist/nest-integration.js +17 -11
- package/dist/runtime/abort.js +9 -5
- package/dist/runtime/actors/actor-authority-payload-codec.js +12 -16
- package/dist/runtime/actors/actor-authority-publication.js +18 -17
- package/dist/runtime/actors/actor-client.js +83 -63
- package/dist/runtime/actors/actor-context.js +28 -22
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- package/dist/runtime/actors/actor-join-deferred-scope.d.ts +0 -1
- package/dist/runtime/actors/actor-join-deferred-scope.js +0 -18
- package/dist/runtime/actors/actor-local-native-join.js +18 -19
- package/dist/runtime/actors/actor-mailbox.js +1 -1
- package/dist/runtime/actors/actor-message-follow-context.js +24 -21
- package/dist/runtime/actors/actor-packet-relay-wire.js +1 -3
- package/dist/runtime/actors/actor-remote-joiner.js +20 -17
- package/dist/runtime/actors/actor-remote-wire.js +6 -7
- package/dist/runtime/actors/actor-runtime-state.js +87 -81
- package/dist/runtime/actors/actor-transfer-registry.js +3 -5
- package/dist/runtime/actors/bound-session-wire.js +14 -9
- package/dist/runtime/actors/deferred-join-accepted-journal.js +160 -130
- package/dist/runtime/actors/index.js +2 -5
- package/dist/runtime/actors/post-commit-actor-binder.js +3 -6
- package/dist/runtime/actors/post-commit-actor-location.js +1 -1
- package/dist/runtime/actors/spot-actor-dispatch.js +5 -5
- package/dist/runtime/actors/transferred-actor-rollback.js +4 -4
- package/dist/runtime/admission.js +2 -6
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +2 -6
- package/dist/runtime/application-jobs/receive-flow-controller.js +11 -12
- package/dist/runtime/backend/contracts/index.d.ts +1 -0
- package/dist/runtime/backend/mesh-completion-table.js +1 -3
- package/dist/runtime/backend/mesh-dispatch-pump.js +12 -16
- package/dist/runtime/backend/node/node-backend-adapter-factory.js +1 -3
- package/dist/runtime/backend/node/node-backend-adapter-support.js +26 -17
- package/dist/runtime/backend/node/node-mesh-backend-adapter.js +4 -3
- package/dist/runtime/backend/node/node-raw-binding-port.js +7 -6
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +3 -0
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +134 -118
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +12 -13
- package/dist/runtime/backend/runtime-message.js +3 -3
- package/dist/runtime/backend/runtime-values.d.ts +2 -2
- package/dist/runtime/backend/runtime-values.js +4 -5
- package/dist/runtime/channels/channel-clients.js +27 -24
- package/dist/runtime/channels/channel-dispatch-pipeline.js +12 -20
- package/dist/runtime/channels/channel-dispatch-services.js +7 -4
- package/dist/runtime/channels/channel-dispatchers.js +9 -9
- package/dist/runtime/channels/channel-envelope-inspection.js +16 -13
- package/dist/runtime/channels/channel-envelope.js +83 -47
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-receive-loops.js +20 -22
- package/dist/runtime/channels/channel-receive-task-tracker.js +1 -1
- package/dist/runtime/channels/channel-runtime-lifecycle.js +61 -56
- package/dist/runtime/channels/channel-runtime-manager.js +18 -9
- package/dist/runtime/channels/channel-socket-registry.js +126 -123
- package/dist/runtime/channels/channel-transports.js +46 -42
- package/dist/runtime/channels/client-server-location-runtime.js +32 -40
- package/dist/runtime/channels/client-server-service-wire.js +29 -22
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -0
- package/dist/runtime/channels/dispatch-error-reporter.js +9 -39
- package/dist/runtime/channels/fanout-location-runtime.js +34 -47
- package/dist/runtime/channels/fanout-service-wire.js +3 -5
- package/dist/runtime/channels/local-spot-route-transport.js +7 -1
- package/dist/runtime/channels/route-member-snapshot.js +3 -3
- package/dist/runtime/channels/source-spot-router.js +6 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +5 -2
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +2 -2
- package/dist/runtime/channels/spot-route-target-resolver.js +6 -6
- package/dist/runtime/diagnostics/dispatch-error-details.d.ts +6 -0
- package/dist/runtime/diagnostics/dispatch-error-details.js +55 -0
- package/dist/runtime/diagnostics/flow-context.d.ts +2 -1
- package/dist/runtime/diagnostics/flow-context.js +2 -2
- package/dist/runtime/diagnostics/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +58 -42
- package/dist/runtime/diagnostics/runtime-metrics.js +18 -9
- package/dist/runtime/diagnostics/runtime-observation-queue.js +8 -10
- package/dist/runtime/diagnostics/topology-runtime-projections.js +17 -10
- package/dist/runtime/execution/index.js +7 -6
- package/dist/runtime/execution/serial-execution-queue.js +12 -18
- package/dist/runtime/execution/state-lane.js +2 -2
- package/dist/runtime/foundation/actor-join-recovery-codec.js +31 -27
- package/dist/runtime/foundation/event-loop-resources.js +4 -4
- package/dist/runtime/foundation/message-follow-suppression-registry.js +4 -4
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +4 -2
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +169 -144
- package/dist/runtime/foundation/route-mesh-connection-policy.js +4 -4
- package/dist/runtime/foundation/runtime-state-projections.js +22 -11
- package/dist/runtime/foundation/service-authority-payload-codec.js +13 -15
- package/dist/runtime/foundation/service-discovery-registry.js +35 -33
- package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +20 -22
- package/dist/runtime/foundation/service-liveness-registry.js +16 -12
- package/dist/runtime/foundation/service-maintenance-runtime.js +2 -4
- package/dist/runtime/foundation/service-relocation-aggregate-committer.js +24 -24
- package/dist/runtime/foundation/service-relocation-object-owner.js +6 -6
- package/dist/runtime/foundation/service-relocation-runtime.js +137 -94
- package/dist/runtime/foundation/service-runtime-contracts.js +5 -5
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +1 -0
- package/dist/runtime/foundation/service-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +4 -0
- package/dist/runtime/foundation/service-stateful-runtime.js +461 -439
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.d.ts +1 -0
- package/dist/runtime/foundation/service-topology-registry.js +105 -96
- package/dist/runtime/foundation/service-weighted-selection.js +6 -11
- package/dist/runtime/foundation/service-wire-binary-primitives.js +5 -6
- package/dist/runtime/foundation/service-wire-m6a-codec.js +46 -35
- package/dist/runtime/framework-errors-internal.js +7 -10
- package/dist/runtime/handlers/handler-instance-scope.js +4 -5
- package/dist/runtime/handlers/index.js +3 -1
- package/dist/runtime/host/actor-packet-relay.js +74 -70
- package/dist/runtime/host/actor-placement-coordinator.js +29 -31
- package/dist/runtime/host/actor-runtime-options-factory.js +12 -14
- package/dist/runtime/host/actor-transfer-authority-runtime.js +7 -9
- package/dist/runtime/host/actor-transfer-runtime.js +176 -153
- package/dist/runtime/host/application-job-queue.js +18 -22
- package/dist/runtime/host/bound-session-relay.js +3 -1
- package/dist/runtime/host/channel-runtime-options-factory.js +31 -14
- package/dist/runtime/host/host-capacity-status.js +8 -4
- package/dist/runtime/host/index.js +245 -228
- package/dist/runtime/host/instance-activation-authority.js +93 -96
- package/dist/runtime/host/location-runtime-owner.js +16 -14
- package/dist/runtime/host/mesh-router-resolver.js +11 -13
- package/dist/runtime/host/relocation-direct-transfer.js +10 -9
- package/dist/runtime/host/remote-actor-join-receiver.js +20 -15
- package/dist/runtime/host/remote-actor-packet-target-store.js +18 -22
- package/dist/runtime/host/remote-bound-session-relay.js +97 -73
- package/dist/runtime/host/route-mesh-runtime.js +64 -69
- package/dist/runtime/host/runtime-shutdown.js +1 -2
- package/dist/runtime/host/service-relocation-host-runtime.js +586 -511
- package/dist/runtime/host/spot-address-transport.js +69 -71
- package/dist/runtime/host/spot-runtime-options-factory.js +30 -29
- package/dist/runtime/host/stateful-authority-route-runtime.js +65 -68
- package/dist/runtime/host/user-spot-creation-coordinator.js +61 -67
- package/dist/runtime/locations/actor-location-claims.js +26 -20
- package/dist/runtime/locations/aggregate-inventory-store.js +72 -75
- package/dist/runtime/locations/authority-key-codec.js +7 -7
- package/dist/runtime/locations/auto-connect-loop.js +3 -3
- package/dist/runtime/locations/auto-connect-planner.js +25 -19
- package/dist/runtime/locations/auto-connect-reconciler.js +51 -31
- package/dist/runtime/locations/in-memory-authority-store.js +128 -118
- package/dist/runtime/locations/in-memory-location-store.js +195 -168
- package/dist/runtime/locations/in-memory-provider-location-store.js +8 -10
- package/dist/runtime/locations/key-codec.js +1 -1
- package/dist/runtime/locations/lease-tracker.js +23 -21
- package/dist/runtime/locations/lifecycle.js +4 -5
- package/dist/runtime/locations/location-store-repository.js +368 -324
- package/dist/runtime/locations/opaque-record-key.js +2 -2
- package/dist/runtime/locations/resolvers.js +73 -82
- package/dist/runtime/locations/runtime.js +68 -63
- package/dist/runtime/locations/spot-location-claims.js +39 -35
- package/dist/runtime/messaging/framework-json-v1.js +7 -7
- package/dist/runtime/messaging/packet-name.js +7 -6
- package/dist/runtime/messaging/payload-codec.js +21 -18
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +30 -2
- package/dist/runtime/protocol/service_wire_codec.generated.js +1671 -234
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +20 -18
- package/dist/runtime/routing-id.js +3 -5
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +35 -31
- package/dist/runtime/spots/formal-remote-actor-transfer-registry.js +1 -2
- package/dist/runtime/spots/index.js +209 -220
- package/dist/runtime/spots/spot-activation-registry.js +15 -14
- package/dist/runtime/spots/spot-activation-state.js +17 -15
- package/dist/runtime/spots/spot-activation.js +33 -16
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +18 -15
- package/dist/runtime/spots/spot-actor-membership.js +1 -3
- package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +2 -1
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +29 -21
- package/dist/runtime/spots/spot-actor-packet-drain.js +14 -10
- package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +10 -6
- package/dist/runtime/spots/spot-closing.js +3 -7
- package/dist/runtime/spots/spot-context.js +2 -2
- package/dist/runtime/spots/spot-entry-activation.js +13 -14
- package/dist/runtime/spots/spot-handle.js +6 -3
- package/dist/runtime/spots/spot-handler-registry.js +12 -12
- package/dist/runtime/spots/spot-manager-public.js +5 -6
- package/dist/runtime/spots/spot-native-actor-join-admission.js +4 -3
- package/dist/runtime/spots/spot-node-autoconnect.js +15 -18
- package/dist/runtime/spots/spot-node-runtime-manager.js +79 -86
- package/dist/runtime/spots/spot-outbound.js +10 -14
- package/dist/runtime/spots/spot-remote-codec.js +22 -26
- package/dist/runtime/spots/spot-remote-route-codec.js +5 -7
- package/dist/runtime/spots/spot-route-packet-dispatch.js +17 -15
- package/dist/runtime/spots/spot-route-replies.js +4 -6
- package/dist/runtime/spots/spot-routed-actor-admission.js +9 -7
- package/dist/runtime/spots/spot-routed-bound-session-dispatch.js +2 -3
- package/dist/runtime/spots/spot-routed-frame-dispatch.js +5 -5
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +14 -10
- package/dist/runtime/spots/spot-serial-executor.js +5 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +4 -6
- package/dist/runtime/spots/spot-subscription-dispatch.js +6 -6
- package/dist/runtime/spots/spot-timer.js +26 -30
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +21 -8
- package/dist/runtime/streams/actor-session-binding-registry.js +168 -148
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -0
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +20 -17
- package/dist/runtime/streams/bound-session-response-target.js +8 -1
- package/dist/runtime/streams/bound-session-service.d.ts +1 -0
- package/dist/runtime/streams/bound-session-service.js +14 -12
- package/dist/runtime/streams/index.js +28 -20
- package/dist/runtime/streams/managed-stream.d.ts +3 -0
- package/dist/runtime/streams/managed-stream.js +52 -31
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.d.ts +5 -1
- package/dist/runtime/streams/protocol.js +68 -20
- package/dist/runtime/streams/session-actor-coordinator.js +37 -41
- package/dist/runtime/streams/session-context.d.ts +9 -2
- package/dist/runtime/streams/session-context.js +50 -32
- package/dist/runtime/streams/session-local-actors.d.ts +3 -1
- package/dist/runtime/streams/session-local-actors.js +17 -2
- package/dist/runtime/streams/session-provider.js +2 -2
- package/dist/runtime/streams/session-serial-executor.js +1 -2
- package/dist/runtime/streams/stream-frame-factory.d.ts +1 -1
- package/dist/runtime/streams/stream-frame-factory.js +14 -7
- package/dist/runtime/streams/stream-session-runtime.js +112 -78
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +3 -3
- package/src/contracts/Channels/RouteCalls.ts +6 -1
- package/src/contracts/Common/ZLinkMessage.ts +5 -5
- package/src/contracts/Common/ZLinkMessageMetadata.ts +4 -3
- package/src/contracts/Configuration/Builders.ts +14 -14
- package/src/contracts/Configuration/CodecContentType.ts +8 -10
- package/src/contracts/Configuration/DiagnosticsValidation.ts +1 -6
- package/src/contracts/Configuration/EndpointNotation.ts +11 -11
- package/src/contracts/Configuration/ObjectRoles.ts +1 -3
- package/src/contracts/Configuration/Registration.ts +46 -17
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +10 -8
- package/src/contracts/Configuration/RegistrationBuilders.ts +107 -96
- package/src/contracts/Configuration/RegistrationCodecRegistry.ts +9 -3
- package/src/contracts/Configuration/RegistrationNormalizers.ts +116 -84
- package/src/contracts/Configuration/RegistrationTypes.ts +21 -25
- package/src/contracts/Configuration/RegistrationValidators.ts +122 -73
- package/src/contracts/Configuration/RouteChannelInternalState.ts +1 -4
- package/src/contracts/Configuration/RuntimeEndpointConnections.ts +4 -1
- package/src/contracts/Configuration/SendTimeoutValidation.ts +6 -4
- package/src/contracts/Configuration/TimerRegistrationValidator.ts +8 -13
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -6
- package/src/contracts/Errors/index.ts +1 -4
- package/src/contracts/Handlers/Attributes.ts +15 -9
- package/src/contracts/Handlers/IZLinkChannelHandlers.ts +24 -4
- package/src/contracts/Handlers/JsonContract.ts +53 -19
- package/src/contracts/Locations/ActorTransfer.ts +1 -5
- package/src/contracts/Locations/Authority.ts +4 -11
- package/src/contracts/Locations/Keys.ts +6 -1
- package/src/contracts/Locations/Options.ts +3 -2
- package/src/contracts/Locations/RelocationStore.ts +1 -4
- package/src/contracts/Locations/Resolvers.ts +5 -5
- package/src/contracts/Locations/RuntimeQuery.ts +6 -2
- package/src/contracts/Locations/Stores.ts +1 -2
- package/src/contracts/Locations/index.ts +2 -8
- package/src/contracts/RouteMesh/Contracts.ts +1 -7
- package/src/contracts/RouteMesh/RuntimeTopology.ts +1 -4
- package/src/contracts/Spots/Contracts.ts +2 -8
- package/src/contracts/Spots/SpotKind.ts +16 -8
- package/src/contracts/Spots/ZLinkSpot.ts +8 -11
- package/src/contracts/Streams/IZLinkSession.ts +2 -2
- package/src/contracts/Streams/IZLinkSessionActor.ts +5 -1
- package/src/contracts/Streams/IZLinkSessionPacketHandler.ts +5 -1
- package/src/internal.ts +5 -4
- package/src/location-store-integration.ts +24 -16
- package/src/nest-integration.ts +40 -25
- package/src/runtime/abort.ts +10 -4
- package/src/runtime/actors/actor-authority-payload-codec.ts +20 -29
- package/src/runtime/actors/actor-authority-publication.ts +92 -77
- package/src/runtime/actors/actor-client.ts +162 -133
- package/src/runtime/actors/actor-context.ts +142 -134
- package/src/runtime/actors/actor-creation.ts +47 -44
- package/src/runtime/actors/actor-execution-context.ts +6 -4
- package/src/runtime/actors/actor-handoff.ts +269 -293
- package/src/runtime/actors/actor-join-deferred-scope.ts +1 -32
- package/src/runtime/actors/actor-lifecycle-snapshot.ts +5 -8
- package/src/runtime/actors/actor-local-native-join.ts +131 -159
- package/src/runtime/actors/actor-mailbox.ts +16 -19
- package/src/runtime/actors/actor-message-follow-context.ts +46 -36
- package/src/runtime/actors/actor-packet-relay-wire.ts +32 -21
- package/src/runtime/actors/actor-remote-joiner.ts +50 -54
- package/src/runtime/actors/actor-remote-wire.ts +9 -13
- package/src/runtime/actors/actor-routed-join-transport.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -5
- package/src/runtime/actors/actor-runtime-state.ts +127 -124
- package/src/runtime/actors/actor-transfer-registry.ts +9 -14
- package/src/runtime/actors/actor-transport-delivery-gate.ts +4 -6
- package/src/runtime/actors/bound-session-wire.ts +37 -17
- package/src/runtime/actors/deferred-join-accepted-journal.ts +353 -326
- package/src/runtime/actors/index.ts +43 -86
- package/src/runtime/actors/post-commit-actor-binder.ts +10 -10
- package/src/runtime/actors/post-commit-actor-location.ts +30 -23
- package/src/runtime/actors/spot-actor-dispatch.ts +78 -53
- package/src/runtime/actors/transferred-actor-rollback.ts +18 -13
- package/src/runtime/admission.ts +9 -9
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +5 -15
- package/src/runtime/application-jobs/application-job-queue-handler-start-gate.ts +3 -2
- package/src/runtime/application-jobs/receive-flow-controller.ts +17 -14
- package/src/runtime/backend/contracts/index.ts +77 -52
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +4 -14
- package/src/runtime/backend/mesh-completion-table.ts +6 -9
- package/src/runtime/backend/mesh-dispatch-pump.ts +38 -30
- package/src/runtime/backend/node/node-backend-adapter-factory.ts +23 -21
- package/src/runtime/backend/node/node-backend-adapter-support.ts +36 -22
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +59 -58
- package/src/runtime/backend/node/node-event-loop-poller.ts +2 -10
- package/src/runtime/backend/node/node-mesh-backend-adapter.ts +12 -5
- package/src/runtime/backend/node/node-monitor-backend-adapter.ts +4 -3
- package/src/runtime/backend/node/node-raw-binding-port.ts +29 -29
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +370 -390
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +101 -54
- package/src/runtime/backend/runtime-message.ts +5 -3
- package/src/runtime/backend/runtime-values.ts +10 -7
- package/src/runtime/channels/channel-autoconnect.ts +1 -4
- package/src/runtime/channels/channel-clients.ts +93 -73
- package/src/runtime/channels/channel-dispatch-pipeline.ts +44 -44
- package/src/runtime/channels/channel-dispatch-services.ts +51 -49
- package/src/runtime/channels/channel-dispatchers.ts +152 -96
- package/src/runtime/channels/channel-envelope-inspection.ts +20 -16
- package/src/runtime/channels/channel-envelope.ts +256 -150
- package/src/runtime/channels/channel-multipart.ts +13 -5
- package/src/runtime/channels/channel-outbound-operations.ts +37 -41
- package/src/runtime/channels/channel-receive-loops.ts +102 -98
- package/src/runtime/channels/channel-receive-task-tracker.ts +1 -1
- package/src/runtime/channels/channel-runtime-lifecycle.ts +248 -190
- package/src/runtime/channels/channel-runtime-manager.ts +63 -37
- package/src/runtime/channels/channel-socket-options.ts +3 -10
- package/src/runtime/channels/channel-socket-registry.ts +331 -273
- package/src/runtime/channels/channel-transports.ts +218 -206
- package/src/runtime/channels/client-server-location-runtime.ts +116 -100
- package/src/runtime/channels/client-server-service-wire.ts +37 -36
- package/src/runtime/channels/dispatch-error-reporter.ts +12 -47
- package/src/runtime/channels/fanout-location-runtime.ts +91 -94
- package/src/runtime/channels/fanout-service-wire.ts +5 -12
- package/src/runtime/channels/handler-filter-scope.ts +1 -4
- package/src/runtime/channels/index.ts +1 -4
- package/src/runtime/channels/local-spot-route-transport.ts +20 -5
- package/src/runtime/channels/route-member-snapshot.ts +11 -5
- package/src/runtime/channels/router-socket-spot-route-transport.ts +1 -7
- package/src/runtime/channels/source-spot-router.ts +26 -22
- package/src/runtime/channels/spot-direct-envelope.ts +10 -8
- package/src/runtime/channels/spot-node-route-transport.ts +13 -16
- package/src/runtime/channels/spot-route-bridge-transport.ts +26 -9
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +40 -13
- package/src/runtime/channels/spot-route-target-resolver.ts +18 -9
- package/src/runtime/codecs/index.ts +3 -2
- package/src/runtime/diagnostics/dispatch-error-details.ts +62 -0
- package/src/runtime/diagnostics/flow-context.ts +18 -7
- package/src/runtime/diagnostics/index.ts +96 -61
- package/src/runtime/diagnostics/internal-event-contracts.ts +87 -33
- package/src/runtime/diagnostics/message-flow.ts +107 -79
- package/src/runtime/diagnostics/runtime-metrics.ts +46 -24
- package/src/runtime/diagnostics/runtime-observation-queue.ts +17 -28
- package/src/runtime/diagnostics/topology-runtime-projections.ts +62 -43
- package/src/runtime/execution/index.ts +18 -26
- package/src/runtime/execution/serial-execution-queue.ts +31 -40
- package/src/runtime/execution/state-lane.ts +2 -2
- package/src/runtime/foundation/actor-join-recovery-codec.ts +69 -55
- package/src/runtime/foundation/event-loop-resources.ts +8 -4
- package/src/runtime/foundation/message-follow-suppression-registry.ts +7 -14
- package/src/runtime/foundation/operation-identity.ts +1 -2
- package/src/runtime/foundation/operation-registry.ts +8 -2
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +364 -396
- package/src/runtime/foundation/route-mesh-connection-policy.ts +7 -8
- package/src/runtime/foundation/runtime-state-projections.ts +24 -23
- package/src/runtime/foundation/service-authority-payload-codec.ts +54 -57
- package/src/runtime/foundation/service-discovery-registry.ts +67 -59
- package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +28 -29
- package/src/runtime/foundation/service-liveness-registry.ts +18 -13
- package/src/runtime/foundation/service-mailbox.ts +14 -14
- package/src/runtime/foundation/service-maintenance-runtime.ts +22 -21
- package/src/runtime/foundation/service-metadata-codec.ts +2 -9
- package/src/runtime/foundation/service-relocation-aggregate-committer.ts +39 -36
- package/src/runtime/foundation/service-relocation-coordinator.ts +1 -4
- package/src/runtime/foundation/service-relocation-object-owner.ts +40 -58
- package/src/runtime/foundation/service-relocation-runtime.ts +292 -216
- package/src/runtime/foundation/service-runtime-contracts.ts +8 -8
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1233 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +170 -159
- package/src/runtime/foundation/service-weighted-selection.ts +9 -15
- package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -12
- package/src/runtime/foundation/service-wire-m6a-codec.ts +69 -47
- package/src/runtime/framework-errors-internal.ts +31 -30
- package/src/runtime/handlers/handler-instance-scope.ts +18 -29
- package/src/runtime/handlers/index.ts +18 -8
- package/src/runtime/host/actor-packet-relay.ts +290 -261
- package/src/runtime/host/actor-placement-coordinator.ts +165 -150
- package/src/runtime/host/actor-runtime-options-factory.ts +89 -87
- package/src/runtime/host/actor-transfer-authority-runtime.ts +46 -38
- package/src/runtime/host/actor-transfer-runtime.ts +391 -395
- package/src/runtime/host/application-job-queue.ts +32 -48
- package/src/runtime/host/bound-session-relay.ts +7 -9
- package/src/runtime/host/channel-runtime-options-factory.ts +75 -35
- package/src/runtime/host/host-capacity-status.ts +10 -9
- package/src/runtime/host/index.ts +861 -789
- package/src/runtime/host/instance-activation-authority.ts +125 -143
- package/src/runtime/host/location-runtime-owner.ts +38 -26
- package/src/runtime/host/mesh-router-resolver.ts +30 -23
- package/src/runtime/host/relocation-direct-transfer.ts +15 -15
- package/src/runtime/host/relocation-integrity-fault-gate.ts +3 -2
- package/src/runtime/host/remote-actor-join-receiver.ts +43 -34
- package/src/runtime/host/remote-actor-packet-target-store.ts +54 -52
- package/src/runtime/host/remote-bound-session-relay.ts +274 -247
- package/src/runtime/host/route-mesh-runtime-options.ts +1 -3
- package/src/runtime/host/route-mesh-runtime.ts +227 -181
- package/src/runtime/host/runtime-shutdown.ts +4 -3
- package/src/runtime/host/service-relocation-control.ts +14 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1388 -1165
- package/src/runtime/host/spot-address-transport.ts +284 -237
- package/src/runtime/host/spot-node-runtime-options-factory.ts +14 -8
- package/src/runtime/host/spot-runtime-options-factory.ts +71 -62
- package/src/runtime/host/stateful-authority-route-runtime.ts +117 -116
- package/src/runtime/host/user-spot-creation-coordinator.ts +225 -220
- package/src/runtime/locations/actor-location-claims.ts +61 -49
- package/src/runtime/locations/actor-session-route-claims.ts +1 -4
- package/src/runtime/locations/aggregate-inventory-store.ts +105 -134
- package/src/runtime/locations/authority-key-codec.ts +13 -10
- package/src/runtime/locations/auto-connect-loop.ts +14 -11
- package/src/runtime/locations/auto-connect-planner.ts +42 -31
- package/src/runtime/locations/auto-connect-reconciler.ts +106 -63
- package/src/runtime/locations/canonical-codec.ts +3 -1
- package/src/runtime/locations/creation-operation-id.ts +4 -3
- package/src/runtime/locations/domain-store-contract.ts +13 -7
- package/src/runtime/locations/in-memory-authority-store.ts +232 -199
- package/src/runtime/locations/in-memory-location-store.ts +432 -250
- package/src/runtime/locations/in-memory-provider-location-store.ts +16 -17
- package/src/runtime/locations/internal-store-contracts.ts +95 -38
- package/src/runtime/locations/key-codec.ts +3 -4
- package/src/runtime/locations/lease-tracker.ts +36 -27
- package/src/runtime/locations/lifecycle-runtime.ts +15 -3
- package/src/runtime/locations/lifecycle.ts +33 -28
- package/src/runtime/locations/location-store-repository.ts +1329 -1185
- package/src/runtime/locations/opaque-record-key.ts +4 -9
- package/src/runtime/locations/resolvers.ts +201 -178
- package/src/runtime/locations/runtime.ts +251 -159
- package/src/runtime/locations/spot-location-claims.ts +110 -112
- package/src/runtime/messaging/creation-payload-codec.ts +4 -1
- package/src/runtime/messaging/framework-json-v1.ts +34 -15
- package/src/runtime/messaging/packet-name.ts +8 -6
- package/src/runtime/messaging/payload-codec.ts +70 -50
- package/src/runtime/messaging/submission-result.ts +6 -9
- package/src/runtime/protocol/service_wire_codec.generated.ts +1376 -159
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +19 -18
- package/src/runtime/routing-id.ts +10 -7
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +56 -62
- package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +23 -20
- package/src/runtime/spots/index.ts +595 -564
- package/src/runtime/spots/spot-activation-registry.ts +38 -34
- package/src/runtime/spots/spot-activation-state.ts +43 -51
- package/src/runtime/spots/spot-activation.ts +179 -116
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +110 -78
- package/src/runtime/spots/spot-actor-join-dispatch.ts +57 -41
- package/src/runtime/spots/spot-actor-lifecycle-drain.ts +5 -7
- package/src/runtime/spots/spot-actor-membership.ts +25 -27
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +196 -148
- package/src/runtime/spots/spot-actor-packet-drain.ts +56 -42
- package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +37 -39
- package/src/runtime/spots/spot-closing.ts +11 -12
- package/src/runtime/spots/spot-context.ts +46 -26
- package/src/runtime/spots/spot-entry-activation.ts +84 -65
- package/src/runtime/spots/spot-handle.ts +17 -15
- package/src/runtime/spots/spot-handler-registry.ts +44 -31
- package/src/runtime/spots/spot-location-claim.ts +5 -4
- package/src/runtime/spots/spot-manager-public.ts +62 -82
- package/src/runtime/spots/spot-native-actor-join-admission.ts +20 -16
- package/src/runtime/spots/spot-node-autoconnect.ts +54 -61
- package/src/runtime/spots/spot-node-runtime-manager.ts +235 -222
- package/src/runtime/spots/spot-outbound.ts +47 -59
- package/src/runtime/spots/spot-publisher-transport.ts +5 -4
- package/src/runtime/spots/spot-remote-codec.ts +66 -65
- package/src/runtime/spots/spot-remote-route-codec.ts +61 -41
- package/src/runtime/spots/spot-route-packet-dispatch.ts +129 -95
- package/src/runtime/spots/spot-route-replies.ts +23 -24
- package/src/runtime/spots/spot-route-reply-wire.ts +3 -2
- package/src/runtime/spots/spot-routed-actor-admission.ts +37 -27
- package/src/runtime/spots/spot-routed-bound-session-dispatch.ts +13 -18
- package/src/runtime/spots/spot-routed-frame-dispatch.ts +18 -15
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +35 -26
- package/src/runtime/spots/spot-routing-internal.ts +1 -4
- package/src/runtime/spots/spot-runtime-ports.ts +5 -5
- package/src/runtime/spots/spot-serial-executor.ts +5 -9
- package/src/runtime/spots/spot-serial-turn-executor.ts +19 -26
- package/src/runtime/spots/spot-subscription-dispatch.ts +58 -47
- package/src/runtime/spots/spot-timer.ts +103 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +421 -292
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +8 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +60 -50
- package/src/runtime/streams/bound-session-response-target.ts +39 -9
- package/src/runtime/streams/bound-session-service.ts +52 -42
- package/src/runtime/streams/index.ts +183 -100
- package/src/runtime/streams/managed-stream.ts +123 -90
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +115 -46
- package/src/runtime/streams/session-actor-coordinator.ts +109 -93
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +96 -51
- package/src/runtime/streams/session-local-actors.ts +19 -3
- package/src/runtime/streams/session-provider.ts +5 -7
- package/src/runtime/streams/session-serial-executor.ts +7 -6
- package/src/runtime/streams/stream-binding-runtime-ports.ts +79 -29
- package/src/runtime/streams/stream-frame-factory.ts +59 -40
- package/src/runtime/streams/stream-session-runtime.ts +317 -214
- package/src/runtime/workers/index.ts +68 -29
|
@@ -110,9 +110,7 @@ class ZLinkRuntimeAdmissionGate {
|
|
|
110
110
|
else if (this.accepts(meshName)) {
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
113
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(meshName === undefined
|
|
114
|
-
? this.firstSealedReason()
|
|
115
|
-
: this.requireState(meshName).sealedReason, `${operation} was rejected because framework admission is closed.`);
|
|
113
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(meshName === undefined ? this.firstSealedReason() : this.requireState(meshName).sealedReason, `${operation} was rejected because framework admission is closed.`);
|
|
116
114
|
}
|
|
117
115
|
requireActorCreate(actorId, meshName) {
|
|
118
116
|
if (meshName === undefined) {
|
|
@@ -122,9 +120,7 @@ class ZLinkRuntimeAdmissionGate {
|
|
|
122
120
|
else if (this.accepts(meshName)) {
|
|
123
121
|
return;
|
|
124
122
|
}
|
|
125
|
-
const reason = meshName === undefined
|
|
126
|
-
? this.firstSealedReason()
|
|
127
|
-
: this.requireState(meshName).sealedReason;
|
|
123
|
+
const reason = meshName === undefined ? this.firstSealedReason() : this.requireState(meshName).sealedReason;
|
|
128
124
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(reason === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown
|
|
129
125
|
? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown
|
|
130
126
|
: framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorCreateRejected, `Actor '${actorId}' create request was rejected because framework admission is closed.`);
|
|
@@ -34,9 +34,7 @@ class ApplicationIngressRecordOwner {
|
|
|
34
34
|
const initial = this.shared.takeInitialPermit(domain);
|
|
35
35
|
if (initial !== undefined)
|
|
36
36
|
return initial;
|
|
37
|
-
const waitSignal = signal === undefined
|
|
38
|
-
? this.stop.signal
|
|
39
|
-
: AbortSignal.any([this.stop.signal, signal]);
|
|
37
|
+
const waitSignal = signal === undefined ? this.stop.signal : AbortSignal.any([this.stop.signal, signal]);
|
|
40
38
|
const permit = await this.shared.acquirePermit(waitSignal);
|
|
41
39
|
if (this.closed) {
|
|
42
40
|
permit.releaseAfterInternalProcessing();
|
|
@@ -102,9 +100,7 @@ class ApplicationJobRecordLease {
|
|
|
102
100
|
release();
|
|
103
101
|
}
|
|
104
102
|
releaseJobIfTerminal() {
|
|
105
|
-
if (this.jobReleased
|
|
106
|
-
|| !this.ingressClosed
|
|
107
|
-
|| !this.processingTerminal)
|
|
103
|
+
if (this.jobReleased || !this.ingressClosed || !this.processingTerminal)
|
|
108
104
|
return;
|
|
109
105
|
this.jobReleased = true;
|
|
110
106
|
this.shared.releaseJob();
|
|
@@ -24,7 +24,9 @@ class ApplicationJobReceiveFlowController {
|
|
|
24
24
|
this.queue = queue;
|
|
25
25
|
this.toNativeState = toNativeState;
|
|
26
26
|
this.failureSink = failureSink;
|
|
27
|
-
this.unregisterPressureListener =
|
|
27
|
+
this.unregisterPressureListener =
|
|
28
|
+
queue?.onPressureStateChange?.((state, sequence) => this.apply(state, sequence)) ??
|
|
29
|
+
(() => undefined);
|
|
28
30
|
}
|
|
29
31
|
register(target) {
|
|
30
32
|
if (this.disposed)
|
|
@@ -85,9 +87,8 @@ class ApplicationJobReceiveFlowController {
|
|
|
85
87
|
currentTransition() {
|
|
86
88
|
const snapshot = this.queue?.pressureTransition?.();
|
|
87
89
|
const fallbackState = snapshot === undefined ? this.queue?.pressureState?.() : undefined;
|
|
88
|
-
const current = snapshot ??
|
|
89
|
-
? undefined
|
|
90
|
-
: { state: fallbackState, sequence: 0n });
|
|
90
|
+
const current = snapshot ??
|
|
91
|
+
(fallbackState === undefined ? undefined : { state: fallbackState, sequence: 0n });
|
|
91
92
|
if (this.latestTransition === undefined)
|
|
92
93
|
return current;
|
|
93
94
|
if (current === undefined || this.latestTransition.sequence > current.sequence) {
|
|
@@ -96,16 +97,15 @@ class ApplicationJobReceiveFlowController {
|
|
|
96
97
|
return current;
|
|
97
98
|
}
|
|
98
99
|
rememberLatest(transition) {
|
|
99
|
-
if (this.latestTransition === undefined
|
|
100
|
-
|
|
100
|
+
if (this.latestTransition === undefined ||
|
|
101
|
+
transition.sequence > this.latestTransition.sequence) {
|
|
101
102
|
this.latestTransition = transition;
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
enqueue(target, targetState, transition, throwOnFailure) {
|
|
105
|
-
if (this.targets.get(target) !== targetState
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
&& transition.sequence <= targetState.pending.sequence))
|
|
106
|
+
if (this.targets.get(target) !== targetState ||
|
|
107
|
+
transition.sequence <= targetState.appliedSequence ||
|
|
108
|
+
(targetState.pending !== undefined && transition.sequence <= targetState.pending.sequence))
|
|
109
109
|
return;
|
|
110
110
|
targetState.pending = transition;
|
|
111
111
|
if (targetState.applying)
|
|
@@ -113,8 +113,7 @@ class ApplicationJobReceiveFlowController {
|
|
|
113
113
|
targetState.applying = true;
|
|
114
114
|
let firstFailure;
|
|
115
115
|
try {
|
|
116
|
-
while (this.targets.get(target) === targetState
|
|
117
|
-
&& targetState.pending !== undefined) {
|
|
116
|
+
while (this.targets.get(target) === targetState && targetState.pending !== undefined) {
|
|
118
117
|
const next = targetState.pending;
|
|
119
118
|
targetState.pending = undefined;
|
|
120
119
|
if (next.sequence <= targetState.appliedSequence)
|
|
@@ -32,6 +32,7 @@ export type ZLinkBackendObjectPlacement = {
|
|
|
32
32
|
readonly kind: 'unavailable';
|
|
33
33
|
};
|
|
34
34
|
export interface ZLinkBackendMeshNode {
|
|
35
|
+
setDispatchErrorReporter?(reporter: import('../../channels/dispatch-error-reporter').ZLinkDispatchErrorReporter, meshName: string): void;
|
|
35
36
|
setRoutingId(routingId: unknown): void;
|
|
36
37
|
setBind(endpoint: string): void;
|
|
37
38
|
setAdvertiseHost(host: string): void;
|
|
@@ -47,9 +47,7 @@ class ZLinkMeshCompletionTable {
|
|
|
47
47
|
this.pending.set(key, {
|
|
48
48
|
resolve,
|
|
49
49
|
reject,
|
|
50
|
-
removeAbort: signal === undefined
|
|
51
|
-
? undefined
|
|
52
|
-
: () => signal.removeEventListener('abort', abort)
|
|
50
|
+
removeAbort: signal === undefined ? undefined : () => signal.removeEventListener('abort', abort)
|
|
53
51
|
});
|
|
54
52
|
});
|
|
55
53
|
}
|
|
@@ -74,10 +74,8 @@ class ZLinkMeshDispatchPump {
|
|
|
74
74
|
return;
|
|
75
75
|
const previous = this.pendingDomains;
|
|
76
76
|
this.pendingDomains |= domains;
|
|
77
|
-
const startInfrastructure = (domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0
|
|
78
|
-
|
|
79
|
-
const startApplication = (domains & service_runtime_contracts_1.ReadyDomain.Application) !== 0
|
|
80
|
-
&& (previous & service_runtime_contracts_1.ReadyDomain.Application) === 0;
|
|
77
|
+
const startInfrastructure = (domains & service_runtime_contracts_1.ReadyDomain.Infrastructure) !== 0 && (previous & service_runtime_contracts_1.ReadyDomain.Infrastructure) === 0;
|
|
78
|
+
const startApplication = (domains & service_runtime_contracts_1.ReadyDomain.Application) !== 0 && (previous & service_runtime_contracts_1.ReadyDomain.Application) === 0;
|
|
81
79
|
if (startInfrastructure && startApplication) {
|
|
82
80
|
const startTurn = this.yieldIfNeeded() ?? Promise.resolve();
|
|
83
81
|
this.scheduleInfrastructure(startTurn);
|
|
@@ -111,8 +109,7 @@ class ZLinkMeshDispatchPump {
|
|
|
111
109
|
startApplicationWorker() {
|
|
112
110
|
this.applicationWorkerCount += 1;
|
|
113
111
|
let worker;
|
|
114
|
-
worker = detachedMeshDispatchScope(() => (0, execution_1.runZLinkExecutionArea)('application', () => this.runApplicationWorker()))
|
|
115
|
-
.finally(() => {
|
|
112
|
+
worker = detachedMeshDispatchScope(() => (0, execution_1.runZLinkExecutionArea)('application', () => this.runApplicationWorker())).finally(() => {
|
|
116
113
|
this.applicationWorkerCount -= 1;
|
|
117
114
|
this.activeDrains.delete(worker);
|
|
118
115
|
});
|
|
@@ -148,7 +145,7 @@ class ZLinkMeshDispatchPump {
|
|
|
148
145
|
this.pendingDomains &= ~service_runtime_contracts_1.ReadyDomain.Application;
|
|
149
146
|
return Promise.resolve();
|
|
150
147
|
}
|
|
151
|
-
return new Promise(resolve => this.idleApplicationWorkers.add(resolve));
|
|
148
|
+
return new Promise((resolve) => this.idleApplicationWorkers.add(resolve));
|
|
152
149
|
}
|
|
153
150
|
reportDispatchError(error) {
|
|
154
151
|
if (error instanceof ZLinkMeshDispatchFailure) {
|
|
@@ -239,12 +236,11 @@ class ZLinkMeshDispatchPump {
|
|
|
239
236
|
// Raw ingress already attached one host permit to each record.
|
|
240
237
|
// A claim that reserves admission here may receive only that permit's record.
|
|
241
238
|
try {
|
|
242
|
-
const capacity = owner.ordinaryIngressPreAdmitted === true
|
|
243
|
-
? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
|
|
239
|
+
const capacity = owner.ordinaryIngressPreAdmitted === true ? MESH_DISPATCH_RECEIVE_CAPACITY : 1;
|
|
244
240
|
for (;;) {
|
|
245
|
-
let claimPermit = owner.terminalCompletion === true
|
|
246
|
-
|
|
247
|
-
|
|
241
|
+
let claimPermit = owner.terminalCompletion === true ||
|
|
242
|
+
owner.ordinaryIngressPreAdmitted === true ||
|
|
243
|
+
domain === service_runtime_contracts_1.ReadyDomain.Infrastructure
|
|
248
244
|
? undefined
|
|
249
245
|
: await this.acquirePermit();
|
|
250
246
|
try {
|
|
@@ -285,8 +281,8 @@ class ZLinkMeshDispatchPump {
|
|
|
285
281
|
await dispatch();
|
|
286
282
|
}
|
|
287
283
|
else {
|
|
288
|
-
if (domain === service_runtime_contracts_1.ReadyDomain.Application
|
|
289
|
-
|
|
284
|
+
if (domain === service_runtime_contracts_1.ReadyDomain.Application &&
|
|
285
|
+
record.applicationJobPermit === undefined)
|
|
290
286
|
permit.markApplicationQueued();
|
|
291
287
|
// The scope now owns this reservation, including failure
|
|
292
288
|
// and detached handler handoff. Only unused permits remain
|
|
@@ -340,8 +336,8 @@ class ZLinkMeshDispatchPump {
|
|
|
340
336
|
}
|
|
341
337
|
yieldIfNeeded() {
|
|
342
338
|
const nowMs = this.nowMs();
|
|
343
|
-
if (this.recordsSinceYield < MESH_DISPATCH_YIELD_RECORDS
|
|
344
|
-
|
|
339
|
+
if (this.recordsSinceYield < MESH_DISPATCH_YIELD_RECORDS &&
|
|
340
|
+
nowMs - this.yieldStartedAtMs < MESH_DISPATCH_YIELD_INTERVAL_MS)
|
|
345
341
|
return undefined;
|
|
346
342
|
this.recordsSinceYield = 0;
|
|
347
343
|
return yieldToTimers().then(() => {
|
|
@@ -151,9 +151,7 @@ function createNodeReadablePoller(socket) {
|
|
|
151
151
|
const promise = new Promise((resolve) => {
|
|
152
152
|
resolvePending = resolve;
|
|
153
153
|
});
|
|
154
|
-
const onAbort = signal === undefined
|
|
155
|
-
? undefined
|
|
156
|
-
: () => settlePending(false);
|
|
154
|
+
const onAbort = signal === undefined ? undefined : () => settlePending(false);
|
|
157
155
|
pending = { promise, resolve: resolvePending, signal, onAbort };
|
|
158
156
|
if (signal !== undefined && onAbort !== undefined) {
|
|
159
157
|
signal.addEventListener('abort', onAbort, { once: true });
|
|
@@ -26,10 +26,11 @@ function isNonBlockingRecvEmpty(error) {
|
|
|
26
26
|
return error instanceof exports.zlink.RecvError && error.result === exports.zlink.RecvResult.NoData;
|
|
27
27
|
}
|
|
28
28
|
function isRouteRecvRetryable(error) {
|
|
29
|
-
return isNonBlockingRecvEmpty(error) ||
|
|
29
|
+
return (isNonBlockingRecvEmpty(error) ||
|
|
30
30
|
(error instanceof exports.zlink.RecvError &&
|
|
31
|
-
(error.result === exports.zlink.RecvResult.InternalError ||
|
|
32
|
-
|
|
31
|
+
(error.result === exports.zlink.RecvResult.InternalError ||
|
|
32
|
+
error.result === exports.zlink.RecvResult.InvalidHandle) &&
|
|
33
|
+
isNativeBadAddress(error)));
|
|
33
34
|
}
|
|
34
35
|
function isPollerInterruptedError(error) {
|
|
35
36
|
return error instanceof exports.zlink.RecvError && error.nativeErrno === 4;
|
|
@@ -49,10 +50,10 @@ function submitBindingPublish(operation, payload) {
|
|
|
49
50
|
}
|
|
50
51
|
catch (error) {
|
|
51
52
|
const translated = translateBindingResultError(error);
|
|
52
|
-
if (translated instanceof runtime_values_1.ZLinkBackendResultError
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
if (translated instanceof runtime_values_1.ZLinkBackendResultError &&
|
|
54
|
+
translated.operation === 'submit' &&
|
|
55
|
+
(translated.result === runtime_values_1.SubmitResult.Backpressured ||
|
|
56
|
+
translated.result === runtime_values_1.SubmitResult.NotAdmitted)) {
|
|
56
57
|
(0, submission_result_1.requireOneWayCompletion)({ status: submission_result_1.ZLinkSubmitStatus.Backpressured }, 'Classic fanout publish');
|
|
57
58
|
}
|
|
58
59
|
throw translated;
|
|
@@ -108,7 +109,8 @@ async function submitBindingRequest(operation, payload, timeoutMs) {
|
|
|
108
109
|
if (Array.isArray(payload)) {
|
|
109
110
|
for (const part of payload) {
|
|
110
111
|
const nativePart = toNativeMessageLike(part);
|
|
111
|
-
current =
|
|
112
|
+
current =
|
|
113
|
+
current === undefined ? operation.message(nativePart) : current.message(nativePart);
|
|
112
114
|
}
|
|
113
115
|
}
|
|
114
116
|
else {
|
|
@@ -139,16 +141,21 @@ async function closeWithBusyRetry(target) {
|
|
|
139
141
|
throw error;
|
|
140
142
|
}
|
|
141
143
|
lastError = error;
|
|
142
|
-
await new Promise(resolve => setImmediate(resolve));
|
|
144
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
143
145
|
}
|
|
144
146
|
}
|
|
145
147
|
throw lastError;
|
|
146
148
|
}
|
|
147
149
|
function isBusyCloseError(error) {
|
|
148
|
-
return error instanceof Error &&
|
|
150
|
+
return (error instanceof Error &&
|
|
151
|
+
'code' in error &&
|
|
152
|
+
[401, 404].includes(error.code));
|
|
149
153
|
}
|
|
150
154
|
function isSuccessfulOrAlreadyShutdownCloseError(error) {
|
|
151
|
-
return isContextTerminatedError(error) ||
|
|
155
|
+
return (isContextTerminatedError(error) ||
|
|
156
|
+
(error instanceof Error &&
|
|
157
|
+
'code' in error &&
|
|
158
|
+
[0, 402, 403].includes(error.code)));
|
|
152
159
|
}
|
|
153
160
|
function isContextTerminatedError(error) {
|
|
154
161
|
return error instanceof Error && /context was terminated/i.test(error.message);
|
|
@@ -174,13 +181,13 @@ function toNativeRoutingId(routingId) {
|
|
|
174
181
|
if (typeof routingId === 'string')
|
|
175
182
|
return exports.zlink.RoutingId.from(routingId);
|
|
176
183
|
const toHex = routingId?.toHex;
|
|
177
|
-
return typeof toHex === 'function'
|
|
178
|
-
? exports.zlink.RoutingId.fromHex(toHex.call(routingId))
|
|
179
|
-
: routingId;
|
|
184
|
+
return typeof toHex === 'function' ? exports.zlink.RoutingId.fromHex(toHex.call(routingId)) : routingId;
|
|
180
185
|
}
|
|
181
186
|
function toNativeMessageLike(message) {
|
|
182
|
-
if (message instanceof exports.zlink.Message ||
|
|
183
|
-
|
|
187
|
+
if (message instanceof exports.zlink.Message ||
|
|
188
|
+
Buffer.isBuffer(message) ||
|
|
189
|
+
message instanceof Uint8Array ||
|
|
190
|
+
typeof message === 'string') {
|
|
184
191
|
return message;
|
|
185
192
|
}
|
|
186
193
|
const data = message?.data;
|
|
@@ -196,7 +203,9 @@ function translateBindingResultError(error) {
|
|
|
196
203
|
return new runtime_values_1.ZLinkBackendResultError('submit', error.result, error.nativeErrno, { cause: error });
|
|
197
204
|
}
|
|
198
205
|
if (error instanceof exports.zlink.RequestError) {
|
|
199
|
-
return new runtime_values_1.ZLinkBackendResultError('request', error.result, error.nativeErrno, {
|
|
206
|
+
return new runtime_values_1.ZLinkBackendResultError('request', error.result, error.nativeErrno, {
|
|
207
|
+
cause: error
|
|
208
|
+
});
|
|
200
209
|
}
|
|
201
210
|
return error;
|
|
202
211
|
}
|
|
@@ -17,7 +17,8 @@ class ZLinkNodeMeshBackendAdapter {
|
|
|
17
17
|
}
|
|
18
18
|
exports.ZLinkNodeMeshBackendAdapter = ZLinkNodeMeshBackendAdapter;
|
|
19
19
|
function isBindingContext(value) {
|
|
20
|
-
return typeof value === 'object' &&
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
return (typeof value === 'object' &&
|
|
21
|
+
value !== null &&
|
|
22
|
+
typeof value.shutdown === 'function' &&
|
|
23
|
+
typeof value.close === 'function');
|
|
23
24
|
}
|
|
@@ -227,9 +227,8 @@ class NodeRawRouterPort extends NodeRawSocketPort {
|
|
|
227
227
|
this.requireOpen();
|
|
228
228
|
return receiveRecord(this.socket, dontWait, () => {
|
|
229
229
|
const current = this.nextIncomingRequestSequence;
|
|
230
|
-
this.nextIncomingRequestSequence =
|
|
231
|
-
? 1n
|
|
232
|
-
: current + 1n;
|
|
230
|
+
this.nextIncomingRequestSequence =
|
|
231
|
+
current === BigInt(Number.MAX_SAFE_INTEGER) ? 1n : current + 1n;
|
|
233
232
|
return current;
|
|
234
233
|
}, (targetRid, replyToken, parts) => {
|
|
235
234
|
appendReplyParts(this.socket.reply(bindingRoutingId(targetRid), replyToken), parts).submit();
|
|
@@ -253,7 +252,9 @@ class NodeRawDealerPort extends NodeRawSocketPort {
|
|
|
253
252
|
}
|
|
254
253
|
async request(parts, timeoutMs) {
|
|
255
254
|
this.requireOpen();
|
|
256
|
-
const replies = await appendRequestParts(this.socket.request(), parts)
|
|
255
|
+
const replies = await appendRequestParts(this.socket.request(), parts)
|
|
256
|
+
.timeout(timeoutMs)
|
|
257
|
+
.submit().reply;
|
|
257
258
|
return copyAndClose(replies);
|
|
258
259
|
}
|
|
259
260
|
receive(dontWait = false) {
|
|
@@ -355,7 +356,7 @@ function receiveRecord(socket, dontWait, nextRequestSequence, reply) {
|
|
|
355
356
|
appendReplyParts(receivedReply, parts).submit();
|
|
356
357
|
}
|
|
357
358
|
}),
|
|
358
|
-
parts: received.parts.map(part => part.toBytes()),
|
|
359
|
+
parts: received.parts.map((part) => part.toBytes()),
|
|
359
360
|
close: () => {
|
|
360
361
|
if (closed)
|
|
361
362
|
return;
|
|
@@ -371,7 +372,7 @@ function receiveRecord(socket, dontWait, nextRequestSequence, reply) {
|
|
|
371
372
|
}
|
|
372
373
|
function copyAndClose(messages) {
|
|
373
374
|
try {
|
|
374
|
-
return messages.map(message => message.toBytes());
|
|
375
|
+
return messages.map((message) => message.toBytes());
|
|
375
376
|
}
|
|
376
377
|
finally {
|
|
377
378
|
for (const message of messages)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SubmitResult, type RequestResult as RequestResultValue, type SubmitResult as SubmitResultValue } from '@zlink-systems/zlink';
|
|
2
2
|
import { type ZLinkBackendMessageLike as MessageLike } from '../runtime-values';
|
|
3
|
+
import type { ZLinkDispatchErrorReporter } from '../../channels/dispatch-error-reporter';
|
|
3
4
|
import type { MeshOperationId, MeshPeerEntry, MeshPublisher, ReadyBatch, ReadyRecord, ReceiveBatch, ServiceSpot, StreamSessionService } from '../../foundation/service-runtime-contracts';
|
|
4
5
|
import { type RawServiceRequestResult } from '../../foundation/raw-service-mesh-runtime';
|
|
5
6
|
import { type ServiceApplicationPayload } from '../../foundation/service-wire-m6a-codec';
|
|
@@ -52,6 +53,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
52
53
|
private mailboxRecordDropped?;
|
|
53
54
|
private protocolError?;
|
|
54
55
|
private messageFollowHandler?;
|
|
56
|
+
private dispatchErrors?;
|
|
55
57
|
private readonly peerDisconnectedHandlers;
|
|
56
58
|
constructor(meshName: string, routingId: string | undefined, bindingPort: ZLinkRawBindingPort, applicationJobQueue?: ApplicationJobQueuePort | undefined, applicationJobReceiveFlowFailureSink?: ((error: unknown) => void) | undefined, peerAdmissionSealed?: (() => boolean) | undefined);
|
|
57
59
|
configureObjectPlacement(options: {
|
|
@@ -66,6 +68,7 @@ export declare class ZLinkNodeRawMeshBackend implements ZLinkBackendMeshNode {
|
|
|
66
68
|
readonly kind: 'spot_multicast' | 'actor_control' | 'actor_binding';
|
|
67
69
|
readonly owner: string;
|
|
68
70
|
}) => void): void;
|
|
71
|
+
setDispatchErrorReporter(reporter: ZLinkDispatchErrorReporter): void;
|
|
69
72
|
setProtocolErrorHandler(handler: (record: {
|
|
70
73
|
readonly sourceNodeRid: string;
|
|
71
74
|
readonly request: boolean;
|