@trigger.dev/core 4.0.1 → 4.0.3
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/commonjs/v3/errors.d.ts +1 -0
- package/dist/commonjs/v3/errors.js +35 -2
- package/dist/commonjs/v3/errors.js.map +1 -1
- package/dist/commonjs/v3/heartbeats/api.d.ts +14 -0
- package/dist/commonjs/v3/heartbeats/api.js +58 -0
- package/dist/commonjs/v3/heartbeats/api.js.map +1 -0
- package/dist/commonjs/v3/heartbeats/manager.d.ts +16 -0
- package/dist/commonjs/v3/heartbeats/manager.js +72 -0
- package/dist/commonjs/v3/heartbeats/manager.js.map +1 -0
- package/dist/commonjs/v3/heartbeats/types.d.ts +7 -0
- package/dist/commonjs/v3/heartbeats/types.js +3 -0
- package/dist/commonjs/v3/heartbeats/types.js.map +1 -0
- package/dist/commonjs/v3/heartbeats-api.d.ts +3 -0
- package/dist/commonjs/v3/heartbeats-api.js +9 -0
- package/dist/commonjs/v3/heartbeats-api.js.map +1 -0
- package/dist/commonjs/v3/index.d.ts +1 -0
- package/dist/commonjs/v3/index.js +1 -0
- package/dist/commonjs/v3/index.js.map +1 -1
- package/dist/commonjs/v3/links.d.ts +1 -0
- package/dist/commonjs/v3/links.js +1 -0
- package/dist/commonjs/v3/links.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/index.d.ts +1 -0
- package/dist/commonjs/v3/runEngineWorker/index.js +1 -0
- package/dist/commonjs/v3/runEngineWorker/index.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.d.ts +71 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js +316 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +589 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +43 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +131 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +2 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.d.ts +7 -4
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.d.ts +76 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.js +161 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.js.map +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +293 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.d.ts +67 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.js +153 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.js.map +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +235 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +1 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +6 -0
- package/dist/commonjs/v3/runEngineWorker/supervisor/session.d.ts +5 -2
- package/dist/commonjs/v3/runEngineWorker/supervisor/session.js +14 -8
- package/dist/commonjs/v3/runEngineWorker/supervisor/session.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +81 -111
- package/dist/commonjs/v3/runEngineWorker/workload/http.js +36 -14
- package/dist/commonjs/v3/runEngineWorker/workload/http.js.map +1 -1
- package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +3 -0
- package/dist/commonjs/v3/schemas/api.d.ts +144 -0
- package/dist/commonjs/v3/schemas/api.js +11 -3
- package/dist/commonjs/v3/schemas/api.js.map +1 -1
- package/dist/commonjs/v3/schemas/checkpoints.d.ts +3 -0
- package/dist/commonjs/v3/schemas/runEngine.d.ts +3 -0
- package/dist/commonjs/v3/schemas/runEngine.js +1 -0
- package/dist/commonjs/v3/schemas/runEngine.js.map +1 -1
- package/dist/commonjs/v3/utils/globals.d.ts +2 -0
- package/dist/commonjs/v3/utils/globals.js.map +1 -1
- package/dist/commonjs/v3/utils/ioSerialization.d.ts +1 -0
- package/dist/commonjs/v3/utils/ioSerialization.js +92 -3
- package/dist/commonjs/v3/utils/ioSerialization.js.map +1 -1
- package/dist/commonjs/v3/workers/index.d.ts +1 -0
- package/dist/commonjs/v3/workers/index.js +3 -1
- package/dist/commonjs/v3/workers/index.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/errors.d.ts +1 -0
- package/dist/esm/v3/errors.js +34 -2
- package/dist/esm/v3/errors.js.map +1 -1
- package/dist/esm/v3/heartbeats/api.d.ts +14 -0
- package/dist/esm/v3/heartbeats/api.js +54 -0
- package/dist/esm/v3/heartbeats/api.js.map +1 -0
- package/dist/esm/v3/heartbeats/manager.d.ts +16 -0
- package/dist/esm/v3/heartbeats/manager.js +68 -0
- package/dist/esm/v3/heartbeats/manager.js.map +1 -0
- package/dist/esm/v3/heartbeats/types.d.ts +7 -0
- package/dist/esm/v3/heartbeats/types.js +2 -0
- package/dist/esm/v3/heartbeats/types.js.map +1 -0
- package/dist/esm/v3/heartbeats-api.d.ts +3 -0
- package/dist/esm/v3/heartbeats-api.js +6 -0
- package/dist/esm/v3/heartbeats-api.js.map +1 -0
- package/dist/esm/v3/index.d.ts +1 -0
- package/dist/esm/v3/index.js +1 -0
- package/dist/esm/v3/index.js.map +1 -1
- package/dist/esm/v3/links.d.ts +1 -0
- package/dist/esm/v3/links.js +1 -0
- package/dist/esm/v3/links.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/index.d.ts +1 -0
- package/dist/esm/v3/runEngineWorker/index.js +1 -0
- package/dist/esm/v3/runEngineWorker/index.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.d.ts +71 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js +312 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +587 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +43 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +127 -0
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +2 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.d.ts +7 -4
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.d.ts +76 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.js +157 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.js.map +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +291 -0
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.d.ts +67 -0
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.js +146 -0
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.js.map +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +233 -0
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +1 -0
- package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +6 -0
- package/dist/esm/v3/runEngineWorker/supervisor/session.d.ts +5 -2
- package/dist/esm/v3/runEngineWorker/supervisor/session.js +14 -8
- package/dist/esm/v3/runEngineWorker/supervisor/session.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/workload/http.d.ts +81 -111
- package/dist/esm/v3/runEngineWorker/workload/http.js +37 -15
- package/dist/esm/v3/runEngineWorker/workload/http.js.map +1 -1
- package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +3 -0
- package/dist/esm/v3/schemas/api.d.ts +144 -0
- package/dist/esm/v3/schemas/api.js +8 -0
- package/dist/esm/v3/schemas/api.js.map +1 -1
- package/dist/esm/v3/schemas/checkpoints.d.ts +3 -0
- package/dist/esm/v3/schemas/runEngine.d.ts +3 -0
- package/dist/esm/v3/schemas/runEngine.js +1 -0
- package/dist/esm/v3/schemas/runEngine.js.map +1 -1
- package/dist/esm/v3/utils/globals.d.ts +2 -0
- package/dist/esm/v3/utils/globals.js.map +1 -1
- package/dist/esm/v3/utils/ioSerialization.d.ts +1 -0
- package/dist/esm/v3/utils/ioSerialization.js +92 -3
- package/dist/esm/v3/utils/ioSerialization.js.map +1 -1
- package/dist/esm/v3/workers/index.d.ts +1 -0
- package/dist/esm/v3/workers/index.js +1 -0
- package/dist/esm/v3/workers/index.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConsumerPoolMetrics = void 0;
|
|
4
|
+
const prom_client_1 = require("prom-client");
|
|
5
|
+
class ConsumerPoolMetrics {
|
|
6
|
+
register;
|
|
7
|
+
prefix;
|
|
8
|
+
// Current state metrics
|
|
9
|
+
consumerCount;
|
|
10
|
+
queueLength;
|
|
11
|
+
smoothedQueueLength;
|
|
12
|
+
targetConsumerCount;
|
|
13
|
+
scalingStrategy;
|
|
14
|
+
// Scaling operation metrics
|
|
15
|
+
scalingOperationsTotal;
|
|
16
|
+
consumersAddedTotal;
|
|
17
|
+
consumersRemovedTotal;
|
|
18
|
+
scalingCooldownsApplied;
|
|
19
|
+
// Performance metrics
|
|
20
|
+
queueLengthUpdatesTotal;
|
|
21
|
+
batchesProcessedTotal;
|
|
22
|
+
constructor(opts = {}) {
|
|
23
|
+
this.register = opts.register ?? new prom_client_1.Registry();
|
|
24
|
+
this.prefix = opts.prefix ?? "queue_consumer_pool";
|
|
25
|
+
// Current state metrics
|
|
26
|
+
this.consumerCount = new prom_client_1.Gauge({
|
|
27
|
+
name: `${this.prefix}_consumer_count`,
|
|
28
|
+
help: "Current number of active queue consumers",
|
|
29
|
+
labelNames: ["strategy"],
|
|
30
|
+
registers: [this.register],
|
|
31
|
+
});
|
|
32
|
+
this.queueLength = new prom_client_1.Gauge({
|
|
33
|
+
name: `${this.prefix}_queue_length`,
|
|
34
|
+
help: "Current queue length (median of recent samples)",
|
|
35
|
+
registers: [this.register],
|
|
36
|
+
});
|
|
37
|
+
this.smoothedQueueLength = new prom_client_1.Gauge({
|
|
38
|
+
name: `${this.prefix}_smoothed_queue_length`,
|
|
39
|
+
help: "EWMA smoothed queue length",
|
|
40
|
+
registers: [this.register],
|
|
41
|
+
});
|
|
42
|
+
this.targetConsumerCount = new prom_client_1.Gauge({
|
|
43
|
+
name: `${this.prefix}_target_consumer_count`,
|
|
44
|
+
help: "Target number of consumers calculated by scaling strategy",
|
|
45
|
+
labelNames: ["strategy"],
|
|
46
|
+
registers: [this.register],
|
|
47
|
+
});
|
|
48
|
+
this.scalingStrategy = new prom_client_1.Gauge({
|
|
49
|
+
name: `${this.prefix}_scaling_strategy_info`,
|
|
50
|
+
help: "Information about the active scaling strategy (1 = active, 0 = inactive)",
|
|
51
|
+
labelNames: ["strategy"],
|
|
52
|
+
registers: [this.register],
|
|
53
|
+
});
|
|
54
|
+
// Scaling operation metrics
|
|
55
|
+
this.scalingOperationsTotal = new prom_client_1.Counter({
|
|
56
|
+
name: `${this.prefix}_scaling_operations_total`,
|
|
57
|
+
help: "Total number of scaling operations performed",
|
|
58
|
+
labelNames: ["direction", "strategy"],
|
|
59
|
+
registers: [this.register],
|
|
60
|
+
});
|
|
61
|
+
this.consumersAddedTotal = new prom_client_1.Counter({
|
|
62
|
+
name: `${this.prefix}_consumers_added_total`,
|
|
63
|
+
help: "Total number of consumers added",
|
|
64
|
+
registers: [this.register],
|
|
65
|
+
});
|
|
66
|
+
this.consumersRemovedTotal = new prom_client_1.Counter({
|
|
67
|
+
name: `${this.prefix}_consumers_removed_total`,
|
|
68
|
+
help: "Total number of consumers removed",
|
|
69
|
+
registers: [this.register],
|
|
70
|
+
});
|
|
71
|
+
this.scalingCooldownsApplied = new prom_client_1.Counter({
|
|
72
|
+
name: `${this.prefix}_scaling_cooldowns_applied_total`,
|
|
73
|
+
help: "Number of times scaling was prevented due to cooldown",
|
|
74
|
+
labelNames: ["direction"],
|
|
75
|
+
registers: [this.register],
|
|
76
|
+
});
|
|
77
|
+
this.queueLengthUpdatesTotal = new prom_client_1.Counter({
|
|
78
|
+
name: `${this.prefix}_queue_length_updates_total`,
|
|
79
|
+
help: "Total number of queue length updates received",
|
|
80
|
+
registers: [this.register],
|
|
81
|
+
});
|
|
82
|
+
this.batchesProcessedTotal = new prom_client_1.Counter({
|
|
83
|
+
name: `${this.prefix}_batches_processed_total`,
|
|
84
|
+
help: "Total number of metric batches processed",
|
|
85
|
+
registers: [this.register],
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Update all gauge metrics with current state
|
|
90
|
+
*/
|
|
91
|
+
updateState(state) {
|
|
92
|
+
this.consumerCount.set({ strategy: state.strategy }, state.consumerCount);
|
|
93
|
+
if (state.queueLength !== undefined) {
|
|
94
|
+
this.queueLength.set(state.queueLength);
|
|
95
|
+
}
|
|
96
|
+
this.smoothedQueueLength.set(state.smoothedQueueLength);
|
|
97
|
+
this.targetConsumerCount.set({ strategy: state.strategy }, state.targetConsumerCount);
|
|
98
|
+
// Set strategy info (1 for active strategy, 0 for others)
|
|
99
|
+
["none", "smooth", "aggressive"].forEach((s) => {
|
|
100
|
+
this.scalingStrategy.set({ strategy: s }, s === state.strategy ? 1 : 0);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Record a scaling operation
|
|
105
|
+
*/
|
|
106
|
+
recordScalingOperation(direction, strategy, count) {
|
|
107
|
+
if (direction !== "none") {
|
|
108
|
+
this.scalingOperationsTotal.inc({ direction, strategy });
|
|
109
|
+
if (direction === "up") {
|
|
110
|
+
this.consumersAddedTotal.inc(count);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.consumersRemovedTotal.inc(count);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Record that scaling was prevented by cooldown
|
|
119
|
+
*/
|
|
120
|
+
recordCooldownApplied(direction) {
|
|
121
|
+
this.scalingCooldownsApplied.inc({ direction });
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Record a queue length update
|
|
125
|
+
*/
|
|
126
|
+
recordQueueLengthUpdate() {
|
|
127
|
+
this.queueLengthUpdatesTotal.inc();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.ConsumerPoolMetrics = ConsumerPoolMetrics;
|
|
131
|
+
//# sourceMappingURL=consumerPoolMetrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumerPoolMetrics.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/consumerPoolMetrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,6 +91,7 @@ export declare class SupervisorHttpClient {
|
|
|
91
91
|
imageRef?: string | null | undefined;
|
|
92
92
|
reason?: string | null | undefined;
|
|
93
93
|
} | undefined;
|
|
94
|
+
workerQueueLength?: number | undefined;
|
|
94
95
|
image?: string | undefined;
|
|
95
96
|
placementTags?: {
|
|
96
97
|
key: string;
|
|
@@ -173,6 +174,7 @@ export declare class SupervisorHttpClient {
|
|
|
173
174
|
imageRef?: string | null | undefined;
|
|
174
175
|
reason?: string | null | undefined;
|
|
175
176
|
} | undefined;
|
|
177
|
+
workerQueueLength?: number | undefined;
|
|
176
178
|
image?: string | undefined;
|
|
177
179
|
placementTags?: {
|
|
178
180
|
key: string;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { SupervisorHttpClient } from "./http.js";
|
|
2
2
|
import { WorkerApiDequeueResponseBody } from "./schemas.js";
|
|
3
3
|
import { PreDequeueFn, PreSkipFn } from "./types.js";
|
|
4
|
-
|
|
4
|
+
export interface QueueConsumer {
|
|
5
|
+
start(): void;
|
|
6
|
+
stop(): void;
|
|
7
|
+
}
|
|
8
|
+
export type RunQueueConsumerOptions = {
|
|
5
9
|
client: SupervisorHttpClient;
|
|
6
10
|
intervalMs: number;
|
|
7
11
|
idleIntervalMs: number;
|
|
@@ -10,7 +14,7 @@ type RunQueueConsumerOptions = {
|
|
|
10
14
|
maxRunCount?: number;
|
|
11
15
|
onDequeue: (messages: WorkerApiDequeueResponseBody) => Promise<void>;
|
|
12
16
|
};
|
|
13
|
-
export declare class RunQueueConsumer {
|
|
17
|
+
export declare class RunQueueConsumer implements QueueConsumer {
|
|
14
18
|
private readonly client;
|
|
15
19
|
private readonly preDequeue?;
|
|
16
20
|
private readonly preSkip?;
|
|
@@ -24,6 +28,5 @@ export declare class RunQueueConsumer {
|
|
|
24
28
|
start(): void;
|
|
25
29
|
stop(): void;
|
|
26
30
|
private dequeue;
|
|
27
|
-
scheduleNextDequeue
|
|
31
|
+
private scheduleNextDequeue;
|
|
28
32
|
}
|
|
29
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueConsumer.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/queueConsumer.ts"],"names":[],"mappings":";;;AAAA,yEAAyE;
|
|
1
|
+
{"version":3,"file":"queueConsumer.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/queueConsumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export interface QueueMetricsProcessorOptions {
|
|
2
|
+
/**
|
|
3
|
+
* EWMA smoothing factor (0-1)
|
|
4
|
+
* Lower values = more smoothing, less reactive
|
|
5
|
+
* Higher values = more responsive to recent changes
|
|
6
|
+
*/
|
|
7
|
+
ewmaAlpha: number;
|
|
8
|
+
/**
|
|
9
|
+
* Batch window duration in milliseconds
|
|
10
|
+
* Samples within this window are collected and processed together
|
|
11
|
+
*/
|
|
12
|
+
batchWindowMs: number;
|
|
13
|
+
}
|
|
14
|
+
export interface BatchProcessingResult {
|
|
15
|
+
/** Median of samples in the batch */
|
|
16
|
+
median: number;
|
|
17
|
+
/** EWMA-smoothed value after processing this batch */
|
|
18
|
+
smoothedValue: number;
|
|
19
|
+
/** Number of samples processed in this batch */
|
|
20
|
+
sampleCount: number;
|
|
21
|
+
/** Raw samples that were processed */
|
|
22
|
+
samples: readonly number[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Processes queue length samples using exponential weighted moving average (EWMA)
|
|
26
|
+
* for smoothing and median filtering for outlier resistance.
|
|
27
|
+
*
|
|
28
|
+
* Collects samples within a batch window, calculates median to filter outliers,
|
|
29
|
+
* then applies EWMA smoothing for stable trend tracking.
|
|
30
|
+
*/
|
|
31
|
+
export declare class QueueMetricsProcessor {
|
|
32
|
+
private readonly ewmaAlpha;
|
|
33
|
+
private readonly batchWindowMs;
|
|
34
|
+
private readonly logger;
|
|
35
|
+
private samples;
|
|
36
|
+
private smoothedValue;
|
|
37
|
+
private lastBatchTime;
|
|
38
|
+
private isInitialized;
|
|
39
|
+
constructor(options: QueueMetricsProcessorOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Adds a sample to the current batch
|
|
42
|
+
*/
|
|
43
|
+
addSample(value: number, timestamp?: number): void;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if enough time has passed to process the current batch
|
|
46
|
+
*/
|
|
47
|
+
shouldProcessBatch(currentTime?: number): boolean;
|
|
48
|
+
private calculateMedian;
|
|
49
|
+
/**
|
|
50
|
+
* Processes the current batch of samples and returns the result.
|
|
51
|
+
* Clears the samples array and updates the smoothed value.
|
|
52
|
+
*
|
|
53
|
+
* Returns null if there are no samples to process.
|
|
54
|
+
*/
|
|
55
|
+
processBatch(currentTime?: number): BatchProcessingResult | null;
|
|
56
|
+
/**
|
|
57
|
+
* Gets the current smoothed value without processing a batch
|
|
58
|
+
*/
|
|
59
|
+
getSmoothedValue(): number;
|
|
60
|
+
/**
|
|
61
|
+
* Gets the number of samples in the current batch
|
|
62
|
+
*/
|
|
63
|
+
getCurrentSampleCount(): number;
|
|
64
|
+
/**
|
|
65
|
+
* Gets the current samples (for testing/debugging)
|
|
66
|
+
*/
|
|
67
|
+
getCurrentSamples(): readonly number[];
|
|
68
|
+
/**
|
|
69
|
+
* Resets the processor state
|
|
70
|
+
*/
|
|
71
|
+
reset(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Gets processor configuration
|
|
74
|
+
*/
|
|
75
|
+
getConfig(): Readonly<QueueMetricsProcessorOptions>;
|
|
76
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueueMetricsProcessor = void 0;
|
|
4
|
+
const structuredLogger_js_1 = require("../../utils/structuredLogger.js");
|
|
5
|
+
/**
|
|
6
|
+
* Processes queue length samples using exponential weighted moving average (EWMA)
|
|
7
|
+
* for smoothing and median filtering for outlier resistance.
|
|
8
|
+
*
|
|
9
|
+
* Collects samples within a batch window, calculates median to filter outliers,
|
|
10
|
+
* then applies EWMA smoothing for stable trend tracking.
|
|
11
|
+
*/
|
|
12
|
+
class QueueMetricsProcessor {
|
|
13
|
+
ewmaAlpha;
|
|
14
|
+
batchWindowMs;
|
|
15
|
+
logger = new structuredLogger_js_1.SimpleStructuredLogger("queue-metrics-processor");
|
|
16
|
+
samples = [];
|
|
17
|
+
smoothedValue = 0;
|
|
18
|
+
lastBatchTime = 0;
|
|
19
|
+
isInitialized = false;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
if (options.ewmaAlpha < 0 || options.ewmaAlpha > 1) {
|
|
22
|
+
throw new Error("ewmaAlpha must be between 0 and 1");
|
|
23
|
+
}
|
|
24
|
+
if (options.batchWindowMs <= 0) {
|
|
25
|
+
throw new Error("batchWindowMs must be positive");
|
|
26
|
+
}
|
|
27
|
+
this.ewmaAlpha = options.ewmaAlpha;
|
|
28
|
+
this.batchWindowMs = options.batchWindowMs;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Adds a sample to the current batch
|
|
32
|
+
*/
|
|
33
|
+
addSample(value, timestamp = Date.now()) {
|
|
34
|
+
if (value < 0) {
|
|
35
|
+
throw new Error("Queue length cannot be negative");
|
|
36
|
+
}
|
|
37
|
+
this.samples.push(value);
|
|
38
|
+
// Update last batch time on first sample
|
|
39
|
+
if (this.samples.length === 1) {
|
|
40
|
+
this.lastBatchTime = timestamp;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Checks if enough time has passed to process the current batch
|
|
45
|
+
*/
|
|
46
|
+
shouldProcessBatch(currentTime = Date.now()) {
|
|
47
|
+
if (this.samples.length === 0) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return currentTime - this.lastBatchTime >= this.batchWindowMs;
|
|
51
|
+
}
|
|
52
|
+
calculateMedian(samples) {
|
|
53
|
+
const sortedSamples = [...samples].sort((a, b) => a - b);
|
|
54
|
+
const mid = Math.floor(sortedSamples.length / 2);
|
|
55
|
+
if (sortedSamples.length % 2 === 1) {
|
|
56
|
+
// Odd length: use middle value
|
|
57
|
+
const median = sortedSamples[mid];
|
|
58
|
+
if (median === undefined) {
|
|
59
|
+
this.logger.error("Invalid median calculated from odd samples", {
|
|
60
|
+
sortedSamples,
|
|
61
|
+
mid,
|
|
62
|
+
median,
|
|
63
|
+
});
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return median;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Even length: average two middle values
|
|
70
|
+
const lowMid = sortedSamples[mid - 1];
|
|
71
|
+
const highMid = sortedSamples[mid];
|
|
72
|
+
if (lowMid === undefined || highMid === undefined) {
|
|
73
|
+
this.logger.error("Invalid median calculated from even samples", {
|
|
74
|
+
sortedSamples,
|
|
75
|
+
mid,
|
|
76
|
+
lowMid,
|
|
77
|
+
highMid,
|
|
78
|
+
});
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const median = (lowMid + highMid) / 2;
|
|
82
|
+
return median;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Processes the current batch of samples and returns the result.
|
|
87
|
+
* Clears the samples array and updates the smoothed value.
|
|
88
|
+
*
|
|
89
|
+
* Returns null if there are no samples to process.
|
|
90
|
+
*/
|
|
91
|
+
processBatch(currentTime = Date.now()) {
|
|
92
|
+
if (this.samples.length === 0) {
|
|
93
|
+
// No samples to process
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
// Calculate median of samples to filter outliers
|
|
97
|
+
const median = this.calculateMedian(this.samples);
|
|
98
|
+
if (median === null) {
|
|
99
|
+
// We already logged a more specific error message
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
// Update EWMA smoothed value
|
|
103
|
+
if (!this.isInitialized) {
|
|
104
|
+
// First value - initialize with median
|
|
105
|
+
this.smoothedValue = median;
|
|
106
|
+
this.isInitialized = true;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Apply EWMA: s_t = α * x_t + (1 - α) * s_(t-1)
|
|
110
|
+
this.smoothedValue = this.ewmaAlpha * median + (1 - this.ewmaAlpha) * this.smoothedValue;
|
|
111
|
+
}
|
|
112
|
+
const result = {
|
|
113
|
+
median,
|
|
114
|
+
smoothedValue: this.smoothedValue,
|
|
115
|
+
sampleCount: this.samples.length,
|
|
116
|
+
samples: Object.freeze([...this.samples]),
|
|
117
|
+
};
|
|
118
|
+
// Clear samples for next batch
|
|
119
|
+
this.samples = [];
|
|
120
|
+
this.lastBatchTime = currentTime;
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Gets the current smoothed value without processing a batch
|
|
125
|
+
*/
|
|
126
|
+
getSmoothedValue() {
|
|
127
|
+
return this.smoothedValue;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Gets the number of samples in the current batch
|
|
131
|
+
*/
|
|
132
|
+
getCurrentSampleCount() {
|
|
133
|
+
return this.samples.length;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Gets the current samples (for testing/debugging)
|
|
137
|
+
*/
|
|
138
|
+
getCurrentSamples() {
|
|
139
|
+
return Object.freeze([...this.samples]);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Resets the processor state
|
|
143
|
+
*/
|
|
144
|
+
reset() {
|
|
145
|
+
this.samples = [];
|
|
146
|
+
this.smoothedValue = 0;
|
|
147
|
+
this.lastBatchTime = 0;
|
|
148
|
+
this.isInitialized = false;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Gets processor configuration
|
|
152
|
+
*/
|
|
153
|
+
getConfig() {
|
|
154
|
+
return {
|
|
155
|
+
ewmaAlpha: this.ewmaAlpha,
|
|
156
|
+
batchWindowMs: this.batchWindowMs,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.QueueMetricsProcessor = QueueMetricsProcessor;
|
|
161
|
+
//# sourceMappingURL=queueMetricsProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueMetricsProcessor.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/queueMetricsProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|