@trigger.dev/core 4.0.2 → 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/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/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 +80 -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/schemas/api.d.ts +139 -0
- package/dist/commonjs/v3/schemas/api.js +11 -3
- package/dist/commonjs/v3/schemas/api.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/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/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 +80 -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/schemas/api.d.ts +139 -0
- package/dist/esm/v3/schemas/api.js +8 -0
- package/dist/esm/v3/schemas/api.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,233 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { NoneScalingStrategy, SmoothScalingStrategy, AggressiveScalingStrategy, } from "./scalingStrategies.js";
|
|
3
|
+
import { QueueMetricsProcessor } from "./queueMetricsProcessor.js";
|
|
4
|
+
describe("Scaling Strategies", () => {
|
|
5
|
+
const baseOptions = {
|
|
6
|
+
minConsumerCount: 1,
|
|
7
|
+
maxConsumerCount: 20,
|
|
8
|
+
targetRatio: 1.0,
|
|
9
|
+
};
|
|
10
|
+
function createMetricsProcessor(smoothedValue) {
|
|
11
|
+
const processor = new QueueMetricsProcessor({ ewmaAlpha: 0.3, batchWindowMs: 1000 });
|
|
12
|
+
// Initialize processor with the target smoothed value
|
|
13
|
+
processor.addSample(smoothedValue);
|
|
14
|
+
processor.processBatch();
|
|
15
|
+
return processor;
|
|
16
|
+
}
|
|
17
|
+
describe("NoneScalingStrategy", () => {
|
|
18
|
+
const strategy = new NoneScalingStrategy(baseOptions);
|
|
19
|
+
it("should always return current count (static mode)", () => {
|
|
20
|
+
expect(strategy.calculateTargetCount(5)).toBe(5);
|
|
21
|
+
expect(strategy.calculateTargetCount(1)).toBe(1);
|
|
22
|
+
expect(strategy.calculateTargetCount(10)).toBe(10);
|
|
23
|
+
// Clamping still applies
|
|
24
|
+
expect(strategy.calculateTargetCount(25)).toBe(20); // Clamped to max
|
|
25
|
+
expect(strategy.calculateTargetCount(0)).toBe(1); // Clamped to min
|
|
26
|
+
});
|
|
27
|
+
it("should have correct name", () => {
|
|
28
|
+
expect(strategy.name).toBe("none");
|
|
29
|
+
});
|
|
30
|
+
it("should handle zero current count", () => {
|
|
31
|
+
// Should clamp to minConsumerCount
|
|
32
|
+
const result = strategy.calculateTargetCount(0);
|
|
33
|
+
expect(result).toBe(1);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe("SmoothScalingStrategy", () => {
|
|
37
|
+
it("should calculate target based on smoothed queue length", () => {
|
|
38
|
+
const metricsProcessor = createMetricsProcessor(10); // smoothed value = 10
|
|
39
|
+
const strategy = new SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
40
|
+
// With targetRatio=1.0, target consumers = ceil(10/1.0) = 10
|
|
41
|
+
// With dampingFactor=0.7 and currentCount=5:
|
|
42
|
+
// dampedTarget = 5 + (10 - 5) * 0.7 = 5 + 3.5 = 8.5 → 9
|
|
43
|
+
const result = strategy.calculateTargetCount(5);
|
|
44
|
+
expect(result).toBe(9);
|
|
45
|
+
});
|
|
46
|
+
it("should apply damping factor correctly", () => {
|
|
47
|
+
const metricsProcessor = createMetricsProcessor(20); // smoothed value = 20
|
|
48
|
+
const strategy = new SmoothScalingStrategy({
|
|
49
|
+
...baseOptions,
|
|
50
|
+
metricsProcessor,
|
|
51
|
+
dampingFactor: 0.5,
|
|
52
|
+
}); // 50% damping
|
|
53
|
+
// With targetRatio=1.0, target consumers = ceil(20/1.0) = 20
|
|
54
|
+
// With dampingFactor=0.5 and currentCount=5:
|
|
55
|
+
// dampedTarget = 5 + (20 - 5) * 0.5 = 5 + 7.5 = 12.5 → 13
|
|
56
|
+
const result = strategy.calculateTargetCount(5);
|
|
57
|
+
expect(result).toBe(13);
|
|
58
|
+
});
|
|
59
|
+
it("should handle zero current count", () => {
|
|
60
|
+
const metricsProcessor = createMetricsProcessor(5);
|
|
61
|
+
const strategy = new SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
62
|
+
// With smoothedQueueLength=5, targetRatio=1.0:
|
|
63
|
+
// targetConsumers = ceil(5/1.0) = 5
|
|
64
|
+
// dampedTarget = 0 + (5 - 0) * 0.7 = 3.5 → 4
|
|
65
|
+
const result = strategy.calculateTargetCount(0);
|
|
66
|
+
expect(result).toBe(4);
|
|
67
|
+
});
|
|
68
|
+
it("should validate damping factor", () => {
|
|
69
|
+
const metricsProcessor = createMetricsProcessor(10);
|
|
70
|
+
expect(() => new SmoothScalingStrategy({
|
|
71
|
+
...baseOptions,
|
|
72
|
+
metricsProcessor,
|
|
73
|
+
dampingFactor: -0.1,
|
|
74
|
+
})).toThrow("dampingFactor must be between 0 and 1");
|
|
75
|
+
expect(() => new SmoothScalingStrategy({
|
|
76
|
+
...baseOptions,
|
|
77
|
+
metricsProcessor,
|
|
78
|
+
dampingFactor: 1.1,
|
|
79
|
+
})).toThrow("dampingFactor must be between 0 and 1");
|
|
80
|
+
expect(() => new SmoothScalingStrategy({
|
|
81
|
+
...baseOptions,
|
|
82
|
+
metricsProcessor,
|
|
83
|
+
dampingFactor: 0,
|
|
84
|
+
})).not.toThrow();
|
|
85
|
+
expect(() => new SmoothScalingStrategy({
|
|
86
|
+
...baseOptions,
|
|
87
|
+
metricsProcessor,
|
|
88
|
+
dampingFactor: 1,
|
|
89
|
+
})).not.toThrow();
|
|
90
|
+
});
|
|
91
|
+
it("should handle zero current count", () => {
|
|
92
|
+
const metricsProcessor = createMetricsProcessor(10);
|
|
93
|
+
const strategy = new SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
94
|
+
// With smoothedQueueLength=10, targetRatio=1.0:
|
|
95
|
+
// targetConsumers = ceil(10/1.0) = 10
|
|
96
|
+
// dampedTarget = 0 + (10 - 0) * 0.7 = 7
|
|
97
|
+
const result = strategy.calculateTargetCount(0);
|
|
98
|
+
expect(result).toBe(7);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe("AggressiveScalingStrategy", () => {
|
|
102
|
+
it("should scale down when under-utilized", () => {
|
|
103
|
+
// queuePerConsumer = 2/5 = 0.4, scaleDownThreshold = 1.0 * 0.5 = 0.5
|
|
104
|
+
// Under-utilized since 0.4 < 0.5
|
|
105
|
+
const metricsProcessor = createMetricsProcessor(2);
|
|
106
|
+
const strategy = new AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
107
|
+
const result = strategy.calculateTargetCount(5);
|
|
108
|
+
expect(result).toBeLessThan(5);
|
|
109
|
+
expect(result).toBeGreaterThanOrEqual(baseOptions.minConsumerCount);
|
|
110
|
+
});
|
|
111
|
+
it("should maintain count when in optimal zone", () => {
|
|
112
|
+
// queuePerConsumer = 5/5 = 1.0
|
|
113
|
+
// Optimal zone: 0.5 < 1.0 < 2.0
|
|
114
|
+
const metricsProcessor = createMetricsProcessor(5);
|
|
115
|
+
const strategy = new AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
116
|
+
const result = strategy.calculateTargetCount(5);
|
|
117
|
+
expect(result).toBe(5);
|
|
118
|
+
});
|
|
119
|
+
it("should scale up when over-utilized", () => {
|
|
120
|
+
// queuePerConsumer = 15/5 = 3.0, scaleUpThreshold = 1.0 * 2.0 = 2.0
|
|
121
|
+
// Over-utilized since 3.0 > 2.0
|
|
122
|
+
const metricsProcessor = createMetricsProcessor(15);
|
|
123
|
+
const strategy = new AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
124
|
+
const result = strategy.calculateTargetCount(5);
|
|
125
|
+
expect(result).toBeGreaterThan(5);
|
|
126
|
+
expect(result).toBeLessThanOrEqual(baseOptions.maxConsumerCount);
|
|
127
|
+
});
|
|
128
|
+
it("should scale aggressively for critical load", () => {
|
|
129
|
+
// queuePerConsumer = 25/5 = 5.0 (critical: 5x target ratio)
|
|
130
|
+
const metricsProcessor = createMetricsProcessor(25);
|
|
131
|
+
const strategy = new AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
132
|
+
const result = strategy.calculateTargetCount(5);
|
|
133
|
+
// Should apply 50% scale factor: ceil(5 * 1.5) = 8
|
|
134
|
+
// But capped by 50% max increment: 5 + ceil(5 * 0.5) = 5 + 3 = 8
|
|
135
|
+
expect(result).toBe(8);
|
|
136
|
+
});
|
|
137
|
+
it("should respect max consumer count", () => {
|
|
138
|
+
const metricsProcessor = createMetricsProcessor(50); // Very high load
|
|
139
|
+
const strategy = new AggressiveScalingStrategy({
|
|
140
|
+
...baseOptions,
|
|
141
|
+
maxConsumerCount: 6,
|
|
142
|
+
metricsProcessor,
|
|
143
|
+
});
|
|
144
|
+
const result = strategy.calculateTargetCount(5);
|
|
145
|
+
expect(result).toBeLessThanOrEqual(6);
|
|
146
|
+
});
|
|
147
|
+
it("should respect min consumer count", () => {
|
|
148
|
+
const metricsProcessor = createMetricsProcessor(0.1); // Very low load
|
|
149
|
+
const strategy = new AggressiveScalingStrategy({
|
|
150
|
+
...baseOptions,
|
|
151
|
+
minConsumerCount: 3,
|
|
152
|
+
metricsProcessor,
|
|
153
|
+
});
|
|
154
|
+
const result = strategy.calculateTargetCount(5);
|
|
155
|
+
expect(result).toBeGreaterThanOrEqual(3);
|
|
156
|
+
});
|
|
157
|
+
it("should return thresholds", () => {
|
|
158
|
+
const metricsProcessor = createMetricsProcessor(10);
|
|
159
|
+
const strategy = new AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
160
|
+
const thresholds = strategy.getThresholds(1.0);
|
|
161
|
+
expect(thresholds).toEqual({
|
|
162
|
+
scaleDownThreshold: 0.5,
|
|
163
|
+
scaleUpThreshold: 2.0,
|
|
164
|
+
criticalThreshold: 5.0,
|
|
165
|
+
highThreshold: 3.0,
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
it("should handle zero current count without division by zero", () => {
|
|
169
|
+
const metricsProcessor = createMetricsProcessor(10);
|
|
170
|
+
const strategy = new AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
171
|
+
// Should use (currentCount || 1) to prevent division by zero
|
|
172
|
+
// queuePerConsumer = 10 / 1 = 10 (not 10 / 0)
|
|
173
|
+
// This is over-utilized (10 > 2.0), should scale up
|
|
174
|
+
const result = strategy.calculateTargetCount(0);
|
|
175
|
+
expect(result).toBeGreaterThan(0);
|
|
176
|
+
expect(result).toBeLessThanOrEqual(baseOptions.maxConsumerCount);
|
|
177
|
+
});
|
|
178
|
+
it("should handle zero queue with zero consumers", () => {
|
|
179
|
+
const metricsProcessor = createMetricsProcessor(0);
|
|
180
|
+
const strategy = new AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
181
|
+
// queuePerConsumer = 0 / 1 = 0
|
|
182
|
+
// This is under-utilized (0 < 0.5), should scale down
|
|
183
|
+
// But already at 0, so should return minConsumerCount
|
|
184
|
+
const result = strategy.calculateTargetCount(0);
|
|
185
|
+
expect(result).toBe(baseOptions.minConsumerCount);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
describe("Integration scenarios", () => {
|
|
189
|
+
it("should handle gradual load increase with smooth strategy", () => {
|
|
190
|
+
const metricsProcessor = createMetricsProcessor(2);
|
|
191
|
+
const strategy = new SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
|
|
192
|
+
let currentCount = 2;
|
|
193
|
+
// Gradual increase: 2 → 6 → 10 → 15
|
|
194
|
+
const loads = [2, 6, 10, 15];
|
|
195
|
+
const results = [];
|
|
196
|
+
for (const load of loads) {
|
|
197
|
+
// Update the processor with the new load
|
|
198
|
+
metricsProcessor.addSample(load);
|
|
199
|
+
metricsProcessor.processBatch();
|
|
200
|
+
const target = strategy.calculateTargetCount(currentCount);
|
|
201
|
+
results.push(target);
|
|
202
|
+
currentCount = target;
|
|
203
|
+
}
|
|
204
|
+
// Should show gradual increase due to damping
|
|
205
|
+
expect(results[0]).toBeLessThan(results[1]);
|
|
206
|
+
expect(results[1]).toBeLessThan(results[2]);
|
|
207
|
+
expect(results[2]).toBeLessThan(results[3]);
|
|
208
|
+
// But not immediate jumps due to damping
|
|
209
|
+
expect(results[1] - results[0]).toBeLessThan(loads[1] - loads[0]);
|
|
210
|
+
});
|
|
211
|
+
it("should handle load spike with aggressive strategy", () => {
|
|
212
|
+
let currentCount = 3;
|
|
213
|
+
// Sudden spike from normal to critical
|
|
214
|
+
const normalLoad = 3; // queuePerConsumer = 1.0 (optimal)
|
|
215
|
+
const spikeLoad = 15; // queuePerConsumer = 5.0 (critical)
|
|
216
|
+
const normalProcessor = createMetricsProcessor(normalLoad);
|
|
217
|
+
const normalStrategy = new AggressiveScalingStrategy({
|
|
218
|
+
...baseOptions,
|
|
219
|
+
metricsProcessor: normalProcessor,
|
|
220
|
+
});
|
|
221
|
+
const normalTarget = normalStrategy.calculateTargetCount(currentCount);
|
|
222
|
+
expect(normalTarget).toBe(3); // Should maintain
|
|
223
|
+
const spikeProcessor = createMetricsProcessor(spikeLoad);
|
|
224
|
+
const spikeStrategy = new AggressiveScalingStrategy({
|
|
225
|
+
...baseOptions,
|
|
226
|
+
metricsProcessor: spikeProcessor,
|
|
227
|
+
});
|
|
228
|
+
const spikeTarget = spikeStrategy.calculateTargetCount(currentCount);
|
|
229
|
+
expect(spikeTarget).toBeGreaterThan(3); // Should scale up aggressively
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=scalingStrategies.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalingStrategies.test.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/scalingStrategies.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { SupervisorHttpClient } from "./http.js";
|
|
2
2
|
import { PreDequeueFn, PreSkipFn, SupervisorClientCommonOptions } from "./types.js";
|
|
3
|
+
import { ScalingOptions } from "./consumerPool.js";
|
|
3
4
|
import { WorkerEvents } from "./events.js";
|
|
4
5
|
import EventEmitter from "events";
|
|
6
|
+
import type { Registry } from "prom-client";
|
|
5
7
|
type SupervisorSessionOptions = SupervisorClientCommonOptions & {
|
|
6
8
|
queueConsumerEnabled?: boolean;
|
|
7
9
|
runNotificationsEnabled?: boolean;
|
|
@@ -11,8 +13,9 @@ type SupervisorSessionOptions = SupervisorClientCommonOptions & {
|
|
|
11
13
|
preDequeue?: PreDequeueFn;
|
|
12
14
|
preSkip?: PreSkipFn;
|
|
13
15
|
maxRunCount?: number;
|
|
14
|
-
maxConsumerCount?: number;
|
|
15
16
|
sendRunDebugLogs?: boolean;
|
|
17
|
+
scaling: ScalingOptions;
|
|
18
|
+
metricsRegistry?: Registry;
|
|
16
19
|
};
|
|
17
20
|
export declare class SupervisorSession extends EventEmitter<WorkerEvents> {
|
|
18
21
|
private opts;
|
|
@@ -21,7 +24,7 @@ export declare class SupervisorSession extends EventEmitter<WorkerEvents> {
|
|
|
21
24
|
private readonly runNotificationsEnabled;
|
|
22
25
|
private runNotificationsSocket?;
|
|
23
26
|
private readonly queueConsumerEnabled;
|
|
24
|
-
private readonly
|
|
27
|
+
private readonly consumerPool;
|
|
25
28
|
private readonly heartbeat;
|
|
26
29
|
constructor(opts: SupervisorSessionOptions);
|
|
27
30
|
private onDequeue;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SupervisorHttpClient } from "./http.js";
|
|
2
|
-
import {
|
|
2
|
+
import { RunQueueConsumerPool } from "./consumerPool.js";
|
|
3
3
|
import EventEmitter from "events";
|
|
4
4
|
import { VERSION } from "../../../version.js";
|
|
5
5
|
import { io } from "socket.io-client";
|
|
@@ -13,7 +13,7 @@ export class SupervisorSession extends EventEmitter {
|
|
|
13
13
|
runNotificationsEnabled;
|
|
14
14
|
runNotificationsSocket;
|
|
15
15
|
queueConsumerEnabled;
|
|
16
|
-
|
|
16
|
+
consumerPool;
|
|
17
17
|
heartbeat;
|
|
18
18
|
constructor(opts) {
|
|
19
19
|
super();
|
|
@@ -21,8 +21,8 @@ export class SupervisorSession extends EventEmitter {
|
|
|
21
21
|
this.runNotificationsEnabled = opts.runNotificationsEnabled ?? true;
|
|
22
22
|
this.queueConsumerEnabled = opts.queueConsumerEnabled ?? true;
|
|
23
23
|
this.httpClient = new SupervisorHttpClient(opts);
|
|
24
|
-
this.
|
|
25
|
-
|
|
24
|
+
this.consumerPool = new RunQueueConsumerPool({
|
|
25
|
+
consumer: {
|
|
26
26
|
client: this.httpClient,
|
|
27
27
|
preDequeue: opts.preDequeue,
|
|
28
28
|
preSkip: opts.preSkip,
|
|
@@ -30,7 +30,9 @@ export class SupervisorSession extends EventEmitter {
|
|
|
30
30
|
intervalMs: opts.dequeueIntervalMs,
|
|
31
31
|
idleIntervalMs: opts.dequeueIdleIntervalMs,
|
|
32
32
|
maxRunCount: opts.maxRunCount,
|
|
33
|
-
}
|
|
33
|
+
},
|
|
34
|
+
scaling: opts.scaling,
|
|
35
|
+
metricsRegistry: opts.metricsRegistry,
|
|
34
36
|
});
|
|
35
37
|
this.heartbeat = new IntervalService({
|
|
36
38
|
onInterval: async () => {
|
|
@@ -126,8 +128,12 @@ export class SupervisorSession extends EventEmitter {
|
|
|
126
128
|
name: workerGroup.name,
|
|
127
129
|
});
|
|
128
130
|
if (this.queueConsumerEnabled) {
|
|
129
|
-
this.logger.log("Queue consumer enabled"
|
|
130
|
-
|
|
131
|
+
this.logger.log("Queue consumer enabled", {
|
|
132
|
+
scalingStrategy: this.consumerPool["scalingStrategy"],
|
|
133
|
+
minConsumers: this.consumerPool["minConsumerCount"],
|
|
134
|
+
maxConsumers: this.consumerPool["maxConsumerCount"],
|
|
135
|
+
});
|
|
136
|
+
await this.consumerPool.start();
|
|
131
137
|
this.heartbeat.start();
|
|
132
138
|
}
|
|
133
139
|
else {
|
|
@@ -142,7 +148,7 @@ export class SupervisorSession extends EventEmitter {
|
|
|
142
148
|
}
|
|
143
149
|
}
|
|
144
150
|
async stop() {
|
|
145
|
-
await
|
|
151
|
+
await this.consumerPool.stop();
|
|
146
152
|
this.heartbeat.stop();
|
|
147
153
|
this.runNotificationsSocket?.disconnect();
|
|
148
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,30 +10,46 @@ export declare class WorkloadHttpClient {
|
|
|
10
10
|
updateApiUrl(apiUrl: string): void;
|
|
11
11
|
updateRunnerId(runnerId: string): void;
|
|
12
12
|
defaultHeaders(): Record<string, string>;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
private isConnectionError;
|
|
14
|
+
private withConnectionErrorDetection;
|
|
15
|
+
heartbeatRun(runId: string, snapshotId: string, body?: WorkloadHeartbeatRequestBody): Promise<{
|
|
16
|
+
success: false;
|
|
17
|
+
error: string;
|
|
18
|
+
isConnectionError?: boolean;
|
|
19
|
+
} | {
|
|
20
|
+
success: true;
|
|
21
|
+
data: {
|
|
22
|
+
ok: true;
|
|
23
|
+
};
|
|
24
|
+
}>;
|
|
16
25
|
suspendRun(runId: string, snapshotId: string): Promise<import("../../zodfetch.js").ApiResult<{
|
|
17
26
|
ok: true;
|
|
18
27
|
} | {
|
|
19
28
|
error: string;
|
|
20
29
|
ok: false;
|
|
21
30
|
}>>;
|
|
22
|
-
continueRunExecution(runId: string, snapshotId: string): Promise<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
continueRunExecution(runId: string, snapshotId: string): Promise<{
|
|
32
|
+
success: false;
|
|
33
|
+
error: string;
|
|
34
|
+
isConnectionError?: boolean;
|
|
35
|
+
} | {
|
|
36
|
+
success: true;
|
|
37
|
+
data: {
|
|
38
|
+
run: {
|
|
39
|
+
status: import("../../index.js").TaskRunStatus;
|
|
40
|
+
id: string;
|
|
41
|
+
friendlyId: string;
|
|
42
|
+
attemptNumber?: number | null | undefined;
|
|
43
|
+
};
|
|
44
|
+
snapshot: {
|
|
45
|
+
id: string;
|
|
46
|
+
createdAt: Date;
|
|
47
|
+
description: string;
|
|
48
|
+
friendlyId: string;
|
|
49
|
+
executionStatus: import("../../index.js").TaskRunExecutionStatus;
|
|
50
|
+
};
|
|
35
51
|
};
|
|
36
|
-
}
|
|
52
|
+
}>;
|
|
37
53
|
startRunAttempt(runId: string, snapshotId: string, body: WorkloadRunAttemptStartRequestBody): Promise<import("../../zodfetch.js").ApiResult<{
|
|
38
54
|
run: {
|
|
39
55
|
status: import("../../index.js").TaskRunStatus;
|
|
@@ -175,114 +191,67 @@ export declare class WorkloadHttpClient {
|
|
|
175
191
|
};
|
|
176
192
|
};
|
|
177
193
|
}>>;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
createdAt: Date;
|
|
190
|
-
description: string;
|
|
191
|
-
friendlyId: string;
|
|
192
|
-
executionStatus: import("../../index.js").TaskRunExecutionStatus;
|
|
193
|
-
};
|
|
194
|
-
completedWaitpoints: {
|
|
195
|
-
type: import("../../index.js").WaitpointType;
|
|
196
|
-
id: string;
|
|
197
|
-
friendlyId: string;
|
|
198
|
-
completedAt: Date;
|
|
199
|
-
outputIsError: boolean;
|
|
200
|
-
idempotencyKey?: string | undefined;
|
|
201
|
-
output?: string | undefined;
|
|
202
|
-
outputType?: string | undefined;
|
|
203
|
-
index?: number | undefined;
|
|
204
|
-
completedByTaskRun?: {
|
|
194
|
+
getSnapshotsSince(runId: string, snapshotId: string): Promise<{
|
|
195
|
+
success: false;
|
|
196
|
+
error: string;
|
|
197
|
+
isConnectionError?: boolean;
|
|
198
|
+
} | {
|
|
199
|
+
success: true;
|
|
200
|
+
data: {
|
|
201
|
+
snapshots: {
|
|
202
|
+
version: "1";
|
|
203
|
+
run: {
|
|
204
|
+
status: import("../../index.js").TaskRunStatus;
|
|
205
205
|
id: string;
|
|
206
206
|
friendlyId: string;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
} | undefined;
|
|
211
|
-
} | undefined;
|
|
212
|
-
completedAfter?: Date | undefined;
|
|
213
|
-
completedByBatch?: {
|
|
207
|
+
attemptNumber?: number | null | undefined;
|
|
208
|
+
};
|
|
209
|
+
snapshot: {
|
|
214
210
|
id: string;
|
|
211
|
+
createdAt: Date;
|
|
212
|
+
description: string;
|
|
215
213
|
friendlyId: string;
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
friendlyId: string;
|
|
221
|
-
} | undefined;
|
|
222
|
-
checkpoint?: {
|
|
223
|
-
type: import("../../index.js").CheckpointTypeEnum;
|
|
224
|
-
id: string;
|
|
225
|
-
friendlyId: string;
|
|
226
|
-
location: string;
|
|
227
|
-
imageRef?: string | null | undefined;
|
|
228
|
-
reason?: string | null | undefined;
|
|
229
|
-
} | undefined;
|
|
230
|
-
};
|
|
231
|
-
}>>;
|
|
232
|
-
getSnapshotsSince(runId: string, snapshotId: string): Promise<import("../../zodfetch.js").ApiResult<{
|
|
233
|
-
snapshots: {
|
|
234
|
-
version: "1";
|
|
235
|
-
run: {
|
|
236
|
-
status: import("../../index.js").TaskRunStatus;
|
|
237
|
-
id: string;
|
|
238
|
-
friendlyId: string;
|
|
239
|
-
attemptNumber?: number | null | undefined;
|
|
240
|
-
};
|
|
241
|
-
snapshot: {
|
|
242
|
-
id: string;
|
|
243
|
-
createdAt: Date;
|
|
244
|
-
description: string;
|
|
245
|
-
friendlyId: string;
|
|
246
|
-
executionStatus: import("../../index.js").TaskRunExecutionStatus;
|
|
247
|
-
};
|
|
248
|
-
completedWaitpoints: {
|
|
249
|
-
type: import("../../index.js").WaitpointType;
|
|
250
|
-
id: string;
|
|
251
|
-
friendlyId: string;
|
|
252
|
-
completedAt: Date;
|
|
253
|
-
outputIsError: boolean;
|
|
254
|
-
idempotencyKey?: string | undefined;
|
|
255
|
-
output?: string | undefined;
|
|
256
|
-
outputType?: string | undefined;
|
|
257
|
-
index?: number | undefined;
|
|
258
|
-
completedByTaskRun?: {
|
|
214
|
+
executionStatus: import("../../index.js").TaskRunExecutionStatus;
|
|
215
|
+
};
|
|
216
|
+
completedWaitpoints: {
|
|
217
|
+
type: import("../../index.js").WaitpointType;
|
|
259
218
|
id: string;
|
|
260
219
|
friendlyId: string;
|
|
261
|
-
|
|
220
|
+
completedAt: Date;
|
|
221
|
+
outputIsError: boolean;
|
|
222
|
+
idempotencyKey?: string | undefined;
|
|
223
|
+
output?: string | undefined;
|
|
224
|
+
outputType?: string | undefined;
|
|
225
|
+
index?: number | undefined;
|
|
226
|
+
completedByTaskRun?: {
|
|
227
|
+
id: string;
|
|
228
|
+
friendlyId: string;
|
|
229
|
+
batch?: {
|
|
230
|
+
id: string;
|
|
231
|
+
friendlyId: string;
|
|
232
|
+
} | undefined;
|
|
233
|
+
} | undefined;
|
|
234
|
+
completedAfter?: Date | undefined;
|
|
235
|
+
completedByBatch?: {
|
|
262
236
|
id: string;
|
|
263
237
|
friendlyId: string;
|
|
264
238
|
} | undefined;
|
|
239
|
+
}[];
|
|
240
|
+
batch?: {
|
|
241
|
+
id: string;
|
|
242
|
+
friendlyId: string;
|
|
265
243
|
} | undefined;
|
|
266
|
-
|
|
267
|
-
|
|
244
|
+
checkpoint?: {
|
|
245
|
+
type: import("../../index.js").CheckpointTypeEnum;
|
|
268
246
|
id: string;
|
|
269
247
|
friendlyId: string;
|
|
248
|
+
location: string;
|
|
249
|
+
imageRef?: string | null | undefined;
|
|
250
|
+
reason?: string | null | undefined;
|
|
270
251
|
} | undefined;
|
|
271
252
|
}[];
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
friendlyId: string;
|
|
275
|
-
} | undefined;
|
|
276
|
-
checkpoint?: {
|
|
277
|
-
type: import("../../index.js").CheckpointTypeEnum;
|
|
278
|
-
id: string;
|
|
279
|
-
friendlyId: string;
|
|
280
|
-
location: string;
|
|
281
|
-
imageRef?: string | null | undefined;
|
|
282
|
-
reason?: string | null | undefined;
|
|
283
|
-
} | undefined;
|
|
284
|
-
}[];
|
|
285
|
-
}>>;
|
|
253
|
+
};
|
|
254
|
+
}>;
|
|
286
255
|
sendDebugLog(runId: string, body: WorkloadDebugLogRequestBody): Promise<void>;
|
|
287
256
|
/** @deprecated Not currently used */
|
|
288
257
|
dequeue(): Promise<import("../../zodfetch.js").ApiResult<{
|