@zlink-systems/framework 0.30.0 → 0.30.2
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/LICENSE +150 -68
- package/dist/.tsbuildinfo +1 -1
- package/dist/contracts/Actors/ZLinkActorClient.d.ts +2 -1
- package/dist/contracts/Channels/Calls.d.ts +2 -1
- package/dist/contracts/Common/ZLinkEncodedPayload.d.ts +6 -0
- package/dist/contracts/Common/ZLinkEncodedPayload.js +18 -3
- package/dist/contracts/Common/ZLinkMessageMetadata.js +11 -5
- package/dist/contracts/Common/encoded-payload-storage.d.ts +1 -1
- package/dist/contracts/Common/encoded-payload-storage.js +5 -2
- package/dist/contracts/Configuration/Builders.d.ts +1 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +2 -1
- package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +5 -1
- package/dist/contracts/Configuration/RegistrationBuilders.js +2 -2
- package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -0
- package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +2 -2
- package/dist/contracts/Handlers/Attributes.d.ts +5 -13
- package/dist/contracts/Handlers/Attributes.js +7 -11
- package/dist/contracts/Handlers/JsonContract.d.ts +2 -46
- package/dist/contracts/Handlers/JsonContract.js +4 -153
- package/dist/contracts/Locations/Rows.d.ts +2 -0
- package/dist/contracts/Spots/Contracts.d.ts +6 -1
- package/dist/contracts/Spots/ZLinkSpot.d.ts +3 -3
- package/dist/nest-integration.d.ts +1 -1
- package/dist/nest-integration.js +2 -1
- package/dist/runtime/abort.d.ts +5 -0
- package/dist/runtime/abort.js +10 -0
- package/dist/runtime/actors/actor-authority-publication.js +3 -2
- package/dist/runtime/actors/actor-client.d.ts +1 -2
- package/dist/runtime/actors/actor-client.js +52 -57
- package/dist/runtime/actors/actor-context.d.ts +2 -0
- package/dist/runtime/actors/actor-context.js +46 -9
- package/dist/runtime/actors/actor-handoff.d.ts +8 -4
- package/dist/runtime/actors/actor-handoff.js +219 -92
- package/dist/runtime/actors/actor-join-relocation.d.ts +3 -0
- package/dist/runtime/actors/actor-local-native-join.js +13 -12
- package/dist/runtime/actors/actor-mailbox.js +27 -1
- package/dist/runtime/actors/actor-remote-joiner.js +3 -1
- package/dist/runtime/actors/actor-remote-wire.js +15 -0
- package/dist/runtime/actors/actor-reply.d.ts +4 -0
- package/dist/runtime/actors/actor-reply.js +29 -0
- package/dist/runtime/actors/actor-routed-join-transport.d.ts +6 -2
- package/dist/runtime/actors/actor-routed-json-request.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-contracts.d.ts +2 -0
- package/dist/runtime/actors/actor-runtime-state.js +2 -20
- package/dist/runtime/actors/actor-source-transfer.d.ts +1 -17
- package/dist/runtime/actors/index.d.ts +8 -3
- package/dist/runtime/actors/index.js +55 -27
- package/dist/runtime/actors/session-disconnected-wire.d.ts +8 -0
- package/dist/runtime/actors/session-disconnected-wire.js +48 -0
- package/dist/runtime/actors/spot-actor-dispatch.js +2 -2
- package/dist/runtime/admission.d.ts +9 -1
- package/dist/runtime/admission.js +56 -23
- package/dist/runtime/application-jobs/application-ingress-record-owner.d.ts +6 -8
- package/dist/runtime/application-jobs/application-ingress-record-owner.js +39 -22
- package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +15 -1
- package/dist/runtime/application-jobs/application-job-queue-scope.js +61 -20
- package/dist/runtime/application-jobs/contracts.d.ts +12 -1
- package/dist/runtime/backend/contracts/index.d.ts +37 -12
- package/dist/runtime/backend/mesh-actor-session-node-adapter.js +2 -2
- package/dist/runtime/backend/mesh-completion-table.d.ts +9 -1
- package/dist/runtime/backend/mesh-completion-table.js +154 -49
- package/dist/runtime/backend/mesh-dispatch-pump.d.ts +28 -1
- package/dist/runtime/backend/mesh-dispatch-pump.js +208 -101
- package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +2 -2
- package/dist/runtime/backend/node/node-backend-adapter-support.js +16 -9
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
- package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +5 -2
- package/dist/runtime/backend/node/node-raw-binding-port.js +124 -72
- package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +46 -13
- package/dist/runtime/backend/node/node-raw-mesh-backend.js +181 -164
- package/dist/runtime/backend/node/node-socket-backend-adapter.d.ts +1 -1
- package/dist/runtime/backend/node/node-socket-backend-adapter.js +11 -11
- package/dist/runtime/backend/raw-binding-port.d.ts +2 -2
- package/dist/runtime/backend/runtime-message.d.ts +1 -0
- package/dist/runtime/backend/runtime-message.js +5 -0
- package/dist/runtime/backend/runtime-values.d.ts +1 -0
- package/dist/runtime/backend/runtime-values.js +2 -1
- package/dist/runtime/channels/channel-clients.d.ts +2 -0
- package/dist/runtime/channels/channel-clients.js +75 -23
- package/dist/runtime/channels/channel-dispatch-pipeline.d.ts +25 -5
- package/dist/runtime/channels/channel-dispatch-pipeline.js +111 -56
- package/dist/runtime/channels/channel-dispatch-services.d.ts +1 -0
- package/dist/runtime/channels/channel-dispatch-services.js +45 -0
- package/dist/runtime/channels/channel-dispatchers.d.ts +4 -3
- package/dist/runtime/channels/channel-dispatchers.js +62 -54
- package/dist/runtime/channels/channel-envelope-inspection.d.ts +1 -2
- package/dist/runtime/channels/channel-envelope-inspection.js +1 -16
- package/dist/runtime/channels/channel-envelope.d.ts +2 -0
- package/dist/runtime/channels/channel-envelope.js +146 -28
- package/dist/runtime/channels/channel-outbound-operations.d.ts +2 -2
- package/dist/runtime/channels/channel-outbound-operations.js +8 -8
- package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +4 -3
- package/dist/runtime/channels/channel-runtime-lifecycle.js +19 -24
- package/dist/runtime/channels/channel-runtime-manager.d.ts +9 -8
- package/dist/runtime/channels/channel-runtime-manager.js +16 -16
- package/dist/runtime/channels/channel-transports.d.ts +18 -16
- package/dist/runtime/channels/channel-transports.js +77 -58
- package/dist/runtime/channels/client-server-location-runtime.js +5 -4
- package/dist/runtime/channels/dispatch-error-reporter.d.ts +2 -1
- package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
- package/dist/runtime/channels/fanout-location-runtime.d.ts +1 -1
- package/dist/runtime/channels/fanout-location-runtime.js +3 -3
- package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
- package/dist/runtime/channels/local-spot-route-transport.js +2 -1
- package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +2 -2
- package/dist/runtime/channels/router-socket-spot-route-transport.js +4 -4
- package/dist/runtime/channels/source-spot-router.d.ts +2 -2
- package/dist/runtime/channels/source-spot-router.js +4 -4
- package/dist/runtime/channels/spot-node-route-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-node-route-transport.js +4 -4
- package/dist/runtime/channels/spot-route-bridge-transport.d.ts +2 -2
- package/dist/runtime/channels/spot-route-bridge-transport.js +4 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +5 -4
- package/dist/runtime/channels/spot-route-dispatch-strategy.js +18 -18
- package/dist/runtime/diagnostics/flow-context.js +19 -7
- package/dist/runtime/diagnostics/index.js +4 -9
- package/dist/runtime/diagnostics/message-flow.d.ts +8 -0
- package/dist/runtime/diagnostics/message-flow.js +35 -5
- package/dist/runtime/diagnostics/runtime-metrics.d.ts +2 -2
- package/dist/runtime/diagnostics/runtime-metrics.js +10 -8
- package/dist/runtime/execution/index.d.ts +4 -2
- package/dist/runtime/execution/index.js +33 -10
- package/dist/runtime/execution/serial-execution-queue.d.ts +5 -0
- package/dist/runtime/execution/serial-execution-queue.js +22 -2
- package/dist/runtime/execution/state-lane.d.ts +2 -0
- package/dist/runtime/execution/state-lane.js +5 -0
- package/dist/runtime/foundation/actor-join-recovery-codec.js +2 -2
- package/dist/runtime/foundation/durable-service-request.d.ts +14 -0
- package/dist/runtime/foundation/durable-service-request.js +98 -0
- package/dist/runtime/foundation/operation-identity.d.ts +1 -0
- package/dist/runtime/foundation/operation-identity.js +5 -1
- package/dist/runtime/foundation/operation-registry.d.ts +25 -1
- package/dist/runtime/foundation/operation-registry.js +86 -18
- package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +61 -8
- package/dist/runtime/foundation/raw-service-mesh-runtime.js +486 -266
- package/dist/runtime/foundation/service-liveness-registry.d.ts +12 -1
- package/dist/runtime/foundation/service-liveness-registry.js +38 -0
- package/dist/runtime/foundation/service-mailbox.d.ts +7 -0
- package/dist/runtime/foundation/service-maintenance-runtime.js +1 -6
- package/dist/runtime/foundation/service-relocation-object-owner.d.ts +3 -3
- package/dist/runtime/foundation/service-relocation-object-owner.js +48 -34
- package/dist/runtime/foundation/service-relocation-runtime.d.ts +2 -0
- package/dist/runtime/foundation/service-relocation-runtime.js +20 -4
- package/dist/runtime/foundation/service-runtime-contracts.d.ts +10 -1
- package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +2 -1
- package/dist/runtime/foundation/service-stateful-registry.d.ts +5 -4
- package/dist/runtime/foundation/service-stateful-registry.js +24 -26
- package/dist/runtime/foundation/service-stateful-runtime.d.ts +75 -9
- package/dist/runtime/foundation/service-stateful-runtime.js +486 -218
- package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +14 -6
- package/dist/runtime/foundation/service-stateful-wire-codec.js +48 -27
- package/dist/runtime/foundation/service-topology-registry.d.ts +12 -2
- package/dist/runtime/foundation/service-topology-registry.js +61 -27
- package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +6 -1
- package/dist/runtime/foundation/service-wire-binary-primitives.js +27 -11
- package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
- package/dist/runtime/foundation/service-wire-constants.generated.js +1 -0
- package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +13 -3
- package/dist/runtime/foundation/service-wire-m6a-codec.js +189 -78
- package/dist/runtime/handlers/handler-instance-scope.d.ts +8 -0
- package/dist/runtime/handlers/handler-instance-scope.js +54 -11
- package/dist/runtime/host/actor-packet-relay.d.ts +6 -4
- package/dist/runtime/host/actor-packet-relay.js +59 -72
- package/dist/runtime/host/actor-placement-coordinator.js +25 -8
- package/dist/runtime/host/actor-runtime-options-factory.js +2 -2
- package/dist/runtime/host/actor-transfer-runtime.d.ts +7 -31
- package/dist/runtime/host/actor-transfer-runtime.js +85 -331
- package/dist/runtime/host/application-job-queue.d.ts +40 -7
- package/dist/runtime/host/application-job-queue.js +137 -42
- package/dist/runtime/host/entry-actor-runtime.d.ts +1 -0
- package/dist/runtime/host/entry-actor-runtime.js +3 -0
- package/dist/runtime/host/index.d.ts +12 -2
- package/dist/runtime/host/index.js +300 -202
- package/dist/runtime/host/location-runtime-owner.js +2 -6
- package/dist/runtime/host/mesh-router-resolver.d.ts +4 -0
- package/dist/runtime/host/mesh-router-resolver.js +14 -6
- package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -4
- package/dist/runtime/host/remote-bound-session-relay.js +73 -208
- package/dist/runtime/host/route-mesh-runtime.d.ts +2 -2
- package/dist/runtime/host/route-mesh-runtime.js +6 -4
- package/dist/runtime/host/runtime-shutdown.d.ts +1 -0
- package/dist/runtime/host/runtime-shutdown.js +3 -2
- package/dist/runtime/host/service-relocation-control.d.ts +1 -0
- package/dist/runtime/host/service-relocation-control.js +10 -4
- package/dist/runtime/host/service-relocation-host-runtime.d.ts +22 -14
- package/dist/runtime/host/service-relocation-host-runtime.js +754 -599
- package/dist/runtime/host/spot-address-transport.js +3 -2
- package/dist/runtime/host/spot-runtime-options-factory.js +16 -7
- package/dist/runtime/host/user-spot-creation-coordinator.js +33 -84
- package/dist/runtime/locations/actor-location-claims.d.ts +2 -2
- package/dist/runtime/locations/actor-location-claims.js +34 -19
- package/dist/runtime/locations/auto-connect-loop.d.ts +2 -0
- package/dist/runtime/locations/auto-connect-loop.js +22 -14
- package/dist/runtime/locations/auto-connect-reconciler.js +0 -6
- package/dist/runtime/locations/auto-connect-types.d.ts +0 -1
- package/dist/runtime/locations/descriptor-publication.d.ts +4 -0
- package/dist/runtime/locations/descriptor-publication.js +11 -0
- package/dist/runtime/locations/domain-store-contract.d.ts +1 -0
- package/dist/runtime/locations/in-memory-authority-store.d.ts +7 -1
- package/dist/runtime/locations/in-memory-authority-store.js +56 -19
- package/dist/runtime/locations/in-memory-location-store.js +1 -10
- package/dist/runtime/locations/index.d.ts +1 -0
- package/dist/runtime/locations/index.js +1 -0
- package/dist/runtime/locations/lease-tracker.js +1 -6
- package/dist/runtime/locations/lifecycle.d.ts +1 -2
- package/dist/runtime/locations/lifecycle.js +2 -5
- package/dist/runtime/locations/location-store-repository.d.ts +51 -1
- package/dist/runtime/locations/location-store-repository.js +363 -139
- package/dist/runtime/locations/relocation-blob.d.ts +18 -1
- package/dist/runtime/locations/relocation-blob.js +52 -1
- package/dist/runtime/locations/request-source-resolver.d.ts +37 -0
- package/dist/runtime/locations/request-source-resolver.js +80 -0
- package/dist/runtime/locations/resolvers.js +1 -1
- package/dist/runtime/locations/runtime.d.ts +7 -3
- package/dist/runtime/locations/runtime.js +61 -53
- package/dist/runtime/messaging/framework-json-v1.d.ts +4 -6
- package/dist/runtime/messaging/framework-json-v1.js +38 -294
- package/dist/runtime/messaging/packet-name.d.ts +1 -1
- package/dist/runtime/messaging/packet-name.js +8 -24
- package/dist/runtime/messaging/payload-codec.d.ts +7 -1
- package/dist/runtime/messaging/payload-codec.js +7 -6
- package/dist/runtime/messaging/request-result.d.ts +2 -0
- package/dist/runtime/messaging/request-result.js +57 -0
- package/dist/runtime/messaging/submission-result.d.ts +1 -0
- package/dist/runtime/messaging/submission-result.js +5 -2
- package/dist/runtime/protocol/service_wire_codec.generated.d.ts +34 -1
- package/dist/runtime/protocol/service_wire_codec.generated.js +229 -0
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.d.ts +16 -1
- package/dist/runtime/protocol/service_wire_pilot_codec.generated.js +37 -8
- package/dist/runtime/spots/formal-remote-actor-admission-registry.d.ts +7 -2
- package/dist/runtime/spots/formal-remote-actor-admission-registry.js +36 -21
- package/dist/runtime/spots/index.d.ts +21 -11
- package/dist/runtime/spots/index.js +243 -178
- package/dist/runtime/spots/spot-activation-registry.d.ts +4 -2
- package/dist/runtime/spots/spot-activation-registry.js +21 -11
- package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
- package/dist/runtime/spots/spot-activation-state.js +7 -7
- package/dist/runtime/spots/spot-activation.d.ts +7 -3
- package/dist/runtime/spots/spot-activation.js +140 -52
- package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -0
- package/dist/runtime/spots/spot-actor-admission-coordinator.js +13 -22
- package/dist/runtime/spots/spot-actor-membership.d.ts +0 -1
- package/dist/runtime/spots/spot-actor-membership.js +0 -8
- package/dist/runtime/spots/spot-actor-packet-dispatch.js +33 -8
- package/dist/runtime/spots/spot-actor-packet-drain.js +5 -33
- package/dist/runtime/spots/spot-entry-activation.d.ts +2 -0
- package/dist/runtime/spots/spot-entry-activation.js +20 -11
- package/dist/runtime/spots/spot-handler-registry.d.ts +7 -4
- package/dist/runtime/spots/spot-handler-registry.js +24 -10
- package/dist/runtime/spots/spot-manager-internal-contracts.d.ts +2 -2
- package/dist/runtime/spots/spot-manager-public.js +2 -2
- package/dist/runtime/spots/spot-node-autoconnect.d.ts +2 -1
- package/dist/runtime/spots/spot-node-autoconnect.js +22 -42
- package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -2
- package/dist/runtime/spots/spot-node-runtime-manager.js +115 -50
- package/dist/runtime/spots/spot-outbound.d.ts +3 -0
- package/dist/runtime/spots/spot-outbound.js +27 -18
- package/dist/runtime/spots/spot-remote-codec.js +5 -1
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +1 -0
- package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +1 -1
- package/dist/runtime/spots/spot-runtime-ports.d.ts +1 -1
- package/dist/runtime/spots/spot-serial-executor.d.ts +10 -0
- package/dist/runtime/spots/spot-serial-executor.js +61 -8
- package/dist/runtime/spots/spot-serial-turn-executor.js +19 -2
- package/dist/runtime/spots/spot-subscription-dispatch.js +1 -4
- package/dist/runtime/spots/spot-timer.d.ts +57 -5
- package/dist/runtime/spots/spot-timer.js +288 -103
- package/dist/runtime/streams/actor-session-binding-registry.d.ts +42 -11
- package/dist/runtime/streams/actor-session-binding-registry.js +165 -48
- package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +8 -4
- package/dist/runtime/streams/bound-actor-relay-sender.d.ts +2 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +15 -8
- package/dist/runtime/streams/bound-session-service.d.ts +1 -1
- package/dist/runtime/streams/bound-session-service.js +6 -11
- package/dist/runtime/streams/index.d.ts +3 -2
- package/dist/runtime/streams/index.js +6 -4
- package/dist/runtime/streams/managed-stream.js +3 -2
- package/dist/runtime/streams/native-fallback-bound-session.js +8 -73
- package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -8
- package/dist/runtime/streams/session-actor-coordinator.js +15 -32
- package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +3 -10
- package/dist/runtime/streams/stream-session-runtime.d.ts +1 -1
- package/dist/runtime/streams/stream-session-runtime.js +14 -31
- package/dist/runtime/workers/index.js +1 -1
- package/package.json +3 -3
- package/src/contracts/Actors/ZLinkActorClient.ts +2 -1
- package/src/contracts/Channels/Calls.ts +2 -1
- package/src/contracts/Common/ZLinkEncodedPayload.ts +24 -4
- package/src/contracts/Common/ZLinkMessageMetadata.ts +13 -8
- package/src/contracts/Common/encoded-payload-storage.ts +6 -3
- package/src/contracts/Configuration/Builders.ts +4 -1
- package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +7 -2
- package/src/contracts/Configuration/RegistrationBuilders.ts +6 -2
- package/src/contracts/Configuration/RegistrationTypes.ts +1 -0
- package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +2 -1
- package/src/contracts/Handlers/Attributes.ts +14 -21
- package/src/contracts/Handlers/JsonContract.ts +8 -216
- package/src/contracts/Locations/Rows.ts +2 -0
- package/src/contracts/Spots/Contracts.ts +10 -1
- package/src/contracts/Spots/ZLinkSpot.ts +3 -3
- package/src/nest-integration.ts +1 -0
- package/src/runtime/abort.ts +12 -0
- package/src/runtime/actors/actor-authority-publication.ts +3 -2
- package/src/runtime/actors/actor-client.ts +100 -85
- package/src/runtime/actors/actor-context.ts +49 -9
- package/src/runtime/actors/actor-handoff.ts +291 -110
- package/src/runtime/actors/actor-join-relocation.ts +3 -0
- package/src/runtime/actors/actor-local-native-join.ts +21 -26
- package/src/runtime/actors/actor-mailbox.ts +40 -2
- package/src/runtime/actors/actor-remote-joiner.ts +6 -1
- package/src/runtime/actors/actor-remote-wire.ts +17 -0
- package/src/runtime/actors/actor-reply.ts +42 -0
- package/src/runtime/actors/actor-routed-join-transport.ts +14 -4
- package/src/runtime/actors/actor-routed-json-request.ts +10 -2
- package/src/runtime/actors/actor-runtime-contracts.ts +2 -0
- package/src/runtime/actors/actor-runtime-state.ts +2 -20
- package/src/runtime/actors/actor-source-transfer.ts +1 -34
- package/src/runtime/actors/index.ts +60 -32
- package/src/runtime/actors/session-disconnected-wire.ts +66 -0
- package/src/runtime/actors/spot-actor-dispatch.ts +4 -2
- package/src/runtime/admission.ts +69 -21
- package/src/runtime/application-jobs/application-ingress-record-owner.ts +41 -25
- package/src/runtime/application-jobs/application-job-queue-scope.ts +83 -22
- package/src/runtime/application-jobs/contracts.ts +16 -1
- package/src/runtime/backend/contracts/index.ts +92 -18
- package/src/runtime/backend/mesh-actor-session-node-adapter.ts +5 -3
- package/src/runtime/backend/mesh-completion-table.ts +160 -57
- package/src/runtime/backend/mesh-dispatch-pump.ts +237 -108
- package/src/runtime/backend/node/node-backend-adapter-support.ts +17 -8
- package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +12 -2
- package/src/runtime/backend/node/node-raw-binding-port.ts +148 -85
- package/src/runtime/backend/node/node-raw-mesh-backend.ts +315 -201
- package/src/runtime/backend/node/node-socket-backend-adapter.ts +26 -11
- package/src/runtime/backend/raw-binding-port.ts +7 -2
- package/src/runtime/backend/runtime-message.ts +6 -0
- package/src/runtime/backend/runtime-values.ts +1 -0
- package/src/runtime/channels/channel-clients.ts +132 -58
- package/src/runtime/channels/channel-dispatch-pipeline.ts +198 -114
- package/src/runtime/channels/channel-dispatch-services.ts +69 -1
- package/src/runtime/channels/channel-dispatchers.ts +136 -90
- package/src/runtime/channels/channel-envelope-inspection.ts +2 -16
- package/src/runtime/channels/channel-envelope.ts +225 -31
- package/src/runtime/channels/channel-outbound-operations.ts +22 -8
- package/src/runtime/channels/channel-runtime-lifecycle.ts +13 -13
- package/src/runtime/channels/channel-runtime-manager.ts +41 -17
- package/src/runtime/channels/channel-transports.ts +171 -112
- package/src/runtime/channels/client-server-location-runtime.ts +11 -10
- package/src/runtime/channels/dispatch-error-reporter.ts +4 -2
- package/src/runtime/channels/fanout-location-runtime.ts +17 -9
- package/src/runtime/channels/local-spot-route-transport.ts +3 -1
- package/src/runtime/channels/router-socket-spot-route-transport.ts +13 -4
- package/src/runtime/channels/source-spot-router.ts +8 -4
- package/src/runtime/channels/spot-node-route-transport.ts +8 -4
- package/src/runtime/channels/spot-route-bridge-transport.ts +6 -4
- package/src/runtime/channels/spot-route-dispatch-strategy.ts +47 -18
- package/src/runtime/diagnostics/flow-context.ts +20 -7
- package/src/runtime/diagnostics/index.ts +1 -7
- package/src/runtime/diagnostics/message-flow.ts +47 -9
- package/src/runtime/diagnostics/runtime-metrics.ts +12 -10
- package/src/runtime/execution/index.ts +40 -14
- package/src/runtime/execution/serial-execution-queue.ts +33 -4
- package/src/runtime/execution/state-lane.ts +7 -0
- package/src/runtime/foundation/actor-join-recovery-codec.ts +2 -2
- package/src/runtime/foundation/durable-service-request.ts +137 -0
- package/src/runtime/foundation/operation-identity.ts +5 -1
- package/src/runtime/foundation/operation-registry.ts +98 -20
- package/src/runtime/foundation/raw-service-mesh-runtime.ts +704 -336
- package/src/runtime/foundation/service-liveness-registry.ts +39 -0
- package/src/runtime/foundation/service-mailbox.ts +8 -0
- package/src/runtime/foundation/service-maintenance-runtime.ts +1 -8
- package/src/runtime/foundation/service-relocation-object-owner.ts +55 -36
- package/src/runtime/foundation/service-relocation-runtime.ts +25 -4
- package/src/runtime/foundation/service-runtime-contracts.ts +19 -2
- package/src/runtime/foundation/service-session-binding-ingress-port.ts +2 -1
- package/src/runtime/foundation/service-stateful-registry.ts +38 -35
- package/src/runtime/foundation/service-stateful-runtime.ts +732 -275
- package/src/runtime/foundation/service-stateful-wire-codec.ts +49 -16
- package/src/runtime/foundation/service-topology-registry.ts +91 -36
- package/src/runtime/foundation/service-wire-binary-primitives.ts +35 -12
- package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
- package/src/runtime/foundation/service-wire-m6a-codec.ts +231 -76
- package/src/runtime/handlers/handler-instance-scope.ts +67 -16
- package/src/runtime/host/actor-packet-relay.ts +113 -94
- package/src/runtime/host/actor-placement-coordinator.ts +31 -8
- package/src/runtime/host/actor-runtime-options-factory.ts +13 -2
- package/src/runtime/host/actor-transfer-runtime.ts +104 -430
- package/src/runtime/host/application-job-queue.ts +160 -41
- package/src/runtime/host/entry-actor-runtime.ts +4 -0
- package/src/runtime/host/index.ts +473 -271
- package/src/runtime/host/location-runtime-owner.ts +2 -6
- package/src/runtime/host/mesh-router-resolver.ts +13 -5
- package/src/runtime/host/remote-bound-session-relay.ts +88 -271
- package/src/runtime/host/route-mesh-runtime.ts +12 -6
- package/src/runtime/host/runtime-shutdown.ts +15 -4
- package/src/runtime/host/service-relocation-control.ts +11 -5
- package/src/runtime/host/service-relocation-host-runtime.ts +1092 -759
- package/src/runtime/host/spot-address-transport.ts +4 -2
- package/src/runtime/host/spot-runtime-options-factory.ts +20 -7
- package/src/runtime/host/user-spot-creation-coordinator.ts +41 -100
- package/src/runtime/locations/actor-location-claims.ts +52 -30
- package/src/runtime/locations/auto-connect-loop.ts +22 -14
- package/src/runtime/locations/auto-connect-reconciler.ts +0 -6
- package/src/runtime/locations/auto-connect-types.ts +0 -1
- package/src/runtime/locations/descriptor-publication.ts +7 -0
- package/src/runtime/locations/domain-store-contract.ts +5 -0
- package/src/runtime/locations/in-memory-authority-store.ts +85 -23
- package/src/runtime/locations/in-memory-location-store.ts +1 -12
- package/src/runtime/locations/index.ts +1 -0
- package/src/runtime/locations/lease-tracker.ts +2 -9
- package/src/runtime/locations/lifecycle.ts +8 -26
- package/src/runtime/locations/location-store-repository.ts +628 -152
- package/src/runtime/locations/relocation-blob.ts +75 -1
- package/src/runtime/locations/request-source-resolver.ts +138 -0
- package/src/runtime/locations/resolvers.ts +2 -2
- package/src/runtime/locations/runtime.ts +98 -64
- package/src/runtime/messaging/framework-json-v1.ts +5 -325
- package/src/runtime/messaging/packet-name.ts +5 -25
- package/src/runtime/messaging/payload-codec.ts +8 -11
- package/src/runtime/messaging/request-result.ts +62 -0
- package/src/runtime/messaging/submission-result.ts +5 -1
- package/src/runtime/protocol/service_wire_codec.generated.ts +218 -5
- package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +16 -13
- package/src/runtime/spots/formal-remote-actor-admission-registry.ts +46 -25
- package/src/runtime/spots/index.ts +389 -283
- package/src/runtime/spots/spot-activation-registry.ts +25 -13
- package/src/runtime/spots/spot-activation-state.ts +12 -19
- package/src/runtime/spots/spot-activation.ts +198 -96
- package/src/runtime/spots/spot-actor-admission-coordinator.ts +25 -55
- package/src/runtime/spots/spot-actor-membership.ts +0 -15
- package/src/runtime/spots/spot-actor-packet-dispatch.ts +56 -11
- package/src/runtime/spots/spot-actor-packet-drain.ts +9 -52
- package/src/runtime/spots/spot-entry-activation.ts +33 -21
- package/src/runtime/spots/spot-handler-registry.ts +56 -12
- package/src/runtime/spots/spot-manager-internal-contracts.ts +2 -2
- package/src/runtime/spots/spot-manager-public.ts +2 -2
- package/src/runtime/spots/spot-node-autoconnect.ts +28 -47
- package/src/runtime/spots/spot-node-runtime-manager.ts +197 -67
- package/src/runtime/spots/spot-outbound.ts +39 -19
- package/src/runtime/spots/spot-remote-codec.ts +9 -2
- package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +2 -1
- package/src/runtime/spots/spot-runtime-ports.ts +1 -1
- package/src/runtime/spots/spot-serial-executor.ts +97 -25
- package/src/runtime/spots/spot-serial-turn-executor.ts +22 -3
- package/src/runtime/spots/spot-subscription-dispatch.ts +1 -4
- package/src/runtime/spots/spot-timer.ts +418 -158
- package/src/runtime/streams/actor-session-binding-registry.ts +236 -64
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +16 -8
- package/src/runtime/streams/bound-actor-relay-sender.ts +23 -9
- package/src/runtime/streams/bound-session-service.ts +7 -10
- package/src/runtime/streams/index.ts +12 -6
- package/src/runtime/streams/managed-stream.ts +4 -2
- package/src/runtime/streams/native-fallback-bound-session.ts +14 -103
- package/src/runtime/streams/session-actor-coordinator.ts +39 -88
- package/src/runtime/streams/stream-binding-runtime-ports.ts +3 -9
- package/src/runtime/streams/stream-session-runtime.ts +13 -34
- package/src/runtime/workers/index.ts +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ApplicationJobOrigin, ApplicationJobPermitPort, ApplicationJobQueuePort } from '../application-jobs/contracts';
|
|
1
|
+
import type { ApplicationJobOrigin, ApplicationJobPermitPort, ApplicationJobReceiveRotationPort, ApplicationJobQueuePort } from '../application-jobs/contracts';
|
|
2
2
|
export type ApplicationJobQueueProfileValue = 'compact' | 'low_latency' | 'balanced' | 'throughput';
|
|
3
3
|
export interface ApplicationJobQueueOptions {
|
|
4
4
|
readonly profile?: ApplicationJobQueueProfileValue;
|
|
@@ -40,12 +40,37 @@ export declare function resolveApplicationJobQueueConfiguration(options?: Applic
|
|
|
40
40
|
export declare class ApplicationJobQueuePermit implements ApplicationJobPermitPort {
|
|
41
41
|
private readonly owner;
|
|
42
42
|
readonly origin: ApplicationJobOrigin;
|
|
43
|
+
private readonly storage?;
|
|
44
|
+
detachedForHandlerTurn: boolean;
|
|
43
45
|
private state;
|
|
44
|
-
constructor(owner: ApplicationJobQueue, origin: ApplicationJobOrigin);
|
|
46
|
+
constructor(owner: ApplicationJobQueue, origin: ApplicationJobOrigin, storage?: ApplicationJobReceiveRotation | undefined);
|
|
47
|
+
reserveStorage(): boolean;
|
|
48
|
+
reacquire(signal: AbortSignal): Promise<ApplicationJobPermitPort>;
|
|
49
|
+
releaseStorage(): void;
|
|
50
|
+
detachForHandlerTurn(): void;
|
|
45
51
|
markApplicationQueued(): void;
|
|
46
52
|
releaseBeforeHandler(): void;
|
|
47
53
|
releaseAfterInternalProcessing(): void;
|
|
48
|
-
|
|
54
|
+
takeReleaseState(): 'reserved' | 'queued' | undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Connection-owned storage; queue accounting remains with the host queue.
|
|
58
|
+
* The rotation budget is a count reserved from the queue. Only a record that
|
|
59
|
+
* is actually received takes a permit, from the idle storage stack, so a
|
|
60
|
+
* rotation that receives one record touches one permit.
|
|
61
|
+
*/
|
|
62
|
+
declare class ApplicationJobReceiveRotation implements ApplicationJobReceiveRotationPort {
|
|
63
|
+
private readonly owner;
|
|
64
|
+
private readonly capacity;
|
|
65
|
+
private readonly origin;
|
|
66
|
+
private readonly idle;
|
|
67
|
+
private granted;
|
|
68
|
+
private consumed;
|
|
69
|
+
constructor(owner: ApplicationJobQueue, capacity: number, origin: ApplicationJobOrigin);
|
|
70
|
+
reserve(): void;
|
|
71
|
+
take(): ApplicationJobQueuePermit | undefined;
|
|
72
|
+
releaseUnused(): void;
|
|
73
|
+
returnIdle(permit: ApplicationJobQueuePermit): void;
|
|
49
74
|
}
|
|
50
75
|
/**
|
|
51
76
|
* Host-instance owner of the ordinary-ingress queue permit lifecycle.
|
|
@@ -59,9 +84,10 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
|
|
|
59
84
|
private readonly loggerFailureReporter?;
|
|
60
85
|
private localWaiters;
|
|
61
86
|
private localBacklogLogged;
|
|
62
|
-
private
|
|
63
|
-
private
|
|
64
|
-
private
|
|
87
|
+
private readonly permitCounts;
|
|
88
|
+
private readonly limitCount;
|
|
89
|
+
private readonly pauseCount;
|
|
90
|
+
private readonly resumeCount;
|
|
65
91
|
private capacityWaitCount;
|
|
66
92
|
private capacityWaitDurationSeconds;
|
|
67
93
|
private metricsEpoch;
|
|
@@ -79,6 +105,9 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
|
|
|
79
105
|
private readonly receiveFlowController;
|
|
80
106
|
constructor(configuration: ApplicationJobQueueConfiguration, nowMs?: () => number, handlerStartGate?: (() => boolean) | undefined, loggerFailureReporter?: ((error: unknown) => void) | undefined);
|
|
81
107
|
shouldHoldPermitBeforeHandler(): boolean;
|
|
108
|
+
createReceiveRotation(capacity: number, origin: ApplicationJobOrigin): ApplicationJobReceiveRotationPort;
|
|
109
|
+
receiveRotationCapacity(capacity: number): number;
|
|
110
|
+
reserveReceiveRotation(count: number): void;
|
|
82
111
|
registerReceiveFlowTarget(identity: object, applyState: (state: ApplicationJobQueuePressureState) => void, failureSink?: (error: unknown) => void): boolean;
|
|
83
112
|
unregisterReceiveFlowTarget(identity: object): void;
|
|
84
113
|
acquire(signal: AbortSignal | undefined, origin: ApplicationJobOrigin): Promise<ApplicationJobQueuePermit>;
|
|
@@ -90,9 +119,12 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
|
|
|
90
119
|
onPressureStateChange(listener: (state: ApplicationJobQueuePressureState, sequence: bigint) => void): () => void;
|
|
91
120
|
recordFlowStateConfigFailure(): void;
|
|
92
121
|
markQueued(): void;
|
|
93
|
-
|
|
122
|
+
releasePermit(permit: ApplicationJobQueuePermit): void;
|
|
123
|
+
releaseUnusedReceiveRotation(count: number): void;
|
|
124
|
+
release(state: 'reserved' | 'queued', count?: number): void;
|
|
94
125
|
private limit;
|
|
95
126
|
private permitsInUse;
|
|
127
|
+
private reserveSupply;
|
|
96
128
|
private reserve;
|
|
97
129
|
private drainWaiters;
|
|
98
130
|
private cancel;
|
|
@@ -104,3 +136,4 @@ export declare class ApplicationJobQueue implements ApplicationJobQueuePort {
|
|
|
104
136
|
private cumulativePauseDurationAt;
|
|
105
137
|
}
|
|
106
138
|
export declare function nodeEffectiveProcessorCount(explicitExecutorMaximum?: number, runtimeConstrainedLogicalCount?: number, readSystemText?: (path: string) => string | undefined): bigint;
|
|
139
|
+
export {};
|
|
@@ -53,10 +53,35 @@ function resolveApplicationJobQueueConfiguration(options = {}, effectiveProcesso
|
|
|
53
53
|
class ApplicationJobQueuePermit {
|
|
54
54
|
owner;
|
|
55
55
|
origin;
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
storage;
|
|
57
|
+
detachedForHandlerTurn = false;
|
|
58
|
+
state;
|
|
59
|
+
constructor(owner, origin, storage) {
|
|
58
60
|
this.owner = owner;
|
|
59
61
|
this.origin = origin;
|
|
62
|
+
this.storage = storage;
|
|
63
|
+
this.state = storage === undefined ? 'reserved' : 'idle';
|
|
64
|
+
}
|
|
65
|
+
reserveStorage() {
|
|
66
|
+
if (this.state !== 'idle')
|
|
67
|
+
return false;
|
|
68
|
+
this.state = 'reserved';
|
|
69
|
+
this.detachedForHandlerTurn = false;
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
reacquire(signal) {
|
|
73
|
+
return this.owner.acquire(signal, this.origin);
|
|
74
|
+
}
|
|
75
|
+
releaseStorage() {
|
|
76
|
+
if (this.storage === undefined || this.state === 'idle')
|
|
77
|
+
return;
|
|
78
|
+
if (this.state !== 'released')
|
|
79
|
+
throw new Error('Reservation storage still owns queue capacity.');
|
|
80
|
+
this.state = 'idle';
|
|
81
|
+
this.storage.returnIdle(this);
|
|
82
|
+
}
|
|
83
|
+
detachForHandlerTurn() {
|
|
84
|
+
this.detachedForHandlerTurn = true;
|
|
60
85
|
}
|
|
61
86
|
markApplicationQueued() {
|
|
62
87
|
if (this.state !== 'reserved') {
|
|
@@ -68,19 +93,64 @@ class ApplicationJobQueuePermit {
|
|
|
68
93
|
releaseBeforeHandler() {
|
|
69
94
|
if (this.owner.shouldHoldPermitBeforeHandler())
|
|
70
95
|
return;
|
|
71
|
-
this.
|
|
96
|
+
this.owner.releasePermit(this);
|
|
72
97
|
}
|
|
73
98
|
releaseAfterInternalProcessing() {
|
|
74
|
-
this.
|
|
99
|
+
this.owner.releasePermit(this);
|
|
75
100
|
}
|
|
76
|
-
|
|
77
|
-
if (this.state === 'released')
|
|
78
|
-
return;
|
|
79
|
-
this.
|
|
101
|
+
takeReleaseState() {
|
|
102
|
+
if (this.state === 'released' || this.state === 'idle')
|
|
103
|
+
return undefined;
|
|
104
|
+
const state = this.state;
|
|
80
105
|
this.state = 'released';
|
|
106
|
+
return state;
|
|
81
107
|
}
|
|
82
108
|
}
|
|
83
109
|
exports.ApplicationJobQueuePermit = ApplicationJobQueuePermit;
|
|
110
|
+
/**
|
|
111
|
+
* Connection-owned storage; queue accounting remains with the host queue.
|
|
112
|
+
* The rotation budget is a count reserved from the queue. Only a record that
|
|
113
|
+
* is actually received takes a permit, from the idle storage stack, so a
|
|
114
|
+
* rotation that receives one record touches one permit.
|
|
115
|
+
*/
|
|
116
|
+
class ApplicationJobReceiveRotation {
|
|
117
|
+
owner;
|
|
118
|
+
capacity;
|
|
119
|
+
origin;
|
|
120
|
+
idle = [];
|
|
121
|
+
granted = 0;
|
|
122
|
+
consumed = 0;
|
|
123
|
+
constructor(owner, capacity, origin) {
|
|
124
|
+
this.owner = owner;
|
|
125
|
+
this.capacity = capacity;
|
|
126
|
+
this.origin = origin;
|
|
127
|
+
}
|
|
128
|
+
reserve() {
|
|
129
|
+
this.releaseUnused();
|
|
130
|
+
const count = this.owner.receiveRotationCapacity(this.capacity);
|
|
131
|
+
if (count === 0)
|
|
132
|
+
return;
|
|
133
|
+
this.granted = count;
|
|
134
|
+
this.owner.reserveReceiveRotation(count);
|
|
135
|
+
}
|
|
136
|
+
take() {
|
|
137
|
+
if (this.consumed === this.granted)
|
|
138
|
+
return undefined;
|
|
139
|
+
this.consumed++;
|
|
140
|
+
const permit = this.idle.pop() ?? new ApplicationJobQueuePermit(this.owner, this.origin, this);
|
|
141
|
+
permit.reserveStorage();
|
|
142
|
+
return permit;
|
|
143
|
+
}
|
|
144
|
+
releaseUnused() {
|
|
145
|
+
// Unconsumed budget never became a permit; it returns as a count.
|
|
146
|
+
this.owner.releaseUnusedReceiveRotation(this.granted - this.consumed);
|
|
147
|
+
this.granted = 0;
|
|
148
|
+
this.consumed = 0;
|
|
149
|
+
}
|
|
150
|
+
returnIdle(permit) {
|
|
151
|
+
this.idle.push(permit);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
84
154
|
/**
|
|
85
155
|
* Host-instance owner of the ordinary-ingress queue permit lifecycle.
|
|
86
156
|
* It reserves capacity before receive/claim and transfers released capacity
|
|
@@ -93,9 +163,11 @@ class ApplicationJobQueue {
|
|
|
93
163
|
loggerFailureReporter;
|
|
94
164
|
localWaiters = 0;
|
|
95
165
|
localBacklogLogged = false;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
166
|
+
// The contract bounds capacity by INT32_MAX; public snapshots remain bigint.
|
|
167
|
+
permitCounts = new Uint32Array(3 /* QueuePermitCount.Size */);
|
|
168
|
+
limitCount;
|
|
169
|
+
pauseCount;
|
|
170
|
+
resumeCount;
|
|
99
171
|
capacityWaitCount = 0n;
|
|
100
172
|
capacityWaitDurationSeconds = 0;
|
|
101
173
|
metricsEpoch = 0n;
|
|
@@ -116,11 +188,27 @@ class ApplicationJobQueue {
|
|
|
116
188
|
this.nowMs = nowMs;
|
|
117
189
|
this.handlerStartGate = handlerStartGate;
|
|
118
190
|
this.loggerFailureReporter = loggerFailureReporter;
|
|
191
|
+
this.limitCount = Number(configuration.effectiveMaxQueuedApplicationJobs);
|
|
192
|
+
this.pauseCount = Number(configuration.pausePermitCount);
|
|
193
|
+
this.resumeCount = Number(configuration.resumePermitCount);
|
|
119
194
|
this.receiveFlowController = new receive_flow_controller_1.ApplicationJobReceiveFlowController(this, (state) => state);
|
|
120
195
|
}
|
|
121
196
|
shouldHoldPermitBeforeHandler() {
|
|
122
197
|
return this.handlerStartGate?.() === true;
|
|
123
198
|
}
|
|
199
|
+
createReceiveRotation(capacity, origin) {
|
|
200
|
+
if (!Number.isSafeInteger(capacity) || capacity < 1)
|
|
201
|
+
throw new RangeError('Receive capacity must be positive.');
|
|
202
|
+
return new ApplicationJobReceiveRotation(this, capacity, origin);
|
|
203
|
+
}
|
|
204
|
+
receiveRotationCapacity(capacity) {
|
|
205
|
+
if (this.waiters.length !== 0)
|
|
206
|
+
return 0;
|
|
207
|
+
return Math.min(capacity, this.limitCount - this.permitsInUse());
|
|
208
|
+
}
|
|
209
|
+
reserveReceiveRotation(count) {
|
|
210
|
+
this.reserveSupply(count);
|
|
211
|
+
}
|
|
124
212
|
registerReceiveFlowTarget(identity, applyState, failureSink) {
|
|
125
213
|
this.unregisterReceiveFlowTarget(identity);
|
|
126
214
|
const target = {
|
|
@@ -173,7 +261,7 @@ class ApplicationJobQueue {
|
|
|
173
261
|
reject(abortReason(signal));
|
|
174
262
|
return undefined;
|
|
175
263
|
}
|
|
176
|
-
if (this.waiters.length === 0 && this.permitsInUse() < this.
|
|
264
|
+
if (this.waiters.length === 0 && this.permitsInUse() < this.limitCount) {
|
|
177
265
|
return this.reserve(origin);
|
|
178
266
|
}
|
|
179
267
|
new Promise((resolve, reject) => {
|
|
@@ -204,10 +292,10 @@ class ApplicationJobQueue {
|
|
|
204
292
|
const now = this.nowMs();
|
|
205
293
|
return Object.freeze({
|
|
206
294
|
...this.configuration,
|
|
207
|
-
reservedSupplyPermits: this.
|
|
208
|
-
queuedApplicationJobs: this.
|
|
209
|
-
permitsInUse,
|
|
210
|
-
peakPermitsInUse: this.
|
|
295
|
+
reservedSupplyPermits: BigInt(this.permitCounts[0 /* QueuePermitCount.Reserved */]),
|
|
296
|
+
queuedApplicationJobs: BigInt(this.permitCounts[1 /* QueuePermitCount.Queued */]),
|
|
297
|
+
permitsInUse: BigInt(permitsInUse),
|
|
298
|
+
peakPermitsInUse: BigInt(this.permitCounts[2 /* QueuePermitCount.Peak */]),
|
|
211
299
|
capacityWaiters: BigInt(this.waiters.length),
|
|
212
300
|
capacityWaitCount: this.capacityWaitCount,
|
|
213
301
|
capacityWaitDurationSeconds: this.capacityWaitDurationSeconds,
|
|
@@ -221,7 +309,7 @@ class ApplicationJobQueue {
|
|
|
221
309
|
}
|
|
222
310
|
resetMetrics() {
|
|
223
311
|
this.metricsEpoch += 1n;
|
|
224
|
-
this.
|
|
312
|
+
this.permitCounts[2 /* QueuePermitCount.Peak */] = this.permitsInUse();
|
|
225
313
|
this.capacityWaitCount = 0n;
|
|
226
314
|
this.capacityWaitDurationSeconds = 0;
|
|
227
315
|
this.runningTransitionCount = 0n;
|
|
@@ -248,25 +336,31 @@ class ApplicationJobQueue {
|
|
|
248
336
|
this.flowStateConfigFailureCount += 1n;
|
|
249
337
|
}
|
|
250
338
|
markQueued() {
|
|
251
|
-
if (this.
|
|
339
|
+
if (this.permitCounts[0 /* QueuePermitCount.Reserved */] === 0) {
|
|
252
340
|
throw new Error('Application job queue has no reserved supply permit.');
|
|
253
341
|
}
|
|
254
|
-
this.
|
|
255
|
-
|
|
342
|
+
this.permitCounts[0 /* QueuePermitCount.Reserved */] =
|
|
343
|
+
this.permitCounts[0 /* QueuePermitCount.Reserved */] - 1;
|
|
344
|
+
this.permitCounts[1 /* QueuePermitCount.Queued */] = this.permitCounts[1 /* QueuePermitCount.Queued */] + 1;
|
|
345
|
+
}
|
|
346
|
+
releasePermit(permit) {
|
|
347
|
+
const state = permit.takeReleaseState();
|
|
348
|
+
if (state !== undefined)
|
|
349
|
+
this.release(state);
|
|
350
|
+
}
|
|
351
|
+
releaseUnusedReceiveRotation(count) {
|
|
352
|
+
// Unconsumed budget still belongs to this receive round; no record has acquired it.
|
|
353
|
+
if (count === 0)
|
|
354
|
+
return;
|
|
355
|
+
this.release('reserved', count);
|
|
256
356
|
}
|
|
257
|
-
release(state) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
this.reservedSupplyPermits -= 1n;
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
if (this.queuedApplicationJobs === 0n) {
|
|
266
|
-
throw new Error('Application job queue queued permit accounting underflow.');
|
|
267
|
-
}
|
|
268
|
-
this.queuedApplicationJobs -= 1n;
|
|
357
|
+
release(state, count = 1) {
|
|
358
|
+
const index = state === 'reserved' ? 0 /* QueuePermitCount.Reserved */ : 1 /* QueuePermitCount.Queued */;
|
|
359
|
+
const available = this.permitCounts[index];
|
|
360
|
+
if (available < count) {
|
|
361
|
+
throw new Error(`Application job queue ${state} permit accounting underflow.`);
|
|
269
362
|
}
|
|
363
|
+
this.permitCounts[index] = available - count;
|
|
270
364
|
this.drainWaiters();
|
|
271
365
|
this.evaluatePressure();
|
|
272
366
|
}
|
|
@@ -274,19 +368,21 @@ class ApplicationJobQueue {
|
|
|
274
368
|
return this.configuration.effectiveMaxQueuedApplicationJobs;
|
|
275
369
|
}
|
|
276
370
|
permitsInUse() {
|
|
277
|
-
return this.
|
|
371
|
+
return (this.permitCounts[0 /* QueuePermitCount.Reserved */] + this.permitCounts[1 /* QueuePermitCount.Queued */]);
|
|
278
372
|
}
|
|
279
|
-
|
|
280
|
-
this.
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
this.peakPermitsInUse = current;
|
|
373
|
+
reserveSupply(count, evaluatePressure = true) {
|
|
374
|
+
this.permitCounts[0 /* QueuePermitCount.Reserved */] =
|
|
375
|
+
this.permitCounts[0 /* QueuePermitCount.Reserved */] + count;
|
|
376
|
+
this.permitCounts[2 /* QueuePermitCount.Peak */] = Math.max(this.permitCounts[2 /* QueuePermitCount.Peak */], this.permitsInUse());
|
|
284
377
|
if (evaluatePressure)
|
|
285
378
|
this.evaluatePressure();
|
|
379
|
+
}
|
|
380
|
+
reserve(origin, evaluatePressure = true) {
|
|
381
|
+
this.reserveSupply(1, evaluatePressure);
|
|
286
382
|
return new ApplicationJobQueuePermit(this, origin);
|
|
287
383
|
}
|
|
288
384
|
drainWaiters() {
|
|
289
|
-
while (this.waiters.length > 0 && this.permitsInUse() < this.
|
|
385
|
+
while (this.waiters.length > 0 && this.permitsInUse() < this.limitCount) {
|
|
290
386
|
const waiter = this.waiters.shift();
|
|
291
387
|
if (!waiter.active)
|
|
292
388
|
continue;
|
|
@@ -348,12 +444,11 @@ class ApplicationJobQueue {
|
|
|
348
444
|
}
|
|
349
445
|
}
|
|
350
446
|
evaluatePressure() {
|
|
351
|
-
const permitsInUse = this.permitsInUse();
|
|
352
447
|
const next = this.pressureStateValue === 'running'
|
|
353
|
-
? permitsInUse >= this.
|
|
448
|
+
? this.permitsInUse() >= this.pauseCount
|
|
354
449
|
? 'paused'
|
|
355
450
|
: 'running'
|
|
356
|
-
: permitsInUse <= this.
|
|
451
|
+
: this.permitsInUse() <= this.resumeCount
|
|
357
452
|
? 'running'
|
|
358
453
|
: 'paused';
|
|
359
454
|
if (next === this.pressureStateValue)
|
|
@@ -20,6 +20,7 @@ export declare class ZLinkEntryActorRuntimeService implements ZLinkEntryActorRun
|
|
|
20
20
|
private readonly binder;
|
|
21
21
|
constructor(options: ZLinkEntryActorRuntimeOptions);
|
|
22
22
|
resolveActor(actorId: string): ZLinkActor | undefined;
|
|
23
|
+
releaseMembers(meshName: string): Promise<void>;
|
|
23
24
|
commitActorTransaction(actor: ZLinkActor, onJoined: () => Promise<void>): Promise<void>;
|
|
24
25
|
destroyActor(node: ZLinkBackendSpotNode, entryNodeRid: ActorRef['nodeRid'], actor: ZLinkActor, signal?: AbortSignal): Promise<void>;
|
|
25
26
|
routePacket(actorId: string, parts: readonly Message[], returnResponse?: boolean, remoteBoundSessionTarget?: ZLinkRemoteBoundSessionTarget, fallbackActorRef?: ActorRef): Promise<{
|
|
@@ -16,6 +16,9 @@ class ZLinkEntryActorRuntimeService {
|
|
|
16
16
|
resolveActor(actorId) {
|
|
17
17
|
return this.options.actorManager()?.getState(actorId)?.actor;
|
|
18
18
|
}
|
|
19
|
+
async releaseMembers(meshName) {
|
|
20
|
+
await this.options.actorManager()?.releaseSpotActorMembers(meshName);
|
|
21
|
+
}
|
|
19
22
|
async commitActorTransaction(actor, onJoined) {
|
|
20
23
|
const state = this.options.actorManager()?.getState(actor.context.actorId);
|
|
21
24
|
const entryNode = this.options.spotNodeRuntime()?.primaryMeshNode;
|
|
@@ -30,7 +30,7 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
|
|
|
30
30
|
private readonly lifecycleSink?;
|
|
31
31
|
private executionState?;
|
|
32
32
|
private runtimeState;
|
|
33
|
-
private
|
|
33
|
+
private runtimeStatus?;
|
|
34
34
|
private readonly runtimeObservationSource;
|
|
35
35
|
private runtimeDeadline?;
|
|
36
36
|
private shutdownDeadline?;
|
|
@@ -91,10 +91,12 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
|
|
|
91
91
|
readonly routeMeshRuntime: ZLinkRouteMeshRuntime;
|
|
92
92
|
readonly clientServerRuntime: ZLinkClientServerRuntime;
|
|
93
93
|
readonly fanoutRuntime: ZLinkFanoutRuntime;
|
|
94
|
+
private readonly relocationStore?;
|
|
94
95
|
private readonly routeMeshCoordinator;
|
|
95
96
|
constructor(options: ZLinkFrameworkRuntimeHostOptions, internalOptions?: unknown);
|
|
96
97
|
get isStarted(): boolean;
|
|
97
98
|
get status(): ZLinkFrameworkRuntimeStatus;
|
|
99
|
+
private buildRuntimeStatus;
|
|
98
100
|
private listenerRecords;
|
|
99
101
|
getListenerStatus(kind: ZLinkListenerKind, name: string): ZLinkListenerStatus;
|
|
100
102
|
observe(signal?: AbortSignal): AsyncIterable<ZLinkObservedStatus<ZLinkFrameworkRuntimeStatus>>;
|
|
@@ -109,6 +111,7 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
|
|
|
109
111
|
private recordRelocationResult;
|
|
110
112
|
private completeTermination;
|
|
111
113
|
private setRuntimeState;
|
|
114
|
+
private publishCurrentRuntimeStatus;
|
|
112
115
|
private publishRuntimeStatus;
|
|
113
116
|
private notifyTopologyHostStateChanged;
|
|
114
117
|
private stopTopologyObservers;
|
|
@@ -133,6 +136,9 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
|
|
|
133
136
|
private stopCore;
|
|
134
137
|
private installOwnerLeaseRecoveryPublication;
|
|
135
138
|
private resumeOwnerLeaseOwnedWork;
|
|
139
|
+
private enterServing;
|
|
140
|
+
private publishOrStayPreparing;
|
|
141
|
+
private startStatefulAuthority;
|
|
136
142
|
private createStatefulAuthorityRoutes;
|
|
137
143
|
private requiresStatefulAuthorityRuntime;
|
|
138
144
|
private installLocationBackedAuthorities;
|
|
@@ -151,7 +157,6 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
|
|
|
151
157
|
private publishHostRelocated;
|
|
152
158
|
private publishHostDraining;
|
|
153
159
|
private cleanupOwnerForDrain;
|
|
154
|
-
private forceStopMesh;
|
|
155
160
|
private registerInstanceApplicationLifecycle;
|
|
156
161
|
setActorManager(actorManager: DefaultZLinkActorManager): void;
|
|
157
162
|
setSpotManager(spotManager: DefaultZLinkSpotManager): void;
|
|
@@ -163,7 +168,12 @@ export declare class ZLinkFrameworkRuntimeHost implements ZLinkFrameworkRuntimeL
|
|
|
163
168
|
private actorRuntimeOptionsFactory;
|
|
164
169
|
private createChannelRuntimeOptions;
|
|
165
170
|
private createSpotNodeRuntimeOptions;
|
|
171
|
+
private dispatchMeshNodeRecord;
|
|
172
|
+
private dispatchMeshNodePayload;
|
|
173
|
+
private completeFormalSourceLeave;
|
|
166
174
|
private dispatchMeshRecord;
|
|
175
|
+
private admitMeshDispatch;
|
|
176
|
+
private dispatchMeshActorBinding;
|
|
167
177
|
private submitLocalMeshRoute;
|
|
168
178
|
private dispatchMeshSpotRecord;
|
|
169
179
|
private createDispatchErrorReporter;
|