@adonis-agora/durable 0.49.1 → 0.50.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/CHANGELOG.md +251 -0
- package/README.md +53 -22
- package/dist/assets/spa/assets/index-DupjrK7N.js +16 -0
- package/dist/assets/spa/assets/index-DupjrK7N.js.map +1 -0
- package/dist/assets/spa/index.html +1 -1
- package/dist/commands/durable_worker.d.ts.map +1 -1
- package/dist/commands/durable_worker.js +9 -8
- package/dist/commands/durable_worker.js.map +1 -1
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +1 -0
- package/dist/configure.js.map +1 -1
- package/dist/providers/dashboard_provider.d.ts +2 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -1
- package/dist/providers/dashboard_provider.js +50 -6
- package/dist/providers/dashboard_provider.js.map +1 -1
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +143 -34
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/admission-redis/redis-admission-backend.d.ts.map +1 -1
- package/dist/src/admission-redis/redis-admission-backend.js +3 -1
- package/dist/src/admission-redis/redis-admission-backend.js.map +1 -1
- package/dist/src/ambient-step.d.ts +24 -0
- package/dist/src/ambient-step.d.ts.map +1 -0
- package/dist/src/ambient-step.js +42 -0
- package/dist/src/ambient-step.js.map +1 -0
- package/dist/src/base-workflow.d.ts +10 -1
- package/dist/src/base-workflow.d.ts.map +1 -1
- package/dist/src/base-workflow.js.map +1 -1
- package/dist/src/codec-state-store.d.ts +28 -2
- package/dist/src/codec-state-store.d.ts.map +1 -1
- package/dist/src/codec-state-store.js +61 -3
- package/dist/src/codec-state-store.js.map +1 -1
- package/dist/src/commands/worker.d.ts +4 -1
- package/dist/src/commands/worker.d.ts.map +1 -1
- package/dist/src/commands/worker.js +27 -3
- package/dist/src/commands/worker.js.map +1 -1
- package/dist/src/config_types.d.ts +6 -0
- package/dist/src/config_types.d.ts.map +1 -1
- package/dist/src/control-plane-redis/redis-control-plane.d.ts.map +1 -1
- package/dist/src/control-plane-redis/redis-control-plane.js +22 -6
- package/dist/src/control-plane-redis/redis-control-plane.js.map +1 -1
- package/dist/src/control-planes/factory.d.ts +6 -0
- package/dist/src/control-planes/factory.d.ts.map +1 -1
- package/dist/src/control-planes/factory.js +1 -0
- package/dist/src/control-planes/factory.js.map +1 -1
- package/dist/src/dashboard/gateway-adapter.d.ts +15 -5
- package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
- package/dist/src/dashboard/gateway-adapter.js +71 -7
- package/dist/src/dashboard/gateway-adapter.js.map +1 -1
- package/dist/src/dashboard/handlers.d.ts +53 -1
- package/dist/src/dashboard/handlers.d.ts.map +1 -1
- package/dist/src/dashboard/handlers.js +200 -20
- package/dist/src/dashboard/handlers.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +2 -2
- package/dist/src/dashboard/index.d.ts.map +1 -1
- package/dist/src/dashboard/index.js +2 -2
- package/dist/src/dashboard/index.js.map +1 -1
- package/dist/src/dashboard/openapi.d.ts.map +1 -1
- package/dist/src/dashboard/openapi.js +71 -1
- package/dist/src/dashboard/openapi.js.map +1 -1
- package/dist/src/define_config.d.ts +122 -8
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/diagnostics-bridge.d.ts +16 -3
- package/dist/src/diagnostics-bridge.d.ts.map +1 -1
- package/dist/src/diagnostics-bridge.js +9 -3
- package/dist/src/diagnostics-bridge.js.map +1 -1
- package/dist/src/discovery-roots.d.ts +92 -0
- package/dist/src/discovery-roots.d.ts.map +1 -0
- package/dist/src/discovery-roots.js +150 -0
- package/dist/src/discovery-roots.js.map +1 -0
- package/dist/src/engine.d.ts +418 -20
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +1523 -159
- package/dist/src/engine.js.map +1 -1
- package/dist/src/entities.d.ts +36 -1
- package/dist/src/entities.d.ts.map +1 -1
- package/dist/src/entities.js +65 -4
- package/dist/src/entities.js.map +1 -1
- package/dist/src/errors.d.ts +36 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +44 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/event-trigger-bridge.d.ts +8 -0
- package/dist/src/event-trigger-bridge.d.ts.map +1 -1
- package/dist/src/event-trigger-bridge.js +24 -3
- package/dist/src/event-trigger-bridge.js.map +1 -1
- package/dist/src/handshake/announced.d.ts +27 -0
- package/dist/src/handshake/announced.d.ts.map +1 -1
- package/dist/src/handshake/announced.js +62 -0
- package/dist/src/handshake/announced.js.map +1 -1
- package/dist/src/handshake/directory.d.ts +92 -0
- package/dist/src/handshake/directory.d.ts.map +1 -0
- package/dist/src/handshake/directory.js +139 -0
- package/dist/src/handshake/directory.js.map +1 -0
- package/dist/src/hooks/barrel-sources.d.ts +28 -0
- package/dist/src/hooks/barrel-sources.d.ts.map +1 -0
- package/dist/src/hooks/barrel-sources.js +92 -0
- package/dist/src/hooks/barrel-sources.js.map +1 -0
- package/dist/src/hooks/steps.d.ts +12 -3
- package/dist/src/hooks/steps.d.ts.map +1 -1
- package/dist/src/hooks/steps.js +7 -11
- package/dist/src/hooks/steps.js.map +1 -1
- package/dist/src/hooks/workflows.d.ts +12 -3
- package/dist/src/hooks/workflows.d.ts.map +1 -1
- package/dist/src/hooks/workflows.js +7 -13
- package/dist/src/hooks/workflows.js.map +1 -1
- package/dist/src/index.d.ts +12 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces.d.ts +309 -21
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/interfaces.js +10 -0
- package/dist/src/interfaces.js.map +1 -1
- package/dist/src/metrics.d.ts.map +1 -1
- package/dist/src/metrics.js +5 -0
- package/dist/src/metrics.js.map +1 -1
- package/dist/src/namespaces.d.ts +17 -0
- package/dist/src/namespaces.d.ts.map +1 -0
- package/dist/src/namespaces.js +24 -0
- package/dist/src/namespaces.js.map +1 -0
- package/dist/src/otel/durable-metrics.d.ts.map +1 -1
- package/dist/src/otel/durable-metrics.js +5 -0
- package/dist/src/otel/durable-metrics.js.map +1 -1
- package/dist/src/otel/durable-otel.d.ts.map +1 -1
- package/dist/src/otel/durable-otel.js +5 -0
- package/dist/src/otel/durable-otel.js.map +1 -1
- package/dist/src/pollers.d.ts +10 -1
- package/dist/src/pollers.d.ts.map +1 -1
- package/dist/src/pollers.js +15 -5
- package/dist/src/pollers.js.map +1 -1
- package/dist/src/protocol.d.ts +12 -0
- package/dist/src/protocol.d.ts.map +1 -1
- package/dist/src/protocol.js +27 -1
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/remote-event.d.ts +6 -0
- package/dist/src/remote-event.d.ts.map +1 -0
- package/dist/src/remote-event.js +19 -0
- package/dist/src/remote-event.js.map +1 -0
- package/dist/src/remote-workflow-executor.d.ts +34 -12
- package/dist/src/remote-workflow-executor.d.ts.map +1 -1
- package/dist/src/remote-workflow-executor.js +42 -40
- package/dist/src/remote-workflow-executor.js.map +1 -1
- package/dist/src/run-detail-summary.d.ts +90 -3
- package/dist/src/run-detail-summary.d.ts.map +1 -1
- package/dist/src/run-detail-summary.js +360 -2
- package/dist/src/run-detail-summary.js.map +1 -1
- package/dist/src/run-facets.d.ts +48 -0
- package/dist/src/run-facets.d.ts.map +1 -0
- package/dist/src/run-facets.js +100 -0
- package/dist/src/run-facets.js.map +1 -0
- package/dist/src/run-gateway/interface.d.ts +27 -1
- package/dist/src/run-gateway/interface.d.ts.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.d.ts +32 -4
- package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.js +101 -5
- package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
- package/dist/src/run-gateway/run-request-responder.d.ts +18 -5
- package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
- package/dist/src/run-gateway/run-request-responder.js +155 -32
- package/dist/src/run-gateway/run-request-responder.js.map +1 -1
- package/dist/src/run-gateway/store-run-gateway.d.ts +23 -1
- package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -1
- package/dist/src/run-gateway/store-run-gateway.js +38 -0
- package/dist/src/run-gateway/store-run-gateway.js.map +1 -1
- package/dist/src/search-attributes-schema.d.ts +44 -0
- package/dist/src/search-attributes-schema.d.ts.map +1 -0
- package/dist/src/search-attributes-schema.js +51 -0
- package/dist/src/search-attributes-schema.js.map +1 -0
- package/dist/src/singleton-admission.d.ts +75 -0
- package/dist/src/singleton-admission.d.ts.map +1 -0
- package/dist/src/singleton-admission.js +156 -0
- package/dist/src/singleton-admission.js.map +1 -0
- package/dist/src/singleton-gate.d.ts +23 -8
- package/dist/src/singleton-gate.d.ts.map +1 -1
- package/dist/src/singleton-gate.js +59 -12
- package/dist/src/singleton-gate.js.map +1 -1
- package/dist/src/standard-schema.d.ts +83 -0
- package/dist/src/standard-schema.d.ts.map +1 -0
- package/dist/src/standard-schema.js +31 -0
- package/dist/src/standard-schema.js.map +1 -0
- package/dist/src/step-discovery.d.ts +21 -11
- package/dist/src/step-discovery.d.ts.map +1 -1
- package/dist/src/step-discovery.js +86 -45
- package/dist/src/step-discovery.js.map +1 -1
- package/dist/src/step-ref.d.ts +38 -12
- package/dist/src/step-ref.d.ts.map +1 -1
- package/dist/src/step-ref.js +5 -13
- package/dist/src/step-ref.js.map +1 -1
- package/dist/src/stores/factory.d.ts +6 -0
- package/dist/src/stores/factory.d.ts.map +1 -1
- package/dist/src/stores/factory.js +4 -1
- package/dist/src/stores/factory.js.map +1 -1
- package/dist/src/stores/lucid-helpers.d.ts +2 -0
- package/dist/src/stores/lucid-helpers.d.ts.map +1 -1
- package/dist/src/stores/lucid-helpers.js +7 -0
- package/dist/src/stores/lucid-helpers.js.map +1 -1
- package/dist/src/stores/lucid-mappers.d.ts +25 -0
- package/dist/src/stores/lucid-mappers.d.ts.map +1 -1
- package/dist/src/stores/lucid-mappers.js +81 -18
- package/dist/src/stores/lucid-mappers.js.map +1 -1
- package/dist/src/stores/lucid-schema.d.ts +59 -1
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +271 -25
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +61 -2
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +346 -41
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/telescope/dashboard.d.ts.map +1 -1
- package/dist/src/telescope/dashboard.js +30 -1
- package/dist/src/telescope/dashboard.js.map +1 -1
- package/dist/src/telescope/data-providers.d.ts +19 -1
- package/dist/src/telescope/data-providers.d.ts.map +1 -1
- package/dist/src/telescope/data-providers.js +119 -3
- package/dist/src/telescope/data-providers.js.map +1 -1
- package/dist/src/telescope/extension.d.ts.map +1 -1
- package/dist/src/telescope/extension.js +2 -1
- package/dist/src/telescope/extension.js.map +1 -1
- package/dist/src/telescope/index.d.ts +1 -1
- package/dist/src/telescope/index.d.ts.map +1 -1
- package/dist/src/telescope/index.js +1 -1
- package/dist/src/telescope/index.js.map +1 -1
- package/dist/src/testing/in-memory-state-store.d.ts +44 -15
- package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-state-store.js +204 -41
- package/dist/src/testing/in-memory-state-store.js.map +1 -1
- package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts +16 -0
- package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts.map +1 -0
- package/dist/src/testing-kit/checkpoint-aggregation-contract.js +228 -0
- package/dist/src/testing-kit/checkpoint-aggregation-contract.js.map +1 -0
- package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
- package/dist/src/testing-kit/state-store-conformance.js +355 -3
- package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
- package/dist/src/transport-pool.d.ts +15 -1
- package/dist/src/transport-pool.d.ts.map +1 -1
- package/dist/src/transport-pool.js +50 -4
- package/dist/src/transport-pool.js.map +1 -1
- package/dist/src/transports/adaptive-concurrency.d.ts +168 -0
- package/dist/src/transports/adaptive-concurrency.d.ts.map +1 -0
- package/dist/src/transports/adaptive-concurrency.js +353 -0
- package/dist/src/transports/adaptive-concurrency.js.map +1 -0
- package/dist/src/transports/bullmq/adaptive-concurrency.d.ts +1 -165
- package/dist/src/transports/bullmq/adaptive-concurrency.d.ts.map +1 -1
- package/dist/src/transports/bullmq/adaptive-concurrency.js +3 -351
- package/dist/src/transports/bullmq/adaptive-concurrency.js.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.d.ts +49 -1
- package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.js +330 -38
- package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
- package/dist/src/transports/bullmq/deps.d.ts +18 -2
- package/dist/src/transports/bullmq/deps.d.ts.map +1 -1
- package/dist/src/transports/bullmq/deps.js +44 -2
- package/dist/src/transports/bullmq/deps.js.map +1 -1
- package/dist/src/transports/db-helpers.d.ts +39 -0
- package/dist/src/transports/db-helpers.d.ts.map +1 -1
- package/dist/src/transports/db-helpers.js +73 -0
- package/dist/src/transports/db-helpers.js.map +1 -1
- package/dist/src/transports/db-remote.d.ts +53 -0
- package/dist/src/transports/db-remote.d.ts.map +1 -0
- package/dist/src/transports/db-remote.js +147 -0
- package/dist/src/transports/db-remote.js.map +1 -0
- package/dist/src/transports/db-schema.d.ts +44 -1
- package/dist/src/transports/db-schema.d.ts.map +1 -1
- package/dist/src/transports/db-schema.js +227 -88
- package/dist/src/transports/db-schema.js.map +1 -1
- package/dist/src/transports/db.d.ts +189 -6
- package/dist/src/transports/db.d.ts.map +1 -1
- package/dist/src/transports/db.js +1291 -137
- package/dist/src/transports/db.js.map +1 -1
- package/dist/src/transports/event-emitter.d.ts +8 -0
- package/dist/src/transports/event-emitter.d.ts.map +1 -1
- package/dist/src/transports/event-emitter.js +36 -3
- package/dist/src/transports/event-emitter.js.map +1 -1
- package/dist/src/transports/factory.d.ts +110 -5
- package/dist/src/transports/factory.d.ts.map +1 -1
- package/dist/src/transports/factory.js +56 -9
- package/dist/src/transports/factory.js.map +1 -1
- package/dist/src/transports/queue-mock-adapter.d.ts +7 -2
- package/dist/src/transports/queue-mock-adapter.d.ts.map +1 -1
- package/dist/src/transports/queue-mock-adapter.js +18 -2
- package/dist/src/transports/queue-mock-adapter.js.map +1 -1
- package/dist/src/transports/queue-remote.d.ts +146 -0
- package/dist/src/transports/queue-remote.d.ts.map +1 -0
- package/dist/src/transports/queue-remote.js +398 -0
- package/dist/src/transports/queue-remote.js.map +1 -0
- package/dist/src/transports/queue.d.ts +159 -6
- package/dist/src/transports/queue.d.ts.map +1 -1
- package/dist/src/transports/queue.js +747 -37
- package/dist/src/transports/queue.js.map +1 -1
- package/dist/src/transports/task-failure.d.ts +31 -0
- package/dist/src/transports/task-failure.d.ts.map +1 -0
- package/dist/src/transports/task-failure.js +50 -0
- package/dist/src/transports/task-failure.js.map +1 -0
- package/dist/src/workflow-als.d.ts +1 -1
- package/dist/src/workflow-als.d.ts.map +1 -1
- package/dist/src/workflow-ctx.d.ts +10 -0
- package/dist/src/workflow-ctx.d.ts.map +1 -1
- package/dist/src/workflow-ctx.js +97 -15
- package/dist/src/workflow-ctx.js.map +1 -1
- package/dist/src/workflow-discovery.d.ts +32 -41
- package/dist/src/workflow-discovery.d.ts.map +1 -1
- package/dist/src/workflow-discovery.js +65 -88
- package/dist/src/workflow-discovery.js.map +1 -1
- package/dist/src/workflow-ref.d.ts +24 -0
- package/dist/src/workflow-ref.d.ts.map +1 -1
- package/dist/src/workflow-ref.js.map +1 -1
- package/dist/stubs/config/durable.stub +6 -0
- package/dist/stubs/config/durable_dashboard.stub +7 -3
- package/dist/stubs/database/migrations/create_durable_tables.stub +2 -1
- package/dist/stubs/database/migrations/create_durable_transport_messages.stub +43 -0
- package/dist/stubs/database/migrations/create_durable_transport_tables.stub +12 -9
- package/dist/stubs/database/migrations/create_durable_transport_worker_keys.stub +1 -1
- package/dist/stubs/make/workflow/main.stub +1 -1
- package/package.json +6 -4
- package/skills/durable-cluster/SKILL.md +80 -11
- package/skills/durable-determinism/SKILL.md +11 -5
- package/skills/durable-reliability/SKILL.md +77 -37
- package/skills/durable-setup/SKILL.md +51 -22
- package/skills/durable-transports-stores/SKILL.md +128 -18
- package/skills/durable-workflows/SKILL.md +71 -18
- package/dist/assets/spa/assets/index-DdB9zxuX.js +0 -16
- package/dist/assets/spa/assets/index-DdB9zxuX.js.map +0 -1
|
@@ -1,10 +1,30 @@
|
|
|
1
|
-
import { runStepHandler } from '../../protocol.js';
|
|
1
|
+
import { runStepHandler, withTurnHeartbeat } from '../../protocol.js';
|
|
2
2
|
import { swallowSubscribe } from '../../safe-subscribe.js';
|
|
3
3
|
import { isWorkflowTask } from '../../workflow-turn.js';
|
|
4
|
+
import { failedTaskIdentity, fanOutDecision, infrastructureFailure, } from '../task-failure.js';
|
|
4
5
|
import { AdaptiveController } from './adaptive-concurrency.js';
|
|
5
6
|
import { workerConcurrency, } from './deps.js';
|
|
6
7
|
import { decisionsName, effectivePrefix, heartbeatChannel, resultsName, routingToken, runReplyChannel, runRequestName, startRunName, stepEventsName, tasksName, tenantEventsChannel, workerDescriptorTokenPrefix, workerHeartbeatKey, workerHeartbeatKeyPrefix, } from './naming.js';
|
|
7
8
|
import { buildInstanceId, heartbeatKeyValue, jobOptions, parseHeartbeatValue, resultJobOptions, taskJobOptions, WORKER_HEARTBEAT_INTERVAL_MS, WORKER_HEARTBEAT_TTL_SECONDS, } from './serialization.js';
|
|
9
|
+
/** Default {@link BullMQTransportOptions.pingIntervalMs}. */
|
|
10
|
+
const DEFAULT_PING_INTERVAL_MS = 30_000;
|
|
11
|
+
/** How long one watchdog PING may take before its subscriber connection is presumed dead. */
|
|
12
|
+
const SUBSCRIBER_PING_TIMEOUT_MS = 5_000;
|
|
13
|
+
/** `undefined` → the default, `0`/`false` → disabled, any other number → itself. */
|
|
14
|
+
function normalizePingInterval(value) {
|
|
15
|
+
if (value === undefined)
|
|
16
|
+
return DEFAULT_PING_INTERVAL_MS;
|
|
17
|
+
if (value === false || value === 0)
|
|
18
|
+
return false;
|
|
19
|
+
// setInterval turns a negative, NaN or > 2^31-1 delay into ~1ms: a PING hot loop. Treat those as
|
|
20
|
+
// unset (the default), like a non-positive stepTimeoutMs.
|
|
21
|
+
if (!Number.isFinite(value) || value < 0 || value > MAX_TIMER_DELAY_MS) {
|
|
22
|
+
return DEFAULT_PING_INTERVAL_MS;
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
/** The largest delay `setInterval` honours (a signed 32-bit int); anything above fires at ~1ms. */
|
|
27
|
+
const MAX_TIMER_DELAY_MS = 2 ** 31 - 1;
|
|
8
28
|
/**
|
|
9
29
|
* A queue-backed {@link Transport} over BullMQ/Redis, BYTE-COMPATIBLE with the aviary
|
|
10
30
|
* (`nestjs-durable`) BullMQ transport and its Python raw-redis worker — so an Adonis engine can
|
|
@@ -37,6 +57,9 @@ export class BullMQTransport {
|
|
|
37
57
|
// Shared by every task worker: tracks in-flight work and the step-completion window, snapshots the
|
|
38
58
|
// heartbeat status and, in adaptive mode, sets every task worker's `concurrency` on each move.
|
|
39
59
|
#controller;
|
|
60
|
+
// Deferred consumption (see deferConsumers): worker constructions parked until startConsumers().
|
|
61
|
+
#consumersDeferred = false;
|
|
62
|
+
#deferredWorkers = [];
|
|
40
63
|
#handlers = new Map();
|
|
41
64
|
// Worker-side workflow turn consumers, keyed by workflow name — a `workflow`-shaped job routes here.
|
|
42
65
|
#workflowTurns = new Map();
|
|
@@ -45,6 +68,7 @@ export class BullMQTransport {
|
|
|
45
68
|
#taskWorkers = new Map();
|
|
46
69
|
#resultsWorker;
|
|
47
70
|
#decisionsWorker;
|
|
71
|
+
#decisionHandlers = new Set();
|
|
48
72
|
#stepEventsWorker;
|
|
49
73
|
// Long-step heartbeat pub/sub (distinct from the worker-liveness key registry below).
|
|
50
74
|
#heartbeatPub;
|
|
@@ -64,6 +88,12 @@ export class BullMQTransport {
|
|
|
64
88
|
#tenantEventSub;
|
|
65
89
|
#tenantEventChannels = new Set();
|
|
66
90
|
#tenantEventHandlers = new Map();
|
|
91
|
+
// Every pub/sub SUBSCRIBER connection, probed by the one shared watchdog interval. Publish-only
|
|
92
|
+
// connections are not tracked: they write, so a dead one fails its next publish instead of silently.
|
|
93
|
+
#subscribers = new Set();
|
|
94
|
+
#pingIntervalMs;
|
|
95
|
+
#stepTimeoutMs;
|
|
96
|
+
#pingWatchdogTimer;
|
|
67
97
|
constructor(options) {
|
|
68
98
|
this.#deps = options.deps;
|
|
69
99
|
this.#partition = options.partition;
|
|
@@ -76,6 +106,93 @@ export class BullMQTransport {
|
|
|
76
106
|
this.#closeTimeoutMs = options.closeTimeoutMs ?? DEFAULT_CLOSE_TIMEOUT_MS;
|
|
77
107
|
this.#resultConcurrency = workerConcurrency(options.resultConcurrency);
|
|
78
108
|
this.#concurrency = options.concurrency;
|
|
109
|
+
this.#pingIntervalMs = normalizePingInterval(options.pingIntervalMs);
|
|
110
|
+
this.#stepTimeoutMs =
|
|
111
|
+
options.stepTimeoutMs !== undefined &&
|
|
112
|
+
Number.isFinite(options.stepTimeoutMs) &&
|
|
113
|
+
options.stepTimeoutMs > 0
|
|
114
|
+
? options.stepTimeoutMs
|
|
115
|
+
: undefined;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* A subscriber-mode connection: a fresh `makeRedis()` client registered with the ping watchdog and
|
|
119
|
+
* given an `error` listener. Every pub/sub subscriber goes through here, because a subscriber never
|
|
120
|
+
* writes on its own and so cannot surface a silent connection loss by itself.
|
|
121
|
+
*/
|
|
122
|
+
#subscriberRedis(label) {
|
|
123
|
+
const sub = this.#deps.makeRedis();
|
|
124
|
+
this.#trackSubscriber(sub, label);
|
|
125
|
+
return sub;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Attach a de-duplicated `error` listener and register `sub` with the watchdog. The listener is not
|
|
129
|
+
* hygiene: an `error` emitted with no listener throws on a plain EventEmitter (and a dead,
|
|
130
|
+
* reconnecting subscriber emits them in bursts), so a connection nothing else listens to could take
|
|
131
|
+
* the process down. The first error of each reconnect burst goes to `onError` when one is
|
|
132
|
+
* configured, else to `console.warn`.
|
|
133
|
+
*/
|
|
134
|
+
#trackSubscriber(sub, label) {
|
|
135
|
+
this.#subscribers.add(sub);
|
|
136
|
+
let loggedSinceReady = false;
|
|
137
|
+
sub.on('error', ((err) => {
|
|
138
|
+
if (loggedSinceReady)
|
|
139
|
+
return; // one report per reconnect burst, not one per retry
|
|
140
|
+
loggedSinceReady = true;
|
|
141
|
+
if (this.#hasOnError)
|
|
142
|
+
this.#onError(err);
|
|
143
|
+
else
|
|
144
|
+
console.warn(`[adonis-durable] bullmq ${label} subscriber error: ${err?.message ?? err}`);
|
|
145
|
+
}));
|
|
146
|
+
sub.on('ready', (() => {
|
|
147
|
+
loggedSinceReady = false;
|
|
148
|
+
}));
|
|
149
|
+
this.#startPingWatchdog();
|
|
150
|
+
}
|
|
151
|
+
/** Start the ONE shared watchdog interval (idempotent; unref'd; cleared in {@link close}). */
|
|
152
|
+
#startPingWatchdog() {
|
|
153
|
+
if (this.#pingWatchdogTimer || this.#pingIntervalMs === false)
|
|
154
|
+
return;
|
|
155
|
+
this.#pingWatchdogTimer = setInterval(() => {
|
|
156
|
+
for (const sub of this.#subscribers)
|
|
157
|
+
void this.#pingSubscriber(sub);
|
|
158
|
+
}, this.#pingIntervalMs);
|
|
159
|
+
this.#pingWatchdogTimer.unref?.();
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* PING one subscriber; on rejection or timeout, `disconnect(true)` it so ioredis reconnects and
|
|
163
|
+
* `autoResubscribe` restores its channels. A connection that is not `'ready'` is already
|
|
164
|
+
* mid-(re)connect and is skipped. The timeout is capped at the interval, so a short interval
|
|
165
|
+
* shortens the whole detect-and-reconnect cycle.
|
|
166
|
+
*/
|
|
167
|
+
async #pingSubscriber(sub) {
|
|
168
|
+
if (typeof sub.ping !== 'function')
|
|
169
|
+
return;
|
|
170
|
+
if (sub.status !== undefined && sub.status !== 'ready')
|
|
171
|
+
return;
|
|
172
|
+
const timeoutMs = this.#pingIntervalMs === false
|
|
173
|
+
? SUBSCRIBER_PING_TIMEOUT_MS
|
|
174
|
+
: Math.min(SUBSCRIBER_PING_TIMEOUT_MS, this.#pingIntervalMs);
|
|
175
|
+
try {
|
|
176
|
+
await new Promise((resolve, reject) => {
|
|
177
|
+
const timer = setTimeout(() => reject(new Error('ping timed out')), timeoutMs);
|
|
178
|
+
sub.ping().then(() => {
|
|
179
|
+
clearTimeout(timer);
|
|
180
|
+
resolve();
|
|
181
|
+
}, (err) => {
|
|
182
|
+
clearTimeout(timer);
|
|
183
|
+
reject(err instanceof Error ? err : new Error(String(err)));
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
// A ping in flight when close() lands must not resurrect the connection close() just dropped:
|
|
189
|
+
// disconnect(true) reconnects rather than closes.
|
|
190
|
+
if (this.#closing)
|
|
191
|
+
return;
|
|
192
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
193
|
+
console.warn(`[adonis-durable] bullmq subscriber connection unresponsive (${message}); reconnecting to restore its subscription`);
|
|
194
|
+
sub.disconnect(true);
|
|
195
|
+
}
|
|
79
196
|
}
|
|
80
197
|
/** The shared concurrency controller, created on first use (a task worker, a job or a heartbeat). */
|
|
81
198
|
#concurrencyController() {
|
|
@@ -90,6 +207,78 @@ export class BullMQTransport {
|
|
|
90
207
|
}
|
|
91
208
|
return this.#controller;
|
|
92
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Park every point-to-point consumer registered from now on — the task, results, decisions,
|
|
212
|
+
* step-events, start-run and run-request workers — until {@link startConsumers}.
|
|
213
|
+
*
|
|
214
|
+
* WHY: a BullMQ `Worker` starts fetching the moment it is constructed, and these queues hand each
|
|
215
|
+
* job to ONE consumer. Any process that registers them competes with the real worker fleet: a
|
|
216
|
+
* `node ace` command or REPL claims jobs it then dies holding, and steals results addressed to the
|
|
217
|
+
* long-lived engine (the bug the `queue` transport fixed the same way). Deferring construction makes
|
|
218
|
+
* such a process a pure producer — it still dispatches and publishes; the jobs stay on the queues.
|
|
219
|
+
* Pub/sub subscriptions (heartbeats, run replies, tenant events) are broadcast, take nothing from
|
|
220
|
+
* anyone, and are left alone.
|
|
221
|
+
*
|
|
222
|
+
* Call it before any subscription is made (the provider does, right after building the transport);
|
|
223
|
+
* workers already started are not stopped.
|
|
224
|
+
*/
|
|
225
|
+
deferConsumers() {
|
|
226
|
+
this.#consumersDeferred = true;
|
|
227
|
+
}
|
|
228
|
+
/** Construct every worker parked by {@link deferConsumers} and stop deferring — the explicit "this
|
|
229
|
+
* process IS a worker" declaration (`durable:work` makes it via `engine.startConsumers()`).
|
|
230
|
+
* Idempotent; a no-op when consumption was never deferred. */
|
|
231
|
+
startConsumers() {
|
|
232
|
+
if (!this.#consumersDeferred)
|
|
233
|
+
return;
|
|
234
|
+
this.#consumersDeferred = false;
|
|
235
|
+
for (const start of this.#deferredWorkers.splice(0))
|
|
236
|
+
start();
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* `deps.makeWorker`, unless consumption is deferred: then a stand-in that records `failed` listeners
|
|
240
|
+
* and `concurrency` assignments (the adaptive controller keeps setting it) and builds the real
|
|
241
|
+
* worker — replaying both — on {@link startConsumers}. `close()` on a never-started stand-in is a
|
|
242
|
+
* no-op, so a producer process shuts down without ever touching the broker's consumer side.
|
|
243
|
+
*/
|
|
244
|
+
#makeWorker(name, process, opts) {
|
|
245
|
+
if (!this.#consumersDeferred)
|
|
246
|
+
return this.#deps.makeWorker(name, process, opts);
|
|
247
|
+
const listeners = [];
|
|
248
|
+
let real;
|
|
249
|
+
let closed = false;
|
|
250
|
+
let concurrency = opts?.concurrency;
|
|
251
|
+
const standIn = {
|
|
252
|
+
get concurrency() {
|
|
253
|
+
return real ? real.concurrency : concurrency;
|
|
254
|
+
},
|
|
255
|
+
set concurrency(limit) {
|
|
256
|
+
if (real)
|
|
257
|
+
real.concurrency = limit;
|
|
258
|
+
else
|
|
259
|
+
concurrency = limit;
|
|
260
|
+
},
|
|
261
|
+
on: (_event, listener) => {
|
|
262
|
+
if (real)
|
|
263
|
+
real.on('failed', listener);
|
|
264
|
+
else
|
|
265
|
+
listeners.push(listener);
|
|
266
|
+
return standIn;
|
|
267
|
+
},
|
|
268
|
+
close: async () => {
|
|
269
|
+
closed = true;
|
|
270
|
+
await real?.close();
|
|
271
|
+
},
|
|
272
|
+
};
|
|
273
|
+
this.#deferredWorkers.push(() => {
|
|
274
|
+
if (closed)
|
|
275
|
+
return;
|
|
276
|
+
real = this.#deps.makeWorker(name, process, concurrency !== undefined ? { ...opts, concurrency } : opts);
|
|
277
|
+
for (const listener of listeners)
|
|
278
|
+
real.on('failed', listener);
|
|
279
|
+
});
|
|
280
|
+
return standIn;
|
|
281
|
+
}
|
|
93
282
|
/** Stable id stamped on this instance's worker-liveness keys. */
|
|
94
283
|
get instanceId() {
|
|
95
284
|
return this.#instanceId;
|
|
@@ -178,7 +367,7 @@ export class BullMQTransport {
|
|
|
178
367
|
const controller = this.#concurrencyController();
|
|
179
368
|
// A new worker starts at the controller's live limit, so a token registered after an adaptive
|
|
180
369
|
// move joins at the current limit rather than at `start`.
|
|
181
|
-
const worker = this.#
|
|
370
|
+
const worker = this.#makeWorker(tasksName(this.#effectivePrefix(), token), (job) => this.#runJob(job.data), this.#concurrency !== undefined ? { concurrency: controller.limit } : undefined);
|
|
182
371
|
// Terminal-failure bridge: a task job reaching a TERMINAL `failed` state is an INFRASTRUCTURE
|
|
183
372
|
// failure (worker crash / stalled-count exhaustion), never a handler business error —
|
|
184
373
|
// `runStepHandler` catches every handler throw and publishes a failed StepResult so the job
|
|
@@ -186,7 +375,7 @@ export class BullMQTransport {
|
|
|
186
375
|
// its `pending` checkpoint forever. Synthesize a RETRYABLE failed StepResult so the engine settles
|
|
187
376
|
// the checkpoint and re-dispatches. A PEER replica's worker fails a crashed worker's stalled job,
|
|
188
377
|
// so this still fires cross-process. (A failed WORKFLOW job carries no step identity, so the bridge
|
|
189
|
-
// no-ops for it — the
|
|
378
|
+
// no-ops for it — the turn's liveness window (`remoteAdvanceSilenceMs`) re-drives it instead.)
|
|
190
379
|
worker.on('failed', (job, error) => {
|
|
191
380
|
const identity = failedTaskIdentity(job?.data);
|
|
192
381
|
if (!identity)
|
|
@@ -195,7 +384,18 @@ export class BullMQTransport {
|
|
|
195
384
|
});
|
|
196
385
|
this.#taskWorkers.set(token, worker);
|
|
197
386
|
controller.start();
|
|
198
|
-
this
|
|
387
|
+
// Liveness says "a worker consumes this token". A deferred process (a `node ace` producer) has
|
|
388
|
+
// no worker yet, so it must not show up in groupHealth / the dashboard as one: the heartbeat
|
|
389
|
+
// starts with the parked worker, on startConsumers() (the queue and db transports do the same).
|
|
390
|
+
if (this.#consumersDeferred) {
|
|
391
|
+
this.#deferredWorkers.push(() => {
|
|
392
|
+
if (!this.#closing)
|
|
393
|
+
this.#startWorkerHeartbeat(token);
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
this.#startWorkerHeartbeat(token);
|
|
398
|
+
}
|
|
199
399
|
}
|
|
200
400
|
/** Route one task job by SHAPE (spec §6.3): a workflow turn runs the replay → decision path, a step
|
|
201
401
|
* runs the `runStepHandler` → result path. Both kinds share a token's queue but never each other's. */
|
|
@@ -229,7 +429,7 @@ export class BullMQTransport {
|
|
|
229
429
|
try {
|
|
230
430
|
const turn = this.#workflowTurns.get(task.workflow);
|
|
231
431
|
decision = turn
|
|
232
|
-
? await turn(task)
|
|
432
|
+
? await withTurnHeartbeat(task, (beat) => this.heartbeat(beat), () => turn(task))
|
|
233
433
|
: {
|
|
234
434
|
taskId: task.taskId,
|
|
235
435
|
runId: task.runId,
|
|
@@ -267,7 +467,7 @@ export class BullMQTransport {
|
|
|
267
467
|
async #runTask(task) {
|
|
268
468
|
let result;
|
|
269
469
|
try {
|
|
270
|
-
result = await runStepHandler(task, this.#handlers.get(task.name), (beat) => this.heartbeat(beat));
|
|
470
|
+
result = await this.#withStepTimeout(task, runStepHandler(task, this.#handlers.get(task.name), (beat) => this.heartbeat(beat)));
|
|
271
471
|
}
|
|
272
472
|
catch (err) {
|
|
273
473
|
// runStepHandler is pure (a handler throw becomes a failed StepResult), so reaching here is a
|
|
@@ -296,6 +496,32 @@ export class BullMQTransport {
|
|
|
296
496
|
throw err;
|
|
297
497
|
}
|
|
298
498
|
}
|
|
499
|
+
/**
|
|
500
|
+
* Race a step handler against {@link BullMQTransportOptions.stepTimeoutMs}. At the ceiling, resolve
|
|
501
|
+
* with a RETRYABLE failed StepResult and abandon the still-pending handler (a wedged await cannot be
|
|
502
|
+
* cancelled from outside; what matters is that the run stops waiting on it). A rejection settles
|
|
503
|
+
* through the caller's catch, as before. No ceiling configured: pass-through.
|
|
504
|
+
*/
|
|
505
|
+
#withStepTimeout(task, run) {
|
|
506
|
+
const ms = this.#stepTimeoutMs;
|
|
507
|
+
if (ms === undefined)
|
|
508
|
+
return run;
|
|
509
|
+
let timer;
|
|
510
|
+
const ceiling = new Promise((resolve) => {
|
|
511
|
+
timer = setTimeout(() => resolve({
|
|
512
|
+
runId: task.runId,
|
|
513
|
+
seq: task.seq,
|
|
514
|
+
stepId: task.stepId,
|
|
515
|
+
status: 'failed',
|
|
516
|
+
error: {
|
|
517
|
+
message: `remote step worker failed: step exceeded stepTimeoutMs (${ms}ms), presumed wedged`,
|
|
518
|
+
retryable: true,
|
|
519
|
+
},
|
|
520
|
+
}), ms);
|
|
521
|
+
timer.unref?.();
|
|
522
|
+
});
|
|
523
|
+
return Promise.race([run, ceiling]).finally(() => clearTimeout(timer));
|
|
524
|
+
}
|
|
299
525
|
/** Worker side: publish a liveness heartbeat for an in-flight long step on the `${P}-heartbeat`
|
|
300
526
|
* pub/sub channel (resets the engine's `timeoutMs` window on whichever pod is awaiting it). */
|
|
301
527
|
async heartbeat(beat) {
|
|
@@ -306,13 +532,7 @@ export class BullMQTransport {
|
|
|
306
532
|
/** Publish a synthetic FAILED StepResult for a task that failed at the infrastructure level (see the
|
|
307
533
|
* `handle()` bridge). Correlated purely by runId/seq/stepId (StepResult has no `name`). Best-effort. */
|
|
308
534
|
async #bridgeTaskFailure(identity, reason) {
|
|
309
|
-
const result =
|
|
310
|
-
runId: identity.runId,
|
|
311
|
-
seq: identity.seq,
|
|
312
|
-
stepId: identity.stepId,
|
|
313
|
-
status: 'failed',
|
|
314
|
-
error: { message: `remote step worker failed: ${reason}`, retryable: true },
|
|
315
|
-
};
|
|
535
|
+
const result = infrastructureFailure(identity, reason);
|
|
316
536
|
try {
|
|
317
537
|
await this.#queue(resultsName(this.#effectivePrefix())).add('result', result, resultJobOptions());
|
|
318
538
|
}
|
|
@@ -326,7 +546,7 @@ export class BullMQTransport {
|
|
|
326
546
|
onResult(handler) {
|
|
327
547
|
if (this.#resultsWorker)
|
|
328
548
|
return;
|
|
329
|
-
this.#resultsWorker = this.#
|
|
549
|
+
this.#resultsWorker = this.#makeWorker(resultsName(this.#effectivePrefix()), (job) => handler(job.data), { concurrency: this.#resultConcurrency });
|
|
330
550
|
this.#resultsWorker.on('failed', (job, err) => {
|
|
331
551
|
if (!job || (job.attemptsMade ?? 0) < (job.opts?.attempts ?? 1))
|
|
332
552
|
return;
|
|
@@ -339,9 +559,23 @@ export class BullMQTransport {
|
|
|
339
559
|
});
|
|
340
560
|
}
|
|
341
561
|
onDecision(handler) {
|
|
562
|
+
// EVERY handler gets every decision. An engine subscribes one stable handler (it applies a decision
|
|
563
|
+
// by run id, dropping any its run no longer awaits); a set keeps a second registration of it, or a
|
|
564
|
+
// second engine sharing this transport, from being lost — keeping only the first handler (an old
|
|
565
|
+
// behaviour) silently dropped decisions, so runs never advanced.
|
|
566
|
+
this.#decisionHandlers.add(handler);
|
|
342
567
|
if (this.#decisionsWorker)
|
|
343
568
|
return;
|
|
344
|
-
this.#decisionsWorker = this.#
|
|
569
|
+
this.#decisionsWorker = this.#makeWorker(decisionsName(this.#effectivePrefix()), async (job) => {
|
|
570
|
+
const decision = job.data;
|
|
571
|
+
// Every handler, concurrently; all settle before a failure fails (and retries) the job.
|
|
572
|
+
await fanOutDecision(this.#decisionHandlers, decision, (err) => {
|
|
573
|
+
if (this.#hasOnError)
|
|
574
|
+
this.#onError(err);
|
|
575
|
+
else
|
|
576
|
+
console.warn(`[adonis-durable] bullmq decision handler failed: ${String(err)}`);
|
|
577
|
+
});
|
|
578
|
+
});
|
|
345
579
|
}
|
|
346
580
|
/** workflow worker → engine: stream a local step's lifecycle on `${P}-step-events` (job `stepEvent`),
|
|
347
581
|
* point-to-point so one engine instance checkpoints each once. */
|
|
@@ -351,17 +585,18 @@ export class BullMQTransport {
|
|
|
351
585
|
onStepEvent(handler) {
|
|
352
586
|
if (this.#stepEventsWorker)
|
|
353
587
|
return;
|
|
354
|
-
this.#stepEventsWorker = this.#
|
|
588
|
+
this.#stepEventsWorker = this.#makeWorker(stepEventsName(this.#effectivePrefix()), (job) => handler(job.data));
|
|
355
589
|
}
|
|
356
590
|
onHeartbeat(handler) {
|
|
357
591
|
if (this.#heartbeatSub)
|
|
358
592
|
return; // one subscription per transport
|
|
359
|
-
const sub = this.#
|
|
593
|
+
const sub = this.#subscriberRedis('heartbeat');
|
|
360
594
|
this.#heartbeatSub = sub;
|
|
361
595
|
swallowSubscribe(sub.subscribe(heartbeatChannel(this.#effectivePrefix())), () => this.#closing, 'bullmq heartbeat', this.#subscribeErrorSink());
|
|
362
596
|
sub.on('message', ((_channel, payload) => {
|
|
363
597
|
try {
|
|
364
|
-
|
|
598
|
+
// The engine's handler writes to the store: report a rejection, never leave it unhandled.
|
|
599
|
+
void handler(JSON.parse(payload)).catch((err) => this.#onError(err));
|
|
365
600
|
}
|
|
366
601
|
catch {
|
|
367
602
|
/* ignore malformed heartbeats */
|
|
@@ -475,6 +710,76 @@ export class BullMQTransport {
|
|
|
475
710
|
this.#descriptorCache.set(token, { at: Date.now(), descriptors });
|
|
476
711
|
return descriptors;
|
|
477
712
|
}
|
|
713
|
+
/** Every live descriptor on every token: SCAN `${P}-worker-descriptor:*`, MGET per page. Degrades
|
|
714
|
+
* to `[]` (reported through `onError`) when the keyspace cannot be read. */
|
|
715
|
+
async readAllWorkerDescriptors() {
|
|
716
|
+
const client = this.#workerRedisClient();
|
|
717
|
+
const descriptors = [];
|
|
718
|
+
try {
|
|
719
|
+
await this.#scanValues(client, `${this.#effectivePrefix()}-worker-descriptor:`, (_key, raw) => {
|
|
720
|
+
if (raw == null)
|
|
721
|
+
return;
|
|
722
|
+
try {
|
|
723
|
+
descriptors.push(JSON.parse(raw));
|
|
724
|
+
}
|
|
725
|
+
catch {
|
|
726
|
+
/* a malformed descriptor reads as absent */
|
|
727
|
+
}
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
catch (err) {
|
|
731
|
+
this.#onError(err);
|
|
732
|
+
return [];
|
|
733
|
+
}
|
|
734
|
+
return descriptors;
|
|
735
|
+
}
|
|
736
|
+
/** Every live worker heartbeat on every token: SCAN `${P}-worker-heartbeat:*`. A key is
|
|
737
|
+
* `<prefix><token>:<instance>` and neither segment carries a `:`. Degrades to `[]`. */
|
|
738
|
+
async readAllWorkerHeartbeats() {
|
|
739
|
+
const client = this.#workerRedisClient();
|
|
740
|
+
const prefix = workerHeartbeatKeyPrefix(this.#effectivePrefix());
|
|
741
|
+
const beats = [];
|
|
742
|
+
try {
|
|
743
|
+
await this.#scanValues(client, prefix, (key, raw) => {
|
|
744
|
+
const rest = key.slice(prefix.length);
|
|
745
|
+
const sep = rest.indexOf(':');
|
|
746
|
+
if (sep <= 0)
|
|
747
|
+
return;
|
|
748
|
+
const parsed = parseHeartbeatValue(raw);
|
|
749
|
+
beats.push({
|
|
750
|
+
group: rest.slice(0, sep),
|
|
751
|
+
instanceId: rest.slice(sep + 1),
|
|
752
|
+
lastBeatAt: parsed.lastBeatAt,
|
|
753
|
+
...(parsed.status !== undefined
|
|
754
|
+
? { status: parsed.status }
|
|
755
|
+
: {}),
|
|
756
|
+
});
|
|
757
|
+
});
|
|
758
|
+
}
|
|
759
|
+
catch (err) {
|
|
760
|
+
this.#onError(err);
|
|
761
|
+
return [];
|
|
762
|
+
}
|
|
763
|
+
return beats;
|
|
764
|
+
}
|
|
765
|
+
/** SCAN every key under `prefix` (never KEYS) and hand each key and its value to `visit`. */
|
|
766
|
+
async #scanValues(client, prefix, visit) {
|
|
767
|
+
let cursor = '0';
|
|
768
|
+
do {
|
|
769
|
+
const [next, keys] = await client.scan(cursor, 'MATCH', `${prefix}*`, 'COUNT', 100);
|
|
770
|
+
cursor = next;
|
|
771
|
+
if (keys.length === 0)
|
|
772
|
+
continue;
|
|
773
|
+
const raws = client.mget
|
|
774
|
+
? await client.mget(...keys)
|
|
775
|
+
: await Promise.all(keys.map((k) => client.get(k)));
|
|
776
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
777
|
+
const key = keys[i];
|
|
778
|
+
if (key !== undefined)
|
|
779
|
+
visit(key, raws[i] ?? null);
|
|
780
|
+
}
|
|
781
|
+
} while (cursor !== '0');
|
|
782
|
+
}
|
|
478
783
|
/** Per-group worker-health: queue depth (waiting+active+delayed+prioritized) + live workers (their
|
|
479
784
|
* non-expired heartbeat keys). `group` is a routing token — the same value a dispatch targets. */
|
|
480
785
|
async groupHealth(group) {
|
|
@@ -535,7 +840,7 @@ export class BullMQTransport {
|
|
|
535
840
|
onStartRun(handler) {
|
|
536
841
|
if (this.#startRunWorker)
|
|
537
842
|
return;
|
|
538
|
-
this.#startRunWorker = this.#
|
|
843
|
+
this.#startRunWorker = this.#makeWorker(startRunName(this.#effectivePrefix()), (job) => handler(job.data));
|
|
539
844
|
}
|
|
540
845
|
/** tenant → control plane: enqueue a {@link RunRequest} on `${P}-run-request` (job `runRequest`). */
|
|
541
846
|
async dispatchRunRequest(msg) {
|
|
@@ -545,7 +850,7 @@ export class BullMQTransport {
|
|
|
545
850
|
onRunRequest(handler) {
|
|
546
851
|
if (this.#runRequestWorker)
|
|
547
852
|
return;
|
|
548
|
-
this.#runRequestWorker = this.#
|
|
853
|
+
this.#runRequestWorker = this.#makeWorker(runRequestName(this.#effectivePrefix()), (job) => handler(job.data));
|
|
549
854
|
}
|
|
550
855
|
/** control plane → tenant: publish a correlated {@link RunReply} on `${P}-run-reply` (pub/sub). */
|
|
551
856
|
async publishRunReply(reply) {
|
|
@@ -558,7 +863,7 @@ export class BullMQTransport {
|
|
|
558
863
|
if (this.#runReplySub)
|
|
559
864
|
return; // one subscription per transport
|
|
560
865
|
const channel = runReplyChannel(this.#effectivePrefix());
|
|
561
|
-
const sub = this.#
|
|
866
|
+
const sub = this.#subscriberRedis('run-reply');
|
|
562
867
|
this.#runReplySub = sub;
|
|
563
868
|
swallowSubscribe(sub.subscribe(channel), () => this.#closing, 'bullmq run-reply', this.#subscribeErrorSink());
|
|
564
869
|
sub.on('message', ((msgChannel, payload) => {
|
|
@@ -606,7 +911,7 @@ export class BullMQTransport {
|
|
|
606
911
|
#tenantEventSubscriber() {
|
|
607
912
|
if (this.#tenantEventSub)
|
|
608
913
|
return this.#tenantEventSub;
|
|
609
|
-
const sub = this.#
|
|
914
|
+
const sub = this.#subscriberRedis('tenant-event');
|
|
610
915
|
this.#tenantEventSub = sub;
|
|
611
916
|
sub.on('message', ((msgChannel, payload) => {
|
|
612
917
|
const handlers = this.#tenantEventHandlers.get(msgChannel);
|
|
@@ -634,6 +939,9 @@ export class BullMQTransport {
|
|
|
634
939
|
if (this.#workerHeartbeatTimer)
|
|
635
940
|
clearInterval(this.#workerHeartbeatTimer);
|
|
636
941
|
this.#workerHeartbeatTimer = undefined;
|
|
942
|
+
if (this.#pingWatchdogTimer)
|
|
943
|
+
clearInterval(this.#pingWatchdogTimer);
|
|
944
|
+
this.#pingWatchdogTimer = undefined;
|
|
637
945
|
// Workers first (concurrently with each other), THEN queues: a worker's close() waits for its
|
|
638
946
|
// in-flight job, which publishes its result/decision through a queue, so that queue must still be
|
|
639
947
|
// open until every worker has settled. One shared deadline bounds both phases: a graceful
|
|
@@ -659,22 +967,6 @@ export class BullMQTransport {
|
|
|
659
967
|
this.#tenantEventSub?.disconnect();
|
|
660
968
|
}
|
|
661
969
|
}
|
|
662
|
-
/**
|
|
663
|
-
* Narrow a FAILED task job's `data` to the {@link RemoteTask} fields the terminal-failure bridge needs
|
|
664
|
-
* (runId/seq/stepId), WITHOUT an unsafe cast. Returns `undefined` for a payload BullMQ has already
|
|
665
|
-
* GC'd or a malformed job — so the bridge safely no-ops instead of publishing a bogus result.
|
|
666
|
-
*/
|
|
667
|
-
function failedTaskIdentity(data) {
|
|
668
|
-
if (typeof data !== 'object' || data === null)
|
|
669
|
-
return undefined;
|
|
670
|
-
if (!('runId' in data) || !('seq' in data) || !('stepId' in data))
|
|
671
|
-
return undefined;
|
|
672
|
-
const { runId, seq, stepId } = data;
|
|
673
|
-
if (typeof runId !== 'string' || typeof seq !== 'number' || typeof stepId !== 'string') {
|
|
674
|
-
return undefined;
|
|
675
|
-
}
|
|
676
|
-
return { runId, seq, stepId };
|
|
677
|
-
}
|
|
678
970
|
/** Resolve when `work` settles or `ms` elapses (the loser is abandoned). `ms <= 0` skips the wait. */
|
|
679
971
|
async function withTimeout(work, ms) {
|
|
680
972
|
if (ms <= 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bullmq-transport.js","sourceRoot":"","sources":["../../../../src/transports/bullmq/bullmq-transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bullmq-transport.js","sourceRoot":"","sources":["../../../../src/transports/bullmq/bullmq-transport.ts"],"names":[],"mappings":"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"}
|