bunqueue 2.7.18 → 2.7.19

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.
Files changed (67) hide show
  1. package/dist/application/backgroundTasks.d.ts.map +1 -1
  2. package/dist/application/backgroundTasks.js +41 -0
  3. package/dist/application/backgroundTasks.js.map +1 -1
  4. package/dist/application/queueManager.d.ts +8 -1
  5. package/dist/application/queueManager.d.ts.map +1 -1
  6. package/dist/application/queueManager.js +37 -23
  7. package/dist/application/queueManager.js.map +1 -1
  8. package/dist/client/tcp/client.d.ts.map +1 -1
  9. package/dist/client/tcp/client.js +11 -8
  10. package/dist/client/tcp/client.js.map +1 -1
  11. package/dist/client/worker/ackBatcher.d.ts.map +1 -1
  12. package/dist/client/worker/ackBatcher.js +18 -8
  13. package/dist/client/worker/ackBatcher.js.map +1 -1
  14. package/dist/client/workflow/compensator.d.ts.map +1 -1
  15. package/dist/client/workflow/compensator.js +10 -2
  16. package/dist/client/workflow/compensator.js.map +1 -1
  17. package/dist/client/workflow/loops.d.ts.map +1 -1
  18. package/dist/client/workflow/loops.js +7 -0
  19. package/dist/client/workflow/loops.js.map +1 -1
  20. package/dist/client/workflow/types.d.ts +4 -0
  21. package/dist/client/workflow/types.d.ts.map +1 -1
  22. package/dist/domain/queue/dlqShard.d.ts.map +1 -1
  23. package/dist/domain/queue/dlqShard.js +6 -0
  24. package/dist/domain/queue/dlqShard.js.map +1 -1
  25. package/dist/infrastructure/backup/s3BackupOperations.d.ts.map +1 -1
  26. package/dist/infrastructure/backup/s3BackupOperations.js +44 -6
  27. package/dist/infrastructure/backup/s3BackupOperations.js.map +1 -1
  28. package/dist/infrastructure/cloud/cloudAgent.d.ts +1 -1
  29. package/dist/infrastructure/cloud/cloudAgent.d.ts.map +1 -1
  30. package/dist/infrastructure/cloud/cloudAgent.js +9 -11
  31. package/dist/infrastructure/cloud/cloudAgent.js.map +1 -1
  32. package/dist/infrastructure/cloud/redact.d.ts +11 -0
  33. package/dist/infrastructure/cloud/redact.d.ts.map +1 -0
  34. package/dist/infrastructure/cloud/redact.js +22 -0
  35. package/dist/infrastructure/cloud/redact.js.map +1 -0
  36. package/dist/infrastructure/cloud/snapshotCollector.d.ts +4 -0
  37. package/dist/infrastructure/cloud/snapshotCollector.d.ts.map +1 -1
  38. package/dist/infrastructure/cloud/snapshotCollector.js +32 -17
  39. package/dist/infrastructure/cloud/snapshotCollector.js.map +1 -1
  40. package/dist/infrastructure/cloud/snapshotHelpers.d.ts +9 -2
  41. package/dist/infrastructure/cloud/snapshotHelpers.d.ts.map +1 -1
  42. package/dist/infrastructure/cloud/snapshotHelpers.js +10 -8
  43. package/dist/infrastructure/cloud/snapshotHelpers.js.map +1 -1
  44. package/dist/infrastructure/persistence/sqlite.d.ts +1 -1
  45. package/dist/infrastructure/persistence/sqlite.d.ts.map +1 -1
  46. package/dist/infrastructure/persistence/sqlite.js +18 -0
  47. package/dist/infrastructure/persistence/sqlite.js.map +1 -1
  48. package/dist/infrastructure/persistence/sqliteSerializer.d.ts +16 -0
  49. package/dist/infrastructure/persistence/sqliteSerializer.d.ts.map +1 -1
  50. package/dist/infrastructure/persistence/sqliteSerializer.js +73 -8
  51. package/dist/infrastructure/persistence/sqliteSerializer.js.map +1 -1
  52. package/dist/infrastructure/scheduler/cronScheduler.d.ts.map +1 -1
  53. package/dist/infrastructure/scheduler/cronScheduler.js +11 -1
  54. package/dist/infrastructure/scheduler/cronScheduler.js.map +1 -1
  55. package/dist/infrastructure/server/protocol.d.ts +4 -0
  56. package/dist/infrastructure/server/protocol.d.ts.map +1 -1
  57. package/dist/infrastructure/server/protocol.js +17 -2
  58. package/dist/infrastructure/server/protocol.js.map +1 -1
  59. package/dist/infrastructure/server/socketWriteQueue.d.ts +67 -0
  60. package/dist/infrastructure/server/socketWriteQueue.d.ts.map +1 -0
  61. package/dist/infrastructure/server/socketWriteQueue.js +127 -0
  62. package/dist/infrastructure/server/socketWriteQueue.js.map +1 -0
  63. package/dist/infrastructure/server/tcp.d.ts +17 -0
  64. package/dist/infrastructure/server/tcp.d.ts.map +1 -1
  65. package/dist/infrastructure/server/tcp.js +104 -10
  66. package/dist/infrastructure/server/tcp.js.map +1 -1
  67. package/package.json +1 -1
@@ -10,8 +10,29 @@ import { tcpLog } from '../../shared/logger';
10
10
  import { getRateLimiter } from './rateLimiter';
11
11
  import { pack, unpack } from 'msgpackr';
12
12
  import { Semaphore, withSemaphore } from '../../shared/semaphore';
13
+ import { SocketWriteQueue } from './socketWriteQueue';
13
14
  /** Max concurrent commands per connection for pipelining */
14
15
  const MAX_CONCURRENT_PER_CONNECTION = 50;
16
+ /**
17
+ * Idle/read stall timeout (ms) for the slowloris mitigation. A connection that
18
+ * has STARTED a frame (partial bytes buffered) but makes no further progress
19
+ * toward completing it within this window is closed. Healthy connections that
20
+ * are simply idle (no partial frame buffered) are never affected, so long-lived
21
+ * idle-but-healthy clients are not disturbed. 0 disables the timeout.
22
+ *
23
+ * Implemented with a manual per-connection timer (Bun.listen has no
24
+ * `idleTimeout` socket option as of Bun 1.3.x, and `socket.timeout()` resets on
25
+ * every byte — so a slowloris that trickles one byte per window would defeat
26
+ * it). The manual timer is armed only while a partial frame is in progress.
27
+ */
28
+ const TCP_IDLE_TIMEOUT_MS = Math.max(0, parseInt(Bun.env.TCP_IDLE_TIMEOUT_MS ?? '60000', 10) || 0);
29
+ /**
30
+ * Maximum bytes that may be buffered in a connection's outbound write queue
31
+ * before the connection is dropped. A client that stops reading while the
32
+ * server keeps producing responses would otherwise grow the pending queue
33
+ * without bound (write-side memory DoS). Generous default (64MB). 0 disables.
34
+ */
35
+ const MAX_WRITE_QUEUE_BYTES = Math.max(0, parseInt(Bun.env.TCP_MAX_WRITE_QUEUE_BYTES ?? String(64 * 1024 * 1024), 10) || 0);
15
36
  /**
16
37
  * Release client jobs with retry logic and exponential backoff.
17
38
  * Ensures jobs are not left in an inconsistent state if release fails.
@@ -48,6 +69,39 @@ function errorResponse(message, reqId) {
48
69
  export function createTcpServer(queueManager, config) {
49
70
  const authTokens = new Set(config.authTokens ?? []);
50
71
  const connections = new Map();
72
+ const idleTimeoutMs = config.idleTimeoutMs ?? TCP_IDLE_TIMEOUT_MS;
73
+ const maxWriteQueueBytes = config.maxWriteQueueBytes ?? MAX_WRITE_QUEUE_BYTES;
74
+ /** Cancel any pending stall timer for a connection. */
75
+ function clearStallTimer(socket) {
76
+ if (socket.data.stallTimer !== null) {
77
+ clearTimeout(socket.data.stallTimer);
78
+ socket.data.stallTimer = null;
79
+ }
80
+ }
81
+ /**
82
+ * (Re)arm the slowloris stall timer based on parser state. The timer runs
83
+ * ONLY while a partial frame is buffered (a frame was started but not yet
84
+ * completed). It is reset on every data event that still leaves a partial
85
+ * frame, and cleared once the buffer drains to empty (frame completed). If it
86
+ * fires, the peer started a frame and then stalled -> terminate.
87
+ */
88
+ function updateStallTimer(socket) {
89
+ if (idleTimeoutMs <= 0)
90
+ return;
91
+ clearStallTimer(socket);
92
+ if (!socket.data.frameParser.hasPartialFrame)
93
+ return;
94
+ socket.data.stallTimer = setTimeout(() => {
95
+ socket.data.stallTimer = null;
96
+ tcpLog.warn('Closing stalled connection (incomplete frame)', {
97
+ clientId: socket.data.state.clientId,
98
+ bufferedBytes: socket.data.frameParser.bufferedBytes,
99
+ idleTimeoutMs,
100
+ });
101
+ socket.data.writeQueue.clear();
102
+ socket.terminate();
103
+ }, idleTimeoutMs);
104
+ }
51
105
  const socketHandlers = {
52
106
  open(socket) {
53
107
  const clientId = uuid();
@@ -63,17 +117,19 @@ export function createTcpServer(queueManager, config) {
63
117
  frameParser: new FrameParser(),
64
118
  ctx,
65
119
  semaphore: new Semaphore(MAX_CONCURRENT_PER_CONNECTION),
120
+ writeQueue: new SocketWriteQueue(maxWriteQueueBytes),
121
+ stallTimer: null,
66
122
  };
67
123
  connections.set(clientId, socket);
68
124
  queueManager.emitDashboardEvent('client:connected', { clientId, transport: 'tcp' });
69
125
  },
70
126
  async data(socket, data) {
71
- const { frameParser, ctx, state, semaphore } = socket.data;
127
+ const { frameParser, ctx, state, semaphore, writeQueue } = socket.data;
72
128
  const rateLimiter = getRateLimiter();
73
129
  // Check rate limit
74
130
  if (!rateLimiter.isAllowed(state.clientId)) {
75
131
  ctx.queueManager.emitDashboardEvent('ratelimit:hit', { clientId: state.clientId });
76
- socket.write(errorResponse('Rate limit exceeded'));
132
+ writeQueue.write(socket, errorResponse('Rate limit exceeded'));
77
133
  return;
78
134
  }
79
135
  let frames;
@@ -82,12 +138,33 @@ export function createTcpServer(queueManager, config) {
82
138
  }
83
139
  catch (err) {
84
140
  if (err instanceof FrameSizeError) {
85
- socket.write(errorResponse(`Frame too large: ${err.requestedSize} bytes exceeds maximum ${err.maxSize}`));
141
+ clearStallTimer(socket);
142
+ writeQueue.write(socket, errorResponse(`Frame too large: ${err.requestedSize} bytes exceeds maximum ${err.maxSize}`));
86
143
  socket.end();
87
144
  return;
88
145
  }
89
146
  throw err;
90
147
  }
148
+ // Slowloris mitigation: (re)arm the stall timer based on whether a partial
149
+ // frame is now buffered. Progress (a completed frame draining the buffer)
150
+ // disarms it; a started-but-unfinished frame arms it. This bounds memory
151
+ // held by a peer that declares a large (legal) frame then never finishes.
152
+ updateStallTimer(socket);
153
+ // Drop a connection whose outbound queue grew unbounded (client stopped
154
+ // reading while we keep producing responses) — bounds write-side memory.
155
+ const dropForWriteOverflow = () => {
156
+ if (writeQueue.isOverBudget) {
157
+ tcpLog.warn('Closing connection: write queue exceeded budget', {
158
+ clientId: state.clientId,
159
+ queuedBytes: writeQueue.bytesQueued,
160
+ });
161
+ clearStallTimer(socket);
162
+ writeQueue.clear();
163
+ socket.terminate();
164
+ return true;
165
+ }
166
+ return false;
167
+ };
91
168
  // Process frames in parallel for pipelining support
92
169
  // Each command is processed with semaphore-controlled concurrency
93
170
  const processFrame = async (frame) => {
@@ -96,23 +173,25 @@ export function createTcpServer(queueManager, config) {
96
173
  cmd = unpack(frame);
97
174
  }
98
175
  catch {
99
- socket.write(errorResponse('Invalid command format'));
176
+ writeQueue.write(socket, errorResponse('Invalid command format'));
100
177
  return;
101
178
  }
102
179
  if (!cmd?.cmd) {
103
- socket.write(errorResponse('Invalid command'));
180
+ writeQueue.write(socket, errorResponse('Invalid command'));
104
181
  return;
105
182
  }
106
183
  // Process with concurrency limit
107
184
  await withSemaphore(semaphore, async () => {
108
185
  try {
109
186
  const response = await handleCommand(cmd, ctx);
110
- socket.write(serializeResponse(response));
187
+ writeQueue.write(socket, serializeResponse(response));
188
+ dropForWriteOverflow();
111
189
  }
112
190
  catch (err) {
113
191
  const raw = err instanceof Error ? err.message : 'Unknown error';
114
192
  const message = raw.includes('SQLITE') || raw.includes('database') ? 'Internal server error' : raw;
115
- socket.write(errorResponse(message, cmd.reqId));
193
+ writeQueue.write(socket, errorResponse(message, cmd.reqId));
194
+ dropForWriteOverflow();
116
195
  }
117
196
  });
118
197
  };
@@ -121,6 +200,10 @@ export function createTcpServer(queueManager, config) {
121
200
  },
122
201
  close(socket) {
123
202
  const clientId = socket.data.state.clientId;
203
+ // Cancel the slowloris stall timer and drop any buffered-but-unwritten
204
+ // bytes; the socket is gone.
205
+ clearStallTimer(socket);
206
+ socket.data.writeQueue.clear();
124
207
  connections.delete(clientId);
125
208
  getRateLimiter().removeClient(clientId);
126
209
  queueManager.unregisterWorkersByClientId(clientId);
@@ -147,8 +230,10 @@ export function createTcpServer(queueManager, config) {
147
230
  error(_socket, error) {
148
231
  tcpLog.error('Connection error', { error: error.message });
149
232
  },
150
- drain(_socket) {
151
- // Called when socket is ready for more writes after backpressure
233
+ drain(socket) {
234
+ // Socket is ready for more writes after backpressure: flush any unwritten
235
+ // tail bytes buffered by short writes, preserving frame order.
236
+ socket.data.writeQueue.flush(socket);
152
237
  },
153
238
  };
154
239
  // Create TCP server
@@ -168,13 +253,22 @@ export function createTcpServer(queueManager, config) {
168
253
  broadcast(message) {
169
254
  const frame = FrameParser.frame(pack(message));
170
255
  for (const socket of connections.values()) {
171
- socket.write(frame);
256
+ // Each connection writes through its own backpressure-aware queue so a
257
+ // slow reader buffers (in order) instead of dropping frame tail bytes.
258
+ socket.data.writeQueue.write(socket, frame);
259
+ // Drop any reader that has fallen too far behind (write-side bound).
260
+ if (socket.data.writeQueue.isOverBudget) {
261
+ clearStallTimer(socket);
262
+ socket.data.writeQueue.clear();
263
+ socket.terminate();
264
+ }
172
265
  }
173
266
  },
174
267
  /** Stop the server */
175
268
  stop() {
176
269
  server.stop();
177
270
  for (const socket of connections.values()) {
271
+ clearStallTimer(socket);
178
272
  socket.end();
179
273
  }
180
274
  connections.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../../src/infrastructure/server/tcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../../src/infrastructure/server/tcp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunqueue",
3
- "version": "2.7.18",
3
+ "version": "2.7.19",
4
4
  "description": "High-performance job queue for Bun & AI agents. SQLite persistence, cron scheduling, priorities, retries, DLQ, webhooks, native MCP server. Zero external dependencies.",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",