@zlink-systems/framework 0.21.0 → 0.22.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/Handlers/JsonContract.js +23 -11
- package/dist/contracts/Spots/SpotKind.js +16 -8
- 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 +24 -18
- package/dist/runtime/actors/actor-creation.js +4 -3
- package/dist/runtime/actors/actor-handoff.js +89 -92
- 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 +158 -124
- 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/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.js +116 -113
- 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 +10 -18
- 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 +43 -33
- 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.js +9 -7
- 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/index.js +38 -10
- package/dist/runtime/diagnostics/message-flow.js +47 -39
- 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 -23
- 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.js +136 -136
- 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-stateful-registry.js +24 -23
- package/dist/runtime/foundation/service-stateful-runtime.js +416 -438
- package/dist/runtime/foundation/service-stateful-wire-codec.js +95 -98
- package/dist/runtime/foundation/service-topology-registry.js +96 -95
- 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 +244 -227
- 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/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 +208 -219
- 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.js +23 -20
- package/dist/runtime/spots/spot-actor-packet-drain.js +12 -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 +74 -85
- 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 +16 -14
- 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 +1 -2
- 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 +5 -5
- package/dist/runtime/spots/spot-timer.js +25 -29
- package/dist/runtime/streams/actor-session-binding-registry.js +98 -107
- package/dist/runtime/streams/actor-session-lifecycle-coordinator.js +3 -1
- package/dist/runtime/streams/bound-actor-relay-sender.js +18 -16
- package/dist/runtime/streams/bound-session-service.js +8 -9
- package/dist/runtime/streams/index.js +20 -19
- package/dist/runtime/streams/managed-stream.js +32 -30
- package/dist/runtime/streams/native-fallback-bound-session.js +21 -17
- package/dist/runtime/streams/protocol.js +29 -18
- package/dist/runtime/streams/session-actor-coordinator.js +34 -37
- package/dist/runtime/streams/session-context.js +30 -28
- 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.js +11 -5
- package/dist/runtime/streams/stream-session-runtime.js +70 -66
- package/dist/runtime/workers/index.js +15 -4
- package/package.json +2 -2
- 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 +1 -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 +0 -1
- 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 +138 -130
- 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 +5 -4
- 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 +351 -320
- 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 +73 -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 +335 -383
- 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 +40 -42
- 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 +215 -197
- 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 +11 -8
- 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/flow-context.ts +12 -3
- 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 +95 -76
- 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 -51
- 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 +312 -385
- 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 +1 -4
- package/src/runtime/foundation/service-stateful-registry.ts +69 -59
- package/src/runtime/foundation/service-stateful-runtime.ts +1174 -1112
- package/src/runtime/foundation/service-stateful-wire-codec.ts +318 -270
- package/src/runtime/foundation/service-topology-registry.ts +157 -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 +1 -1
- 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 +593 -563
- 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 +184 -153
- package/src/runtime/spots/spot-actor-packet-drain.ts +54 -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 +230 -221
- 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 +128 -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 +11 -17
- 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 +56 -46
- package/src/runtime/spots/spot-timer.ts +98 -91
- package/src/runtime/streams/actor-session-binding-registry.ts +277 -235
- package/src/runtime/streams/actor-session-binding-runtime-owner.ts +7 -4
- package/src/runtime/streams/actor-session-lifecycle-coordinator.ts +3 -1
- package/src/runtime/streams/bound-actor-relay-sender.ts +53 -51
- package/src/runtime/streams/bound-session-response-target.ts +29 -8
- package/src/runtime/streams/bound-session-service.ts +39 -39
- package/src/runtime/streams/index.ts +176 -100
- package/src/runtime/streams/managed-stream.ts +98 -87
- package/src/runtime/streams/native-fallback-bound-session.ts +57 -52
- package/src/runtime/streams/protocol.ts +73 -43
- package/src/runtime/streams/session-actor-coordinator.ts +97 -89
- package/src/runtime/streams/session-calls.ts +2 -8
- package/src/runtime/streams/session-context.ts +66 -48
- 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 +55 -38
- package/src/runtime/streams/stream-session-runtime.ts +268 -210
- package/src/runtime/workers/index.ts +68 -29
|
@@ -18,9 +18,9 @@ class ZLinkRouteMemberSnapshot {
|
|
|
18
18
|
}
|
|
19
19
|
observeTermination(channel, routingId, endpoint) {
|
|
20
20
|
const connected = this.connected.get(channel);
|
|
21
|
-
const disconnected = routingId
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const disconnected = routingId ??
|
|
22
|
+
this.memberByEndpoint.get(channel)?.get(endpoint) ??
|
|
23
|
+
(connected?.size === 1 ? connected.values().next().value : undefined);
|
|
24
24
|
if (disconnected === undefined)
|
|
25
25
|
return undefined;
|
|
26
26
|
getOrCreateSet(this.members, channel).add(disconnected);
|
|
@@ -11,7 +11,9 @@ class ZLinkSourceSpotRouter {
|
|
|
11
11
|
}
|
|
12
12
|
async request(sourceSpot, target, packetName, request, timeoutMs, signal) {
|
|
13
13
|
(0, abort_1.throwIfAborted)(signal);
|
|
14
|
-
const parts = [
|
|
14
|
+
const parts = [
|
|
15
|
+
(0, spot_direct_envelope_1.encodeSpotDirectEnvelope)(1 /* ZLinkChannelMessageKind.Request */, target.routerChannelId, packetName, request)
|
|
16
|
+
];
|
|
15
17
|
const operation = sourceSpot.requestToSpot(target.targetNodeRid, target.spotId, parts, timeoutMs ?? this.defaultRequestTimeoutMs);
|
|
16
18
|
const replyParts = await (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
17
19
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
@@ -26,7 +28,9 @@ class ZLinkSourceSpotRouter {
|
|
|
26
28
|
}
|
|
27
29
|
async send(sourceSpot, target, packetName, message, signal, metadata, timeoutMs) {
|
|
28
30
|
(0, abort_1.throwIfAborted)(signal);
|
|
29
|
-
const parts = [
|
|
31
|
+
const parts = [
|
|
32
|
+
(0, spot_direct_envelope_1.encodeSpotDirectEnvelope)(3 /* ZLinkChannelMessageKind.Command */, target.routerChannelId, packetName, message, metadata)
|
|
33
|
+
];
|
|
30
34
|
try {
|
|
31
35
|
void timeoutMs;
|
|
32
36
|
await (0, abort_1.awaitWithAbort)(sourceSpot.sendToSpot(target.targetNodeRid, target.spotId, parts), signal);
|
|
@@ -26,7 +26,9 @@ class ZLinkSpotRouteBridgeTransport {
|
|
|
26
26
|
}
|
|
27
27
|
async request(target, parts, codecs, timeoutMs, signal) {
|
|
28
28
|
const bridge = this.requireBridge(target.routerChannelId);
|
|
29
|
-
const operation = (0, channel_multipart_1.appendParts)(bridge.request(target.routerChannelId, target.targetNodeRid, target.spotId), parts)
|
|
29
|
+
const operation = (0, channel_multipart_1.appendParts)(bridge.request(target.routerChannelId, target.targetNodeRid, target.spotId), parts)
|
|
30
|
+
.timeout(timeoutMs ?? 0)
|
|
31
|
+
.submit();
|
|
30
32
|
const replyParts = await (0, abort_1.awaitWithAbort)(operation, signal, () => {
|
|
31
33
|
void operation.then(channel_envelope_1.closeMessages, () => undefined);
|
|
32
34
|
});
|
|
@@ -40,7 +42,8 @@ class ZLinkSpotRouteBridgeTransport {
|
|
|
40
42
|
}
|
|
41
43
|
requestRaw(target, request, timeoutMs, signal) {
|
|
42
44
|
const bridge = this.requireBridge(target.routerChannelId);
|
|
43
|
-
const operation = bridge
|
|
45
|
+
const operation = bridge
|
|
46
|
+
.request(target.routerChannelId, target.targetNodeRid, target.spotId)
|
|
44
47
|
.message(request)
|
|
45
48
|
.timeout(timeoutMs ?? this.defaultRequestTimeoutMs ?? 0)
|
|
46
49
|
.submit();
|
|
@@ -54,8 +54,8 @@ class ZLinkSpotRouteDispatchStrategy {
|
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
const parts = (0, channel_envelope_1.encodeChannelEnvelopeParts)(3 /* ZLinkChannelMessageKind.Command */, spotRouteTarget.routerChannelId, packetName, message, undefined, undefined, (0, channel_framework_packets_1.codecsForFrameworkPacket)(packetName, this.options.codecs), undefined, this.options.flowCreationEnabled?.() ?? true, metadata);
|
|
57
|
-
if (this.targets.hasNamedSpotNode(spotRouteTarget.routerChannelId)
|
|
58
|
-
|
|
57
|
+
if (this.targets.hasNamedSpotNode(spotRouteTarget.routerChannelId) &&
|
|
58
|
+
(await this.spotNodeTransport.send(spotRouteTarget, parts, signal))) {
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
if (this.bridgeTransport.has(spotRouteTarget.routerChannelId)) {
|
|
@@ -15,8 +15,7 @@ class ZLinkSpotRouteTargetResolver {
|
|
|
15
15
|
if (named?.router !== undefined) {
|
|
16
16
|
return this.spotNodes?.get(routerChannelId);
|
|
17
17
|
}
|
|
18
|
-
const channelOwners = [...this.registration.spotNodes.entries()]
|
|
19
|
-
.filter(([, node]) => Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, routerChannelId));
|
|
18
|
+
const channelOwners = [...this.registration.spotNodes.entries()].filter(([, node]) => Object.prototype.hasOwnProperty.call(node.meshChannels ?? {}, routerChannelId));
|
|
20
19
|
if (channelOwners.length === 1) {
|
|
21
20
|
return this.spotNodes?.get(channelOwners[0][0]);
|
|
22
21
|
}
|
|
@@ -38,7 +37,8 @@ class ZLinkSpotRouteTargetResolver {
|
|
|
38
37
|
}
|
|
39
38
|
localRouteNode(target) {
|
|
40
39
|
const routeNode = this.routeNode(target.routerChannelId) ?? this.spotNodes?.get(target.routerChannelId);
|
|
41
|
-
return routeNode !== undefined &&
|
|
40
|
+
return routeNode !== undefined &&
|
|
41
|
+
routingIdsMatchSpotRoute(routeNode.routingId, target.targetNodeRid)
|
|
42
42
|
? routeNode
|
|
43
43
|
: undefined;
|
|
44
44
|
}
|
|
@@ -50,8 +50,8 @@ class ZLinkSpotRouteTargetResolver {
|
|
|
50
50
|
return (routeBridgeNode ?? this.spotNodes?.get(routerChannelId))?.entrySpot();
|
|
51
51
|
}
|
|
52
52
|
canRouteChannel(routerChannelId) {
|
|
53
|
-
return this.registration.routeChannels.has(routerChannelId)
|
|
54
|
-
|
|
53
|
+
return (this.registration.routeChannels.has(routerChannelId) ||
|
|
54
|
+
this.spotNodeRouter(routerChannelId) !== undefined);
|
|
55
55
|
}
|
|
56
56
|
canRoutePacketChannel(routerChannelId) {
|
|
57
57
|
if (this.spotNodes?.has(routerChannelId) ?? false) {
|
|
@@ -72,7 +72,7 @@ function routingIdsMatchSpotRoute(left, right) {
|
|
|
72
72
|
return false;
|
|
73
73
|
}
|
|
74
74
|
const rightCandidates = spotRouteRoutingIdCandidates(right);
|
|
75
|
-
return [...spotRouteRoutingIdCandidates(left)].some(candidate => rightCandidates.has(candidate));
|
|
75
|
+
return [...spotRouteRoutingIdCandidates(left)].some((candidate) => rightCandidates.has(candidate));
|
|
76
76
|
}
|
|
77
77
|
function spotRouteRoutingIdCandidates(routingId) {
|
|
78
78
|
const candidates = new Set();
|
|
@@ -62,9 +62,8 @@ class ZLinkSocketMonitoringSource {
|
|
|
62
62
|
this.monitor = monitor;
|
|
63
63
|
this.publisher = publisher;
|
|
64
64
|
validateSourceName(registration.sourceName);
|
|
65
|
-
this.enabledEvents =
|
|
66
|
-
? undefined
|
|
67
|
-
: new Set(registration.events);
|
|
65
|
+
this.enabledEvents =
|
|
66
|
+
registration.events === undefined ? undefined : new Set(registration.events);
|
|
68
67
|
}
|
|
69
68
|
start() {
|
|
70
69
|
this.monitor.onEvent((event) => {
|
|
@@ -185,7 +184,12 @@ class ZLinkLocationMonitoringEventEmitter {
|
|
|
185
184
|
constructor(registration, publisher) {
|
|
186
185
|
this.registration = registration;
|
|
187
186
|
this.publisher = publisher;
|
|
188
|
-
for (const source of [
|
|
187
|
+
for (const source of [
|
|
188
|
+
registration.peer,
|
|
189
|
+
registration.spot,
|
|
190
|
+
registration.actor,
|
|
191
|
+
registration.route
|
|
192
|
+
]) {
|
|
189
193
|
if (source !== undefined) {
|
|
190
194
|
validateSourceName(source.sourceName);
|
|
191
195
|
}
|
|
@@ -232,28 +236,48 @@ class ZLinkLocationMonitoringEventEmitter {
|
|
|
232
236
|
if (registration === undefined) {
|
|
233
237
|
return;
|
|
234
238
|
}
|
|
235
|
-
this.publish({
|
|
239
|
+
this.publish({
|
|
240
|
+
sourceName: registration.sourceName,
|
|
241
|
+
timestamp: new Date(),
|
|
242
|
+
event,
|
|
243
|
+
...payload
|
|
244
|
+
});
|
|
236
245
|
}
|
|
237
246
|
publishSpotLocation(event, payload) {
|
|
238
247
|
const registration = this.registration.spot;
|
|
239
248
|
if (registration === undefined) {
|
|
240
249
|
return;
|
|
241
250
|
}
|
|
242
|
-
this.publish({
|
|
251
|
+
this.publish({
|
|
252
|
+
sourceName: registration.sourceName,
|
|
253
|
+
timestamp: new Date(),
|
|
254
|
+
event,
|
|
255
|
+
...payload
|
|
256
|
+
});
|
|
243
257
|
}
|
|
244
258
|
publishActor(event, payload) {
|
|
245
259
|
const registration = this.registration.actor;
|
|
246
260
|
if (registration === undefined) {
|
|
247
261
|
return;
|
|
248
262
|
}
|
|
249
|
-
this.publish({
|
|
263
|
+
this.publish({
|
|
264
|
+
sourceName: registration.sourceName,
|
|
265
|
+
timestamp: new Date(),
|
|
266
|
+
event,
|
|
267
|
+
...payload
|
|
268
|
+
});
|
|
250
269
|
}
|
|
251
270
|
publishRoute(event, payload) {
|
|
252
271
|
const registration = this.registration.route;
|
|
253
272
|
if (registration === undefined) {
|
|
254
273
|
return;
|
|
255
274
|
}
|
|
256
|
-
this.publish({
|
|
275
|
+
this.publish({
|
|
276
|
+
sourceName: registration.sourceName,
|
|
277
|
+
timestamp: new Date(),
|
|
278
|
+
event,
|
|
279
|
+
...payload
|
|
280
|
+
});
|
|
257
281
|
}
|
|
258
282
|
publish(event) {
|
|
259
283
|
if (this.publisher === undefined) {
|
|
@@ -311,14 +335,18 @@ async function publishLocationRuntimeChange(publisher, sourceName, event, snapsh
|
|
|
311
335
|
? { ...base, event, status: snapshot }
|
|
312
336
|
: event === internal_event_contracts_1.ZLinkLocationRuntimeEventKind.TopologyChanged
|
|
313
337
|
? { ...base, event, topology: snapshot }
|
|
314
|
-
: {
|
|
338
|
+
: {
|
|
339
|
+
...base,
|
|
340
|
+
event: internal_event_contracts_1.ZLinkLocationRuntimeEventKind.ServiceSummaryChanged,
|
|
341
|
+
serviceSummary: snapshot
|
|
342
|
+
};
|
|
315
343
|
await publisher.publish(runtimeEvent);
|
|
316
344
|
}
|
|
317
345
|
function startOutsideStateLane(work) {
|
|
318
346
|
return detachedStateLaneResource.runInAsyncScope(work);
|
|
319
347
|
}
|
|
320
348
|
function stableSnapshot(value) {
|
|
321
|
-
return JSON.stringify(value, (_key, item) => typeof item === 'bigint' ? item.toString() : item);
|
|
349
|
+
return JSON.stringify(value, (_key, item) => (typeof item === 'bigint' ? item.toString() : item));
|
|
322
350
|
}
|
|
323
351
|
function validateSourceName(sourceName) {
|
|
324
352
|
if (sourceName.trim().length === 0) {
|
|
@@ -34,10 +34,10 @@ function createDiagnosticsContext(dispatch, _providerResolver, liveMode) {
|
|
|
34
34
|
function requiredMode(outcome, result) {
|
|
35
35
|
// succeeded가 아닌 terminal은 Errors level에서도 보여야 한다 — 기록 범위 설정
|
|
36
36
|
// 절의 level 규칙.
|
|
37
|
-
return outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
return outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped ||
|
|
38
|
+
outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured ||
|
|
39
|
+
outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Error ||
|
|
40
|
+
(result !== undefined && result !== 'succeeded')
|
|
41
41
|
? 'errors'
|
|
42
42
|
: 'normal';
|
|
43
43
|
}
|
|
@@ -46,7 +46,9 @@ function flowIfEnabled(flow, outcome, result, flowId, sourceMeshGeneration) {
|
|
|
46
46
|
return undefined;
|
|
47
47
|
return typeof flow.begin === 'function'
|
|
48
48
|
? flow.begin(outcome, result, flowId, sourceMeshGeneration)
|
|
49
|
-
: flow.accepts(outcome)
|
|
49
|
+
: flow.accepts(outcome)
|
|
50
|
+
? flow
|
|
51
|
+
: undefined;
|
|
50
52
|
}
|
|
51
53
|
class ZLinkMessageFlowTracer {
|
|
52
54
|
ctx;
|
|
@@ -79,17 +81,17 @@ class ZLinkMessageFlowTracer {
|
|
|
79
81
|
}
|
|
80
82
|
switch (mode) {
|
|
81
83
|
case 'errors':
|
|
82
|
-
return this.errorsTracePoint ??= {
|
|
83
|
-
trace: flowInput => this.traceAcceptedAtMode(flowInput, 'errors')
|
|
84
|
-
};
|
|
84
|
+
return (this.errorsTracePoint ??= {
|
|
85
|
+
trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'errors')
|
|
86
|
+
});
|
|
85
87
|
case 'normal':
|
|
86
|
-
return this.normalTracePoint ??= {
|
|
87
|
-
trace: flowInput => this.traceAcceptedAtMode(flowInput, 'normal')
|
|
88
|
-
};
|
|
88
|
+
return (this.normalTracePoint ??= {
|
|
89
|
+
trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'normal')
|
|
90
|
+
});
|
|
89
91
|
case 'detailed':
|
|
90
|
-
return this.detailedTracePoint ??= {
|
|
91
|
-
trace: flowInput => this.traceAcceptedAtMode(flowInput, 'detailed')
|
|
92
|
-
};
|
|
92
|
+
return (this.detailedTracePoint ??= {
|
|
93
|
+
trace: (flowInput) => this.traceAcceptedAtMode(flowInput, 'detailed')
|
|
94
|
+
});
|
|
93
95
|
case 'off':
|
|
94
96
|
return undefined;
|
|
95
97
|
}
|
|
@@ -99,8 +101,8 @@ class ZLinkMessageFlowTracer {
|
|
|
99
101
|
}
|
|
100
102
|
trace(flowInput) {
|
|
101
103
|
const effectiveMode = effectiveMessageFlow(this.ctx);
|
|
102
|
-
if (contracts_1.MESSAGE_FLOW_MODE_RANK[effectiveMode]
|
|
103
|
-
|
|
104
|
+
if (contracts_1.MESSAGE_FLOW_MODE_RANK[effectiveMode] <
|
|
105
|
+
contracts_1.MESSAGE_FLOW_MODE_RANK[requiredMode(flowInput.outcome, flowInput.result)])
|
|
104
106
|
return;
|
|
105
107
|
const ambient = (0, flow_context_1.currentFlowContext)();
|
|
106
108
|
const flowId = flowInput.flowId ?? ambient?.flowId;
|
|
@@ -126,11 +128,11 @@ class ZLinkMessageFlowTracer {
|
|
|
126
128
|
effectiveMode === 'detailed' ? flow.durationSeconds : undefined));
|
|
127
129
|
}
|
|
128
130
|
acceptsSample(outcome, result, flowId, sourceMeshGeneration) {
|
|
129
|
-
return outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
return (outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped ||
|
|
132
|
+
outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured ||
|
|
133
|
+
outcome === ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Error ||
|
|
134
|
+
(result !== undefined && result !== 'succeeded') ||
|
|
135
|
+
this.sample(flowId, sourceMeshGeneration));
|
|
134
136
|
}
|
|
135
137
|
get tracedCount() {
|
|
136
138
|
return this.tracedEvents;
|
|
@@ -144,8 +146,8 @@ class ZLinkMessageFlowTracer {
|
|
|
144
146
|
return true;
|
|
145
147
|
if (rate <= 0.0)
|
|
146
148
|
return false;
|
|
147
|
-
const samplingKey = flowId
|
|
148
|
-
|
|
149
|
+
const samplingKey = flowId ??
|
|
150
|
+
`${sourceMeshGeneration ?? this.ctx.sourceMeshGeneration}:${this.nextSamplingSequence()}`;
|
|
149
151
|
return hashFlowId(samplingKey) / 0x1_0000_0000 < rate;
|
|
150
152
|
}
|
|
151
153
|
nextSamplingSequence() {
|
|
@@ -158,9 +160,7 @@ class ZLinkMessageFlowTracer {
|
|
|
158
160
|
}
|
|
159
161
|
publishToLogger(record) {
|
|
160
162
|
try {
|
|
161
|
-
const severityNumber = record.eventId === 'zlink.dispatch_error'
|
|
162
|
-
? api_logs_1.SeverityNumber.ERROR
|
|
163
|
-
: api_logs_1.SeverityNumber.INFO;
|
|
163
|
+
const severityNumber = record.eventId === 'zlink.dispatch_error' ? api_logs_1.SeverityNumber.ERROR : api_logs_1.SeverityNumber.INFO;
|
|
164
164
|
telemetryLogger.emit({
|
|
165
165
|
eventName: record.eventId,
|
|
166
166
|
timestamp: record.timestamp,
|
|
@@ -232,9 +232,7 @@ function toTelemetryRecord(flow, messageSizeBytes, durationSeconds) {
|
|
|
232
232
|
targetRid: flow.targetRid,
|
|
233
233
|
serverRid: flow.serverRid,
|
|
234
234
|
flowId: flow.flowId,
|
|
235
|
-
flowOrigin: flow.flowOrigin === undefined
|
|
236
|
-
? undefined
|
|
237
|
-
: FLOW_ORIGIN_TELEMETRY_VALUES[flow.flowOrigin],
|
|
235
|
+
flowOrigin: flow.flowOrigin === undefined ? undefined : FLOW_ORIGIN_TELEMETRY_VALUES[flow.flowOrigin],
|
|
238
236
|
spotId: flow.spotId,
|
|
239
237
|
instanceSpotType: flow.instanceSpotType,
|
|
240
238
|
activationState: flow.activationState,
|
|
@@ -336,16 +334,26 @@ function compactAttributes(values) {
|
|
|
336
334
|
}
|
|
337
335
|
function messageFlowPhase(outcome) {
|
|
338
336
|
switch (outcome) {
|
|
339
|
-
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Received:
|
|
340
|
-
|
|
341
|
-
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.
|
|
342
|
-
|
|
343
|
-
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.
|
|
344
|
-
|
|
345
|
-
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.
|
|
346
|
-
|
|
347
|
-
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.
|
|
348
|
-
|
|
337
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Received:
|
|
338
|
+
return 'received';
|
|
339
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Admitted:
|
|
340
|
+
return 'admitted';
|
|
341
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dispatched:
|
|
342
|
+
return 'dispatched';
|
|
343
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Completed:
|
|
344
|
+
return 'completed';
|
|
345
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Replied:
|
|
346
|
+
return 'replied';
|
|
347
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Dropped:
|
|
348
|
+
return 'dropped';
|
|
349
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Sent:
|
|
350
|
+
return 'sent';
|
|
351
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.ReplyReceived:
|
|
352
|
+
return 'reply_received';
|
|
353
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Backpressured:
|
|
354
|
+
return 'backpressured';
|
|
355
|
+
case ZLinkDispatchOptions_1.ZLinkRuntimeMessageFlowOutcome.Error:
|
|
356
|
+
return undefined;
|
|
349
357
|
}
|
|
350
358
|
}
|
|
351
359
|
function messageFlowOutcome(outcome) {
|
|
@@ -100,10 +100,10 @@ class MetricRegistry {
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
observe(name, result) {
|
|
103
|
-
if (name === 'zlink.host.application_job_queue.pressure_state'
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
if (name === 'zlink.host.application_job_queue.pressure_state' ||
|
|
104
|
+
name === 'zlink.host.application_job_queue.pressure_transitions' ||
|
|
105
|
+
name === 'zlink.host.application_job_queue.pause_duration' ||
|
|
106
|
+
name === 'zlink.host.application_job_queue.flow_state_config_failures') {
|
|
107
107
|
for (const provider of this.applicationJobQueuePressures) {
|
|
108
108
|
try {
|
|
109
109
|
this.observeApplicationJobQueuePressure(name, provider(), result);
|
|
@@ -114,8 +114,8 @@ class MetricRegistry {
|
|
|
114
114
|
}
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
|
-
if (name.startsWith('zlink.host.core_hwm.')
|
|
118
|
-
|
|
117
|
+
if (name.startsWith('zlink.host.core_hwm.') ||
|
|
118
|
+
name.startsWith('zlink.host.application_job_queue.')) {
|
|
119
119
|
for (const provider of this.hostCapacities) {
|
|
120
120
|
try {
|
|
121
121
|
this.observeHostCapacity(name, provider(), result);
|
|
@@ -215,13 +215,22 @@ class MetricRegistry {
|
|
|
215
215
|
result.observe(nonNegative(snapshot.readyPeers), peer);
|
|
216
216
|
else if (name === 'zlink.mesh_node.channels.ready_members') {
|
|
217
217
|
for (const channel of snapshot.channels) {
|
|
218
|
-
result.observe(nonNegative(channel.readyMembers), {
|
|
218
|
+
result.observe(nonNegative(channel.readyMembers), {
|
|
219
|
+
...mesh,
|
|
220
|
+
channel_name: channel.channelName
|
|
221
|
+
});
|
|
219
222
|
}
|
|
220
223
|
}
|
|
221
224
|
else if (name.startsWith('zlink.object.capacity.')) {
|
|
222
225
|
const field = metricSuffix(name);
|
|
223
|
-
result.observe(capacityValue(snapshot.actorCapacity, field), {
|
|
224
|
-
|
|
226
|
+
result.observe(capacityValue(snapshot.actorCapacity, field), {
|
|
227
|
+
...mesh,
|
|
228
|
+
capacity_scope: 'actor'
|
|
229
|
+
});
|
|
230
|
+
result.observe(capacityValue(snapshot.spotCapacity, field), {
|
|
231
|
+
...mesh,
|
|
232
|
+
capacity_scope: 'spot'
|
|
233
|
+
});
|
|
225
234
|
}
|
|
226
235
|
else if (name.startsWith('zlink.spot.type.capacity.')) {
|
|
227
236
|
const field = metricSuffix(name);
|
|
@@ -80,7 +80,9 @@ class RuntimeEventQueue {
|
|
|
80
80
|
this.abortCleanup = () => signal.removeEventListener('abort', onAbort);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
[Symbol.asyncIterator]() {
|
|
83
|
+
[Symbol.asyncIterator]() {
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
84
86
|
next() {
|
|
85
87
|
if (this.waitersCount === 0) {
|
|
86
88
|
const retained = this.takeRetained();
|
|
@@ -97,7 +99,7 @@ class RuntimeEventQueue {
|
|
|
97
99
|
return Promise.resolve({ done: true, value: undefined });
|
|
98
100
|
}
|
|
99
101
|
}
|
|
100
|
-
return new Promise(resolve => {
|
|
102
|
+
return new Promise((resolve) => {
|
|
101
103
|
this.waiters.push(resolve);
|
|
102
104
|
this.waitersCount += 1;
|
|
103
105
|
if (this.hasRetained() || this.closed || this.completeWhenDrained) {
|
|
@@ -205,9 +207,8 @@ class RuntimeEventQueue {
|
|
|
205
207
|
takeRetained() {
|
|
206
208
|
const terminal = this.peekTerminal();
|
|
207
209
|
const intermediate = this.oldestIntermediate();
|
|
208
|
-
if (terminal !== undefined
|
|
209
|
-
|
|
210
|
-
|| terminal.publishOrdinal <= intermediate.publishOrdinal)) {
|
|
210
|
+
if (terminal !== undefined &&
|
|
211
|
+
(intermediate === undefined || terminal.publishOrdinal <= intermediate.publishOrdinal)) {
|
|
211
212
|
return this.takeTerminal();
|
|
212
213
|
}
|
|
213
214
|
if (intermediate === undefined)
|
|
@@ -216,9 +217,7 @@ class RuntimeEventQueue {
|
|
|
216
217
|
return intermediate;
|
|
217
218
|
}
|
|
218
219
|
peekTerminal() {
|
|
219
|
-
return this.terminalCount === 0
|
|
220
|
-
? undefined
|
|
221
|
-
: this.terminalFifo[this.terminalHead];
|
|
220
|
+
return this.terminalCount === 0 ? undefined : this.terminalFifo[this.terminalHead];
|
|
222
221
|
}
|
|
223
222
|
oldestIntermediate() {
|
|
224
223
|
let oldest;
|
|
@@ -264,8 +263,7 @@ class RuntimeEventQueue {
|
|
|
264
263
|
this.terminalFifo.length = 0;
|
|
265
264
|
this.terminalHead = 0;
|
|
266
265
|
}
|
|
267
|
-
else if (this.terminalHead >= 1024
|
|
268
|
-
&& this.terminalHead * 2 >= this.terminalFifo.length) {
|
|
266
|
+
else if (this.terminalHead >= 1024 && this.terminalHead * 2 >= this.terminalFifo.length) {
|
|
269
267
|
this.terminalFifo.splice(0, this.terminalHead);
|
|
270
268
|
this.terminalHead = 0;
|
|
271
269
|
}
|
|
@@ -27,9 +27,12 @@ class ZLinkClientServerRuntimeProjection {
|
|
|
27
27
|
const targets = topology.descriptors.map((descriptor) => ({
|
|
28
28
|
nodeRid: descriptor.serverRoutingId,
|
|
29
29
|
weight: descriptor.weight,
|
|
30
|
-
state: descriptor.state === 'serving'
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
state: descriptor.state === 'serving'
|
|
31
|
+
? contracts_1.ZLinkPeerState.Ready
|
|
32
|
+
: descriptor.state === 'retiring'
|
|
33
|
+
? contracts_1.ZLinkPeerState.Draining
|
|
34
|
+
: descriptor.state === 'preparing'
|
|
35
|
+
? contracts_1.ZLinkPeerState.Connecting
|
|
33
36
|
: contracts_1.ZLinkPeerState.NotConnected,
|
|
34
37
|
unavailableReason: descriptor.state === 'serving' && descriptor.weight > 0
|
|
35
38
|
? undefined
|
|
@@ -37,7 +40,7 @@ class ZLinkClientServerRuntimeProjection {
|
|
|
37
40
|
? contracts_1.ZLinkTopologyReason.Draining
|
|
38
41
|
: contracts_1.ZLinkTopologyReason.NoReadyTarget
|
|
39
42
|
}));
|
|
40
|
-
const readyTargetCount = targets.filter(target => target.state === contracts_1.ZLinkPeerState.Ready && target.weight > 0).length;
|
|
43
|
+
const readyTargetCount = targets.filter((target) => target.state === contracts_1.ZLinkPeerState.Ready && target.weight > 0).length;
|
|
41
44
|
const hostState = this.hostState();
|
|
42
45
|
const isReady = (0, runtime_state_projections_1.topologyRuntimeIsReady)(hostState, readyTargetCount);
|
|
43
46
|
return {
|
|
@@ -137,12 +140,16 @@ class ZLinkFanoutRuntimeProjection {
|
|
|
137
140
|
return this.snapshotCore(channelName);
|
|
138
141
|
}
|
|
139
142
|
snapshotCore(channelName) {
|
|
140
|
-
const publishers = this.requireRuntime()
|
|
141
|
-
.
|
|
143
|
+
const publishers = this.requireRuntime()
|
|
144
|
+
.fanoutTopology(channelName)
|
|
145
|
+
.descriptors.map((descriptor) => ({
|
|
142
146
|
nodeRid: descriptor.publisherRoutingId,
|
|
143
|
-
state: descriptor.state === 'serving'
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
state: descriptor.state === 'serving'
|
|
148
|
+
? contracts_1.ZLinkPeerState.Ready
|
|
149
|
+
: descriptor.state === 'retiring'
|
|
150
|
+
? contracts_1.ZLinkPeerState.Draining
|
|
151
|
+
: descriptor.state === 'preparing'
|
|
152
|
+
? contracts_1.ZLinkPeerState.Connecting
|
|
146
153
|
: contracts_1.ZLinkPeerState.NotConnected,
|
|
147
154
|
unavailableReason: descriptor.state === 'serving'
|
|
148
155
|
? undefined
|
|
@@ -150,7 +157,7 @@ class ZLinkFanoutRuntimeProjection {
|
|
|
150
157
|
? contracts_1.ZLinkTopologyReason.Draining
|
|
151
158
|
: contracts_1.ZLinkTopologyReason.NoReadyTarget
|
|
152
159
|
}));
|
|
153
|
-
const readyPublisherCount = publishers.filter(publisher => publisher.state === contracts_1.ZLinkPeerState.Ready).length;
|
|
160
|
+
const readyPublisherCount = publishers.filter((publisher) => publisher.state === contracts_1.ZLinkPeerState.Ready).length;
|
|
154
161
|
const hostState = this.hostState();
|
|
155
162
|
const hostReady = (0, runtime_state_projections_1.runtimeStateIsReady)(hostState);
|
|
156
163
|
return {
|
|
@@ -137,8 +137,7 @@ function captureZLinkSpotSerialTurn(executor) {
|
|
|
137
137
|
/** Returns the physical Spot owner only while its captured turn owns the gate. */
|
|
138
138
|
function currentZLinkSpotSerialSourceId() {
|
|
139
139
|
const current = spotSerialTurnStorage.getStore();
|
|
140
|
-
if (current === undefined
|
|
141
|
-
|| !current.executor.isActiveTurn(current.turn, current.turnId)) {
|
|
140
|
+
if (current === undefined || !current.executor.isActiveTurn(current.turn, current.turnId)) {
|
|
142
141
|
return undefined;
|
|
143
142
|
}
|
|
144
143
|
return current.executor.sourceSpotId;
|
|
@@ -157,14 +156,16 @@ function captureZLinkExecutionTurn() {
|
|
|
157
156
|
}
|
|
158
157
|
return {
|
|
159
158
|
yieldPromise: (pending) => current.turn.yieldPromise(pending),
|
|
160
|
-
post: (callback) => {
|
|
159
|
+
post: (callback) => {
|
|
160
|
+
void current.executor.post(callback);
|
|
161
|
+
}
|
|
161
162
|
};
|
|
162
163
|
}
|
|
163
164
|
function isCurrentZLinkSpotSerialTurn(executor) {
|
|
164
165
|
const current = spotSerialTurnStorage.getStore();
|
|
165
|
-
return current !== undefined
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
return (current !== undefined &&
|
|
167
|
+
current.executor === executor &&
|
|
168
|
+
executor.isActiveTurn(current.turn, current.turnId));
|
|
168
169
|
}
|
|
169
170
|
/**
|
|
170
171
|
* Seals application-lane admission and waits for every active Promise turn to
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ZLinkSerialExecutionQueue = exports.ZLINK_DEFAULT_SERIAL_SCHEDULER_OPTIONS = void 0;
|
|
4
4
|
exports.ZLINK_DEFAULT_SERIAL_SCHEDULER_OPTIONS = Object.freeze({
|
|
5
5
|
ownerTimeBudget: 10,
|
|
6
|
-
lifecycleBurstLimit: 8
|
|
6
|
+
lifecycleBurstLimit: 8
|
|
7
7
|
});
|
|
8
8
|
/**
|
|
9
9
|
* One event-loop serial execution queue per Spot, Actor mailbox, or Stream session.
|
|
@@ -80,14 +80,12 @@ class ZLinkSerialExecutionQueue {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
get hasPendingWork() {
|
|
83
|
-
return this.draining
|
|
84
|
-
|| this.application.records.length > 0
|
|
85
|
-
|| this.lifecycle.records.length > 0;
|
|
83
|
+
return (this.draining || this.application.records.length > 0 || this.lifecycle.records.length > 0);
|
|
86
84
|
}
|
|
87
85
|
whenIdle() {
|
|
88
86
|
if (!this.hasPendingWork)
|
|
89
87
|
return Promise.resolve();
|
|
90
|
-
return new Promise(resolve => this.idleWaiters.push(resolve));
|
|
88
|
+
return new Promise((resolve) => this.idleWaiters.push(resolve));
|
|
91
89
|
}
|
|
92
90
|
/** Stops new submissions while allowing the accepted FIFO to finish. */
|
|
93
91
|
close() {
|
|
@@ -176,8 +174,8 @@ class ZLinkSerialExecutionQueue {
|
|
|
176
174
|
const record = selection.record;
|
|
177
175
|
if (selection.lane === 'lifecycle') {
|
|
178
176
|
const applicationHead = this.application.records[0];
|
|
179
|
-
if (this.application.records.length > 0
|
|
180
|
-
|
|
177
|
+
if (this.application.records.length > 0 &&
|
|
178
|
+
!this.cancelPreparationForRearbitration(applicationHead)) {
|
|
181
179
|
waitingForPreparation = true;
|
|
182
180
|
break;
|
|
183
181
|
}
|
|
@@ -187,8 +185,7 @@ class ZLinkSerialExecutionQueue {
|
|
|
187
185
|
waitingForPreparation = true;
|
|
188
186
|
break;
|
|
189
187
|
}
|
|
190
|
-
if (record.preparationState === 'pending'
|
|
191
|
-
|| record.preparationState === 'canceling') {
|
|
188
|
+
if (record.preparationState === 'pending' || record.preparationState === 'canceling') {
|
|
192
189
|
waitingForPreparation = true;
|
|
193
190
|
break;
|
|
194
191
|
}
|
|
@@ -217,8 +214,8 @@ class ZLinkSerialExecutionQueue {
|
|
|
217
214
|
finally {
|
|
218
215
|
this.draining = false;
|
|
219
216
|
this.claimStartedAt = undefined;
|
|
220
|
-
if (!waitingForPreparation
|
|
221
|
-
|
|
217
|
+
if (!waitingForPreparation &&
|
|
218
|
+
(this.application.records.length > 0 || this.lifecycle.records.length > 0)) {
|
|
222
219
|
this.scheduleDrain();
|
|
223
220
|
}
|
|
224
221
|
else {
|
|
@@ -245,9 +242,7 @@ class ZLinkSerialExecutionQueue {
|
|
|
245
242
|
return { lane: 'application', record: this.application.records[0] };
|
|
246
243
|
}
|
|
247
244
|
takeSelected(selection) {
|
|
248
|
-
const record = selection.lane === 'lifecycle'
|
|
249
|
-
? this.takeLifecycle()
|
|
250
|
-
: this.takeApplication();
|
|
245
|
+
const record = selection.lane === 'lifecycle' ? this.takeLifecycle() : this.takeApplication();
|
|
251
246
|
if (record !== selection.record) {
|
|
252
247
|
throw new Error('The selected serial work record changed before owner claim.');
|
|
253
248
|
}
|
|
@@ -255,8 +250,7 @@ class ZLinkSerialExecutionQueue {
|
|
|
255
250
|
}
|
|
256
251
|
takeLifecycle() {
|
|
257
252
|
this.lifecycleStreak += 1;
|
|
258
|
-
if (this.application.records.length > 0
|
|
259
|
-
&& this.lifecycleStreak >= this.lifecycleBurstLimit) {
|
|
253
|
+
if (this.application.records.length > 0 && this.lifecycleStreak >= this.lifecycleBurstLimit) {
|
|
260
254
|
this.lifecycleDebt = true;
|
|
261
255
|
}
|
|
262
256
|
return this.lifecycle.records.shift();
|
|
@@ -286,7 +280,7 @@ class ZLinkSerialExecutionQueue {
|
|
|
286
280
|
}
|
|
287
281
|
record.preparationController = undefined;
|
|
288
282
|
this.scheduleDrain();
|
|
289
|
-
}, error => {
|
|
283
|
+
}, (error) => {
|
|
290
284
|
if (record.preparationState === 'canceling' || controller.signal.aborted) {
|
|
291
285
|
preparation.cancel();
|
|
292
286
|
record.preparationState = 'idle';
|
|
@@ -343,5 +337,5 @@ function validateNonNegative(value, field) {
|
|
|
343
337
|
}
|
|
344
338
|
}
|
|
345
339
|
function macrotaskBoundary() {
|
|
346
|
-
return new Promise(resolve => setImmediate(resolve));
|
|
340
|
+
return new Promise((resolve) => setImmediate(resolve));
|
|
347
341
|
}
|