@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
|
@@ -28,22 +28,22 @@ async function isDeferredJoinAcceptedRootPublication(relocation, reference, chec
|
|
|
28
28
|
if (hasJournalRootMagic(read.bytes)) {
|
|
29
29
|
try {
|
|
30
30
|
const root = decodeRoot(read.bytes);
|
|
31
|
-
return expected.aggregateId === operationAggregateId(root.operationId)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
return (expected.aggregateId === operationAggregateId(root.operationId) &&
|
|
32
|
+
expected.aggregateGeneration === root.actor.objectGeneration &&
|
|
33
|
+
expected.authorityKey === (0, authority_key_codec_1.encodeAuthorityKey)('actor', root.actor.actorId).value &&
|
|
34
|
+
expected.objectGeneration === root.actor.objectGeneration);
|
|
35
35
|
}
|
|
36
36
|
catch {
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
const root = await readCanonicalDeferredJoinRoot(relocation, read.bytes, signal);
|
|
41
|
-
return root !== undefined
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
return (root !== undefined &&
|
|
42
|
+
root.identity.aggregateId === expected.aggregateId &&
|
|
43
|
+
root.identity.aggregateGeneration === expected.aggregateGeneration &&
|
|
44
|
+
root.identity.authorityKey === expected.authorityKey &&
|
|
45
|
+
root.identity.objectKind === expected.objectKind &&
|
|
46
|
+
root.identity.objectGeneration === expected.objectGeneration);
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Keeps a cross-node Accepted Join completion under the Actor authority.
|
|
@@ -90,12 +90,10 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
90
90
|
};
|
|
91
91
|
const initialPublication = decodeAuthorityPublication(read.payload);
|
|
92
92
|
const initialCanonicalIdentity = (0, service_relocation_runtime_1.serviceRelocationAuthoritySlotIdentity)(read.payload);
|
|
93
|
-
const canonicalPublication = initialPublication?.canonical === true
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
&& (canonicalInventoryDigest !== undefined
|
|
98
|
-
|| !canonicalPublication.reference.value.startsWith('zlink-direct:'))
|
|
93
|
+
const canonicalPublication = initialPublication?.canonical === true ? initialPublication : undefined;
|
|
94
|
+
const root = canonicalPublication !== undefined &&
|
|
95
|
+
(canonicalInventoryDigest !== undefined ||
|
|
96
|
+
!canonicalPublication.reference.value.startsWith('zlink-direct:'))
|
|
99
97
|
? await this.storeCanonicalRoot(rootValue, read, canonicalPublication, signal, canonicalInventoryDigest)
|
|
100
98
|
: await this.storeRoot(rootValue, signal);
|
|
101
99
|
if (initialCanonicalIdentity !== undefined && canonicalInventoryDigest !== undefined) {
|
|
@@ -109,8 +107,8 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
109
107
|
const currentPublication = decodeAuthorityPublication(expected.payload);
|
|
110
108
|
const canonicalIdentity = (0, service_relocation_runtime_1.serviceRelocationAuthoritySlotIdentity)(expected.payload);
|
|
111
109
|
const publication = {
|
|
112
|
-
applicationPayload: Buffer.from(currentPublication?.applicationPayload
|
|
113
|
-
|
|
110
|
+
applicationPayload: Buffer.from(currentPublication?.applicationPayload ??
|
|
111
|
+
(0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(expected.payload)),
|
|
114
112
|
reference: root.reference,
|
|
115
113
|
checksumCrc32c: root.checksumCrc32c,
|
|
116
114
|
aggregateId: canonicalIdentity !== undefined
|
|
@@ -157,9 +155,7 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
157
155
|
}
|
|
158
156
|
async recover(actorId, signal) {
|
|
159
157
|
const read = await this.authority.readAuthority((0, authority_key_codec_1.encodeAuthorityKey)('actor', actorId), signal);
|
|
160
|
-
return read.kind === 'snapshot'
|
|
161
|
-
? await this.readPublished(read, signal)
|
|
162
|
-
: undefined;
|
|
158
|
+
return read.kind === 'snapshot' ? await this.readPublished(read, signal) : undefined;
|
|
163
159
|
}
|
|
164
160
|
markCommitted(root, actor, signal) {
|
|
165
161
|
if (actor !== undefined)
|
|
@@ -279,12 +275,13 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
279
275
|
let current = await this.readPublished(read, signal);
|
|
280
276
|
if (current === undefined) {
|
|
281
277
|
const retainedRoot = await this.relocation.read(root.reference, signal);
|
|
282
|
-
if (retainedRoot.kind === 'found'
|
|
283
|
-
&& (0, service_relocation_runtime_1.crc32c)(retainedRoot.bytes) === root.checksumCrc32c) {
|
|
278
|
+
if (retainedRoot.kind === 'found' && (0, service_relocation_runtime_1.crc32c)(retainedRoot.bytes) === root.checksumCrc32c) {
|
|
284
279
|
const retained = hasJournalRootMagic(retainedRoot.bytes)
|
|
285
280
|
? decodeRoot(retainedRoot.bytes)
|
|
286
|
-
: (await readCanonicalDeferredJoinRoot(this.relocation, retainedRoot.bytes, signal))
|
|
287
|
-
|
|
281
|
+
: (await readCanonicalDeferredJoinRoot(this.relocation, retainedRoot.bytes, signal))
|
|
282
|
+
?.completion;
|
|
283
|
+
if (retained?.cursor === 'delivered' &&
|
|
284
|
+
isSameOperation({ ...root, ...retained }, root.operationId, root.actor)) {
|
|
288
285
|
current = {
|
|
289
286
|
authority: read,
|
|
290
287
|
reference: root.reference,
|
|
@@ -294,11 +291,11 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
294
291
|
}
|
|
295
292
|
}
|
|
296
293
|
if (current === undefined &&
|
|
297
|
-
next === 'committed'
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
throw new contracts_1.ZLinkFrameworkException(contracts_1.ZLinkFrameworkErrorKind.Unavailable, `Actor '${root.actor.actorId}' Join completion delivery is indeterminate: `
|
|
301
|
-
|
|
294
|
+
next === 'committed' &&
|
|
295
|
+
actor !== undefined &&
|
|
296
|
+
authorityMatchesActor(read.payload, actor)) {
|
|
297
|
+
throw new contracts_1.ZLinkFrameworkException(contracts_1.ZLinkFrameworkErrorKind.Unavailable, `Actor '${root.actor.actorId}' Join completion delivery is indeterminate: ` +
|
|
298
|
+
'the authority no longer references the operation and no matching retained root exists.');
|
|
302
299
|
}
|
|
303
300
|
if (current === undefined) {
|
|
304
301
|
throw new Error(`Actor '${root.actor.actorId}' no longer references its Join completion root.`);
|
|
@@ -364,12 +361,12 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
364
361
|
if (canonicalPhase === 1 || canonicalPhase === 2)
|
|
365
362
|
return undefined;
|
|
366
363
|
const read = await this.relocation.read(publication.reference, signal);
|
|
367
|
-
if (read.kind !== 'found' &&
|
|
368
|
-
|
|
364
|
+
if (read.kind !== 'found' &&
|
|
365
|
+
publication.canonical === true &&
|
|
366
|
+
publication.reference.value.startsWith('zlink-direct:')) {
|
|
369
367
|
return undefined;
|
|
370
368
|
}
|
|
371
|
-
if (read.kind !== 'found'
|
|
372
|
-
|| (0, service_relocation_runtime_1.crc32c)(read.bytes) !== publication.checksumCrc32c) {
|
|
369
|
+
if (read.kind !== 'found' || (0, service_relocation_runtime_1.crc32c)(read.bytes) !== publication.checksumCrc32c) {
|
|
373
370
|
throw new Error('Published deferred Join completion root is missing or corrupt.');
|
|
374
371
|
}
|
|
375
372
|
if (publication.canonical === true && !hasJournalRootMagic(read.bytes)) {
|
|
@@ -379,9 +376,9 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
379
376
|
// the embedded slot. A root without a completion remains Host-owned.
|
|
380
377
|
return undefined;
|
|
381
378
|
}
|
|
382
|
-
if (root.identity.aggregateId !== publication.aggregateId
|
|
383
|
-
|
|
384
|
-
|
|
379
|
+
if (root.identity.aggregateId !== publication.aggregateId ||
|
|
380
|
+
root.identity.aggregateGeneration !== publication.aggregateGeneration ||
|
|
381
|
+
root.identity.objectGeneration !== authority.objectGeneration) {
|
|
385
382
|
throw new Error('Published deferred Join completion root identity does not match its authority slot.');
|
|
386
383
|
}
|
|
387
384
|
return {
|
|
@@ -407,8 +404,7 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
407
404
|
throw new Error('Relocation Store returned an invalid deferred Join root receipt.');
|
|
408
405
|
}
|
|
409
406
|
const read = await this.relocation.read(stored.reference, signal);
|
|
410
|
-
if (read.kind !== 'found'
|
|
411
|
-
|| !Buffer.from(read.bytes).equals(payload)) {
|
|
407
|
+
if (read.kind !== 'found' || !Buffer.from(read.bytes).equals(payload)) {
|
|
412
408
|
await this.deleteBestEffort(stored.reference);
|
|
413
409
|
throw new Error('Relocation Store failed deferred Join root verification.');
|
|
414
410
|
}
|
|
@@ -429,8 +425,7 @@ class ZLinkDeferredJoinAcceptedJournal {
|
|
|
429
425
|
}
|
|
430
426
|
else {
|
|
431
427
|
const current = await this.relocation.read(publication.reference, signal);
|
|
432
|
-
if (current.kind !== 'found'
|
|
433
|
-
|| (0, service_relocation_runtime_1.crc32c)(current.bytes) !== publication.checksumCrc32c) {
|
|
428
|
+
if (current.kind !== 'found' || (0, service_relocation_runtime_1.crc32c)(current.bytes) !== publication.checksumCrc32c) {
|
|
434
429
|
throw new Error('Canonical relocation manifest is missing or corrupt.');
|
|
435
430
|
}
|
|
436
431
|
inventory = decodeCanonicalTreeManifest(current.bytes).inventoryDigest;
|
|
@@ -463,21 +458,20 @@ function authorityMatchesActor(payload, actor) {
|
|
|
463
458
|
const publication = decodeAuthorityPublication(payload);
|
|
464
459
|
const applications = publication === undefined
|
|
465
460
|
? [(0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload)]
|
|
466
|
-
: [
|
|
467
|
-
|
|
468
|
-
(0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload)
|
|
469
|
-
];
|
|
470
|
-
return applications.some(application => {
|
|
461
|
+
: [publication.applicationPayload, (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload)];
|
|
462
|
+
return applications.some((application) => {
|
|
471
463
|
const identity = (0, actor_authority_publication_1.decodeRelocatingActorAuthorityIdentity)(application, actor.objectGeneration);
|
|
472
|
-
return identity !== undefined
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
464
|
+
return (identity !== undefined &&
|
|
465
|
+
identity.actor.actorId === actor.actorId &&
|
|
466
|
+
identity.actor.objectGeneration === actor.objectGeneration &&
|
|
467
|
+
(0, routing_id_1.routingIdWireHex)(identity.actor.nodeRid) === (0, routing_id_1.routingIdWireHex)(actor.nodeRid));
|
|
476
468
|
});
|
|
477
469
|
}
|
|
478
470
|
function encodeRoot(value) {
|
|
479
471
|
const nodeRidHex = (0, routing_id_1.routingIdWireHex)(value.actor.nodeRid);
|
|
480
|
-
const encoded = Buffer.concat([
|
|
472
|
+
const encoded = Buffer.concat([
|
|
473
|
+
ROOT_MAGIC,
|
|
474
|
+
Buffer.from(JSON.stringify({
|
|
481
475
|
version: ROOT_VERSION,
|
|
482
476
|
operationHigh: value.operationId.high.toString(),
|
|
483
477
|
operationLow: value.operationId.low.toString(),
|
|
@@ -491,7 +485,8 @@ function encodeRoot(value) {
|
|
|
491
485
|
? {}
|
|
492
486
|
: { replyContentType: value.replyContentType }),
|
|
493
487
|
cursor: value.cursor
|
|
494
|
-
}), 'utf8')
|
|
488
|
+
}), 'utf8')
|
|
489
|
+
]);
|
|
495
490
|
if (encoded.byteLength > MAX_ROOT_BYTES) {
|
|
496
491
|
throw new Error('Deferred Join completion root exceeds 1 MiB.');
|
|
497
492
|
}
|
|
@@ -502,21 +497,19 @@ function decodeRoot(payload) {
|
|
|
502
497
|
throw new Error('Deferred Join completion root size is invalid.');
|
|
503
498
|
}
|
|
504
499
|
const bytes = Buffer.from(payload);
|
|
505
|
-
const encoded = hasJournalRootMagic(bytes)
|
|
506
|
-
? bytes.subarray(ROOT_MAGIC.byteLength)
|
|
507
|
-
: bytes;
|
|
500
|
+
const encoded = hasJournalRootMagic(bytes) ? bytes.subarray(ROOT_MAGIC.byteLength) : bytes;
|
|
508
501
|
const value = JSON.parse(encoded.toString('utf8'));
|
|
509
|
-
if (value.version !== ROOT_VERSION
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
502
|
+
if (value.version !== ROOT_VERSION ||
|
|
503
|
+
typeof value.operationHigh !== 'string' ||
|
|
504
|
+
typeof value.operationLow !== 'string' ||
|
|
505
|
+
typeof value.actorId !== 'string' ||
|
|
506
|
+
typeof value.actorGeneration !== 'string' ||
|
|
507
|
+
typeof value.actorMeshName !== 'string' ||
|
|
508
|
+
typeof value.actorNodeRid !== 'string' ||
|
|
509
|
+
typeof value.rawReply !== 'string' ||
|
|
510
|
+
(value.replyContentType !== undefined &&
|
|
511
|
+
(typeof value.replyContentType !== 'string' || value.replyContentType.length === 0)) ||
|
|
512
|
+
!isCursor(value.cursor)) {
|
|
520
513
|
throw new Error('Deferred Join completion root is invalid.');
|
|
521
514
|
}
|
|
522
515
|
const rawReply = Buffer.from(value.rawReply, 'base64');
|
|
@@ -576,16 +569,15 @@ function replaceDeferredJoinAuthorityPublication(payload, replacement) {
|
|
|
576
569
|
const codec = new service_relocation_runtime_1.ServiceRelocationAuthorityPayloadCodec();
|
|
577
570
|
const currentPublication = codec.read(payload);
|
|
578
571
|
const replacementPublication = codec.read(replacement);
|
|
579
|
-
if (currentPublication?.canonical === true
|
|
580
|
-
|| replacementPublication?.canonical === true) {
|
|
572
|
+
if (currentPublication?.canonical === true || replacementPublication?.canonical === true) {
|
|
581
573
|
// Canonical authority has exactly one embedded relocation slot. A journal
|
|
582
574
|
// cursor replaces that slot atomically; it must never be wrapped or nested
|
|
583
575
|
// under an older ZLAR/application layer.
|
|
584
576
|
return Buffer.from(replacement);
|
|
585
577
|
}
|
|
586
578
|
const outerApplication = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload);
|
|
587
|
-
if (!Buffer.from(outerApplication).equals(Buffer.from(payload))
|
|
588
|
-
|
|
579
|
+
if (!Buffer.from(outerApplication).equals(Buffer.from(payload)) &&
|
|
580
|
+
decodeDirectAuthorityPublication(outerApplication) !== undefined) {
|
|
589
581
|
return (0, service_relocation_runtime_1.replaceServiceRelocationAuthorityApplicationPayload)(payload, replacement);
|
|
590
582
|
}
|
|
591
583
|
return decodeDirectAuthorityPublication(payload) === undefined
|
|
@@ -597,8 +589,8 @@ function decodeDirectAuthorityPublication(payload) {
|
|
|
597
589
|
if (publication === undefined)
|
|
598
590
|
return undefined;
|
|
599
591
|
const applicationPayload = (0, service_relocation_runtime_1.serviceRelocationAuthorityApplicationPayload)(payload);
|
|
600
|
-
return publication.canonical === true
|
|
601
|
-
|
|
592
|
+
return publication.canonical === true ||
|
|
593
|
+
publication.inventoryDigest === journalInventoryDigest(applicationPayload)
|
|
602
594
|
? deferredJoinPublication(applicationPayload, publication)
|
|
603
595
|
: undefined;
|
|
604
596
|
}
|
|
@@ -617,8 +609,8 @@ function deferredJoinPublication(applicationPayload, publication) {
|
|
|
617
609
|
}
|
|
618
610
|
function hasJournalRootMagic(payload) {
|
|
619
611
|
const bytes = Buffer.from(payload);
|
|
620
|
-
return bytes.byteLength >= ROOT_MAGIC.byteLength
|
|
621
|
-
|
|
612
|
+
return (bytes.byteLength >= ROOT_MAGIC.byteLength &&
|
|
613
|
+
bytes.subarray(0, ROOT_MAGIC.byteLength).equals(ROOT_MAGIC));
|
|
622
614
|
}
|
|
623
615
|
function journalInventoryDigest(applicationPayload) {
|
|
624
616
|
return (0, node_crypto_1.createHash)('sha256')
|
|
@@ -628,10 +620,10 @@ function journalInventoryDigest(applicationPayload) {
|
|
|
628
620
|
}
|
|
629
621
|
function operationAggregateId(operationId) {
|
|
630
622
|
const encoded = [operationId.high, operationId.low]
|
|
631
|
-
.map(value => BigInt.asUintN(64, value).toString(16).padStart(16, '0'))
|
|
623
|
+
.map((value) => BigInt.asUintN(64, value).toString(16).padStart(16, '0'))
|
|
632
624
|
.join('');
|
|
633
|
-
return `${encoded.slice(0, 8)}-${encoded.slice(8, 12)}-${encoded.slice(12, 16)}`
|
|
634
|
-
|
|
625
|
+
return (`${encoded.slice(0, 8)}-${encoded.slice(8, 12)}-${encoded.slice(12, 16)}` +
|
|
626
|
+
`-${encoded.slice(16, 20)}-${encoded.slice(20)}`);
|
|
635
627
|
}
|
|
636
628
|
function requireCanonicalAggregateGeneration(value) {
|
|
637
629
|
if (value === 0n) {
|
|
@@ -655,8 +647,7 @@ function decodeCanonicalTreeManifest(payload) {
|
|
|
655
647
|
if (chunks.length === 0) {
|
|
656
648
|
throw new Error('Canonical relocation chunk count is invalid.');
|
|
657
649
|
}
|
|
658
|
-
if (chunks.reduce((total, value) => total + value.length, 0n)
|
|
659
|
-
!== generated.totalLength) {
|
|
650
|
+
if (chunks.reduce((total, value) => total + value.length, 0n) !== generated.totalLength) {
|
|
660
651
|
throw new Error('Canonical relocation manifest length is invalid.');
|
|
661
652
|
}
|
|
662
653
|
return {
|
|
@@ -679,12 +670,14 @@ async function storeCanonicalTree(store, logicalRoot, inventoryDigest, signal) {
|
|
|
679
670
|
totalLength: BigInt(logical.byteLength),
|
|
680
671
|
totalChecksumCrc32c: logicalChecksumCrc32c,
|
|
681
672
|
inventoryDigestSha256: Buffer.from(inventoryDigest),
|
|
682
|
-
chunks: [
|
|
673
|
+
chunks: [
|
|
674
|
+
{
|
|
683
675
|
order: 0,
|
|
684
676
|
reference: storedChunk.reference.value,
|
|
685
677
|
length: BigInt(logical.byteLength),
|
|
686
678
|
checksumCrc32c: logicalChecksumCrc32c
|
|
687
|
-
}
|
|
679
|
+
}
|
|
680
|
+
]
|
|
688
681
|
}));
|
|
689
682
|
const storedManifest = await putAndVerifyCanonicalBlob(store, manifest, signal);
|
|
690
683
|
return {
|
|
@@ -715,8 +708,7 @@ async function readCanonicalDeferredJoinRoot(store, manifestPayload, signal) {
|
|
|
715
708
|
if (read.kind !== 'found')
|
|
716
709
|
throw new Error('Canonical relocation chunk is missing.');
|
|
717
710
|
const chunk = (0, service_wire_pilot_codec_generated_1.decodeRelocationDataChunkV1)(read.bytes);
|
|
718
|
-
if (chunk.order !== expected.order
|
|
719
|
-
|| BigInt(chunk.data.byteLength) !== expected.length) {
|
|
711
|
+
if (chunk.order !== expected.order || BigInt(chunk.data.byteLength) !== expected.length) {
|
|
720
712
|
throw new Error('Canonical relocation chunk identity is invalid.');
|
|
721
713
|
}
|
|
722
714
|
const data = Buffer.from(chunk.data);
|
|
@@ -726,8 +718,8 @@ async function readCanonicalDeferredJoinRoot(store, manifestPayload, signal) {
|
|
|
726
718
|
parts.push(data);
|
|
727
719
|
}
|
|
728
720
|
const logical = Buffer.concat(parts);
|
|
729
|
-
if (BigInt(logical.byteLength) !== manifest.logicalLength
|
|
730
|
-
|
|
721
|
+
if (BigInt(logical.byteLength) !== manifest.logicalLength ||
|
|
722
|
+
(0, service_relocation_runtime_1.crc32c)(logical) !== manifest.logicalChecksumCrc32c) {
|
|
731
723
|
throw new Error('Canonical relocation logical root checksum is invalid.');
|
|
732
724
|
}
|
|
733
725
|
return decodeCanonicalDeferredJoinRoot(logical);
|
|
@@ -736,11 +728,21 @@ function encodeCanonicalDeferredJoinRoot(value, authority, publication, inventor
|
|
|
736
728
|
const key = (0, authority_key_codec_1.encodeAuthorityKey)('actor', value.actor.actorId).value;
|
|
737
729
|
const completion = encodeDotNetDeferredJoinCompletion(value);
|
|
738
730
|
return Buffer.concat([
|
|
739
|
-
u32le(0x5a4c5231),
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
u64le(
|
|
743
|
-
|
|
731
|
+
u32le(0x5a4c5231),
|
|
732
|
+
u16le(2),
|
|
733
|
+
dotNetGuidBytes(publication.aggregateId),
|
|
734
|
+
u64le(publication.aggregateGeneration),
|
|
735
|
+
bytes32le(inventoryDigest),
|
|
736
|
+
u32le(1),
|
|
737
|
+
text16le(key),
|
|
738
|
+
Buffer.of(1),
|
|
739
|
+
u64le(authority.objectGeneration),
|
|
740
|
+
u64le(authority.authorityOwnerGeneration),
|
|
741
|
+
bytes32le(Buffer.alloc(0)),
|
|
742
|
+
u32le(0),
|
|
743
|
+
u32le(0),
|
|
744
|
+
bytes32le(Buffer.alloc(0)),
|
|
745
|
+
bytes32le(completion)
|
|
744
746
|
]);
|
|
745
747
|
}
|
|
746
748
|
function decodeCanonicalDeferredJoinRoot(payload) {
|
|
@@ -790,9 +792,8 @@ function decodeCanonicalDeferredJoinRoot(payload) {
|
|
|
790
792
|
throw new Error('Canonical relocation root has trailing bytes.');
|
|
791
793
|
if (completion === undefined || completionIdentity === undefined)
|
|
792
794
|
return undefined;
|
|
793
|
-
if (completion.actor.objectGeneration !== completionIdentity.objectGeneration
|
|
794
|
-
|
|
795
|
-
!== completionIdentity.authorityKey) {
|
|
795
|
+
if (completion.actor.objectGeneration !== completionIdentity.objectGeneration ||
|
|
796
|
+
(0, authority_key_codec_1.encodeAuthorityKey)('actor', completion.actor.actorId).value !== completionIdentity.authorityKey) {
|
|
796
797
|
return undefined;
|
|
797
798
|
}
|
|
798
799
|
return {
|
|
@@ -807,9 +808,15 @@ function decodeCanonicalDeferredJoinRoot(payload) {
|
|
|
807
808
|
function encodeDotNetDeferredJoinCompletion(value) {
|
|
808
809
|
const routingId = Buffer.from((0, routing_id_1.encodeRoutingIdStorageHex)(value.actor.nodeRid), 'hex');
|
|
809
810
|
return Buffer.concat([
|
|
810
|
-
u32le(0x5a4c4a43),
|
|
811
|
-
|
|
812
|
-
text16le(value.actor.
|
|
811
|
+
u32le(0x5a4c4a43),
|
|
812
|
+
Buffer.of(2),
|
|
813
|
+
text16le(value.actor.actorId),
|
|
814
|
+
u64le(value.actor.objectGeneration),
|
|
815
|
+
u64le(value.operationId.high),
|
|
816
|
+
u64le(value.operationId.low),
|
|
817
|
+
text16le(value.actor.meshName),
|
|
818
|
+
Buffer.of(routingId.byteLength),
|
|
819
|
+
routingId,
|
|
813
820
|
u64le(value.actor.objectGeneration),
|
|
814
821
|
Buffer.of(value.replyContentType === undefined ? 0 : 1),
|
|
815
822
|
...(value.replyContentType === undefined ? [] : [text16le(value.replyContentType)]),
|
|
@@ -856,8 +863,12 @@ function decodeDotNetDeferredJoinCompletion(payload) {
|
|
|
856
863
|
class LittleEndianReader {
|
|
857
864
|
offset = 0;
|
|
858
865
|
bytes;
|
|
859
|
-
constructor(payload) {
|
|
860
|
-
|
|
866
|
+
constructor(payload) {
|
|
867
|
+
this.bytes = Buffer.from(payload);
|
|
868
|
+
}
|
|
869
|
+
get done() {
|
|
870
|
+
return this.offset === this.bytes.byteLength;
|
|
871
|
+
}
|
|
861
872
|
take(length) {
|
|
862
873
|
if (length < 0 || this.offset + length > this.bytes.byteLength) {
|
|
863
874
|
throw new Error('Canonical relocation root is truncated.');
|
|
@@ -866,22 +877,40 @@ class LittleEndianReader {
|
|
|
866
877
|
this.offset += length;
|
|
867
878
|
return result;
|
|
868
879
|
}
|
|
869
|
-
u8() {
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
880
|
+
u8() {
|
|
881
|
+
return this.take(1)[0];
|
|
882
|
+
}
|
|
883
|
+
u16() {
|
|
884
|
+
return this.take(2).readUInt16LE();
|
|
885
|
+
}
|
|
886
|
+
u32() {
|
|
887
|
+
return this.take(4).readUInt32LE();
|
|
888
|
+
}
|
|
889
|
+
u64() {
|
|
890
|
+
return this.take(8).readBigUInt64LE();
|
|
891
|
+
}
|
|
892
|
+
i64() {
|
|
893
|
+
return this.take(8).readBigInt64LE();
|
|
894
|
+
}
|
|
874
895
|
text16() {
|
|
875
896
|
const bytes = this.take(this.u16());
|
|
876
897
|
return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
877
898
|
}
|
|
878
|
-
bytes32() {
|
|
899
|
+
bytes32() {
|
|
900
|
+
return this.take(this.u32());
|
|
901
|
+
}
|
|
879
902
|
}
|
|
880
903
|
function dotNetGuidBytes(value) {
|
|
881
904
|
const bytes = Buffer.from(value.replaceAll('-', ''), 'hex');
|
|
882
905
|
return Buffer.from([
|
|
883
|
-
bytes[3],
|
|
884
|
-
bytes[
|
|
906
|
+
bytes[3],
|
|
907
|
+
bytes[2],
|
|
908
|
+
bytes[1],
|
|
909
|
+
bytes[0],
|
|
910
|
+
bytes[5],
|
|
911
|
+
bytes[4],
|
|
912
|
+
bytes[7],
|
|
913
|
+
bytes[6],
|
|
885
914
|
...bytes.subarray(8)
|
|
886
915
|
]);
|
|
887
916
|
}
|
|
@@ -891,13 +920,18 @@ function canonicalUuidFromDotNetBytes(value) {
|
|
|
891
920
|
throw new TypeError('Canonical relocation aggregate id is invalid.');
|
|
892
921
|
}
|
|
893
922
|
const canonical = Buffer.from([
|
|
894
|
-
bytes[3],
|
|
895
|
-
bytes[
|
|
896
|
-
bytes[
|
|
923
|
+
bytes[3],
|
|
924
|
+
bytes[2],
|
|
925
|
+
bytes[1],
|
|
926
|
+
bytes[0],
|
|
927
|
+
bytes[5],
|
|
928
|
+
bytes[4],
|
|
929
|
+
bytes[7],
|
|
930
|
+
bytes[6],
|
|
897
931
|
...bytes.subarray(8)
|
|
898
932
|
]).toString('hex');
|
|
899
|
-
return `${canonical.slice(0, 8)}-${canonical.slice(8, 12)}-${canonical.slice(12, 16)}`
|
|
900
|
-
|
|
933
|
+
return (`${canonical.slice(0, 8)}-${canonical.slice(8, 12)}-${canonical.slice(12, 16)}` +
|
|
934
|
+
`-${canonical.slice(16, 20)}-${canonical.slice(20)}`);
|
|
901
935
|
}
|
|
902
936
|
function text16le(value) {
|
|
903
937
|
const bytes = Buffer.from(value, 'utf8');
|
|
@@ -924,10 +958,10 @@ function u64le(value) {
|
|
|
924
958
|
return result;
|
|
925
959
|
}
|
|
926
960
|
function validateIdentity(actorId, operationId, actor) {
|
|
927
|
-
if (actorId.length === 0
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
961
|
+
if (actorId.length === 0 ||
|
|
962
|
+
actor.actorId !== actorId ||
|
|
963
|
+
actor.objectGeneration <= 0n ||
|
|
964
|
+
(operationId.high === 0n && operationId.low === 0n)) {
|
|
931
965
|
throw new Error('Deferred Join completion identity is invalid.');
|
|
932
966
|
}
|
|
933
967
|
}
|
|
@@ -937,17 +971,17 @@ function requireSameOperation(root, operationId, actor) {
|
|
|
937
971
|
}
|
|
938
972
|
}
|
|
939
973
|
function isSameOperation(root, operationId, actor) {
|
|
940
|
-
return root.operationId.high === operationId.high
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
974
|
+
return (root.operationId.high === operationId.high &&
|
|
975
|
+
root.operationId.low === operationId.low &&
|
|
976
|
+
root.actor.actorId === actor.actorId &&
|
|
977
|
+
root.actor.objectGeneration === actor.objectGeneration);
|
|
944
978
|
}
|
|
945
979
|
function requireSameActor(root, actor) {
|
|
946
|
-
if (root.actor.actorId !== actor.actorId
|
|
947
|
-
|
|
948
|
-
throw new Error('Deferred Join completion generation fence is stale '
|
|
949
|
-
|
|
950
|
-
|
|
980
|
+
if (root.actor.actorId !== actor.actorId ||
|
|
981
|
+
root.actor.objectGeneration !== actor.objectGeneration) {
|
|
982
|
+
throw new Error('Deferred Join completion generation fence is stale ' +
|
|
983
|
+
`(root ${root.actor.actorId}/${root.actor.objectGeneration}, ` +
|
|
984
|
+
`actor ${actor.actorId}/${actor.objectGeneration}).`);
|
|
951
985
|
}
|
|
952
986
|
}
|
|
953
987
|
function cursorIndex(cursor) {
|
|
@@ -406,9 +406,7 @@ class DefaultZLinkActorManager {
|
|
|
406
406
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorRouteNotFound, `Actor '${actor.context.actorId}' must leave its current SPOT before destroy.`);
|
|
407
407
|
}
|
|
408
408
|
const destroyTask = state.getOrStartDestroy(entryNodeRid, async (actorRef) => {
|
|
409
|
-
const destroyedActorRef = actorRef === undefined
|
|
410
|
-
? undefined
|
|
411
|
-
: (0, actor_runtime_state_2.toFrameworkActorRef)(actorRef, state.meshName ?? '');
|
|
409
|
+
const destroyedActorRef = actorRef === undefined ? undefined : (0, actor_runtime_state_2.toFrameworkActorRef)(actorRef, state.meshName ?? '');
|
|
412
410
|
if (actorRef !== undefined) {
|
|
413
411
|
await node.destroyActor(actorRef, 0, destroySignal);
|
|
414
412
|
state.markNativeActorDestroyed(actorRef);
|
|
@@ -541,8 +539,7 @@ class DefaultZLinkActorManager {
|
|
|
541
539
|
actorId: state.actorId,
|
|
542
540
|
objectGeneration: 1n,
|
|
543
541
|
meshName: state.meshName ?? '',
|
|
544
|
-
nodeRid: this.options.actorCreatedNodeRidProvider?.()
|
|
545
|
-
?? 'local'
|
|
542
|
+
nodeRid: this.options.actorCreatedNodeRidProvider?.() ?? 'local'
|
|
546
543
|
};
|
|
547
544
|
}
|
|
548
545
|
}
|
|
@@ -20,8 +20,7 @@ class ZLinkPostCommitActorBinder {
|
|
|
20
20
|
if (existing !== undefined)
|
|
21
21
|
return existing;
|
|
22
22
|
let task;
|
|
23
|
-
task = this.run(actorRef.actorId)
|
|
24
|
-
.finally(async () => await this.lane.run(() => {
|
|
23
|
+
task = this.run(actorRef.actorId).finally(async () => await this.lane.run(() => {
|
|
25
24
|
if (this.tasks.get(actorRef.actorId) === task) {
|
|
26
25
|
this.tasks.delete(actorRef.actorId);
|
|
27
26
|
}
|
|
@@ -48,15 +47,13 @@ class ZLinkPostCommitActorBinder {
|
|
|
48
47
|
}
|
|
49
48
|
catch (error) {
|
|
50
49
|
this.options.reportError?.(error);
|
|
51
|
-
if (!await retryDelay.wait(signal))
|
|
50
|
+
if (!(await retryDelay.wait(signal)))
|
|
52
51
|
return;
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
signal() {
|
|
57
|
-
return typeof this.options.signal === 'function'
|
|
58
|
-
? this.options.signal()
|
|
59
|
-
: this.options.signal;
|
|
56
|
+
return typeof this.options.signal === 'function' ? this.options.signal() : this.options.signal;
|
|
60
57
|
}
|
|
61
58
|
completeBindCore(actorId, actorRef) {
|
|
62
59
|
if (this.desiredRefs.get(actorId) !== actorRef)
|
|
@@ -50,9 +50,9 @@ class ZLinkSpotActorHandlerRegistryRuntime {
|
|
|
50
50
|
return wildcard;
|
|
51
51
|
}
|
|
52
52
|
for (const descriptor of this.packets.values()) {
|
|
53
|
-
if (descriptor.kind === kind
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
if (descriptor.kind === kind &&
|
|
54
|
+
descriptor.packetName === packetName &&
|
|
55
|
+
actor instanceof descriptor.actorType) {
|
|
56
56
|
return descriptor;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -154,8 +154,8 @@ class ZLinkSpotActorDispatcher {
|
|
|
154
154
|
return await (0, handler_instance_scope_1.runWithLifecycleHandler)(actor, descriptor.handlerType, this.options.providerResolver, (resolved) => callback(resolved));
|
|
155
155
|
}
|
|
156
156
|
execute(operation) {
|
|
157
|
-
const pending = this.options.serial?.execute(operation, this.options.serialWorkOptions)
|
|
158
|
-
|
|
157
|
+
const pending = this.options.serial?.execute(operation, this.options.serialWorkOptions) ??
|
|
158
|
+
Promise.resolve().then(operation);
|
|
159
159
|
this.options.onAdmitted?.();
|
|
160
160
|
return pending;
|
|
161
161
|
}
|
|
@@ -38,14 +38,14 @@ class ZLinkTransferredActorRollbackCoordinator {
|
|
|
38
38
|
if (this.tasks.has(actor.context.actorId)) {
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
|
-
const task = this.retry(actor, state, node, actorRef)
|
|
42
|
-
.finally(() => this.tasks.delete(actor.context.actorId));
|
|
41
|
+
const task = this.retry(actor, state, node, actorRef).finally(() => this.tasks.delete(actor.context.actorId));
|
|
43
42
|
this.tasks.set(actor.context.actorId, task);
|
|
44
43
|
}
|
|
45
44
|
async retry(actor, state, node, actorRef) {
|
|
46
45
|
const retryDelay = new actor_retry_delay_1.ZLinkActorRetryDelay();
|
|
47
|
-
while (this.states.get(actor.context.actorId) === state &&
|
|
48
|
-
|
|
46
|
+
while (this.states.get(actor.context.actorId) === state &&
|
|
47
|
+
this.options.shutdownSignal?.aborted !== true) {
|
|
48
|
+
if (!(await retryDelay.wait(this.options.shutdownSignal)))
|
|
49
49
|
return;
|
|
50
50
|
try {
|
|
51
51
|
if (node !== undefined && actorRef !== undefined) {
|
|
@@ -110,9 +110,7 @@ class ZLinkRuntimeAdmissionGate {
|
|
|
110
110
|
else if (this.accepts(meshName)) {
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
113
|
-
throw (0, framework_errors_internal_1.createInternalFrameworkException)(meshName === undefined
|
|
114
|
-
? this.firstSealedReason()
|
|
115
|
-
: this.requireState(meshName).sealedReason, `${operation} was rejected because framework admission is closed.`);
|
|
113
|
+
throw (0, framework_errors_internal_1.createInternalFrameworkException)(meshName === undefined ? this.firstSealedReason() : this.requireState(meshName).sealedReason, `${operation} was rejected because framework admission is closed.`);
|
|
116
114
|
}
|
|
117
115
|
requireActorCreate(actorId, meshName) {
|
|
118
116
|
if (meshName === undefined) {
|
|
@@ -122,9 +120,7 @@ class ZLinkRuntimeAdmissionGate {
|
|
|
122
120
|
else if (this.accepts(meshName)) {
|
|
123
121
|
return;
|
|
124
122
|
}
|
|
125
|
-
const reason = meshName === undefined
|
|
126
|
-
? this.firstSealedReason()
|
|
127
|
-
: this.requireState(meshName).sealedReason;
|
|
123
|
+
const reason = meshName === undefined ? this.firstSealedReason() : this.requireState(meshName).sealedReason;
|
|
128
124
|
throw (0, framework_errors_internal_1.createInternalFrameworkException)(reason === framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown
|
|
129
125
|
? framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.RuntimeShutdown
|
|
130
126
|
: framework_errors_internal_1.ZLinkFrameworkInternalErrorKind.ActorCreateRejected, `Actor '${actorId}' create request was rejected because framework admission is closed.`);
|