velocious 1.0.626 → 1.0.627
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/README.md +14 -2
- package/build/database/pool/async-tracked-multi-connection.js +46 -9
- package/build/database/pool/base.js +3 -0
- package/build/database/pool/checkout-timeout-error.js +16 -0
- package/build/http-client/websocket-client.js +52 -0
- package/build/http-server/client/index.js +6 -0
- package/build/http-server/client/websocket-session.js +30 -0
- package/build/http-server/index.js +202 -38
- package/build/http-server/worker-handler/index.js +15 -1
- package/build/http-server/worker-handler/worker-thread.js +8 -0
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +22 -2
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +44 -10
- package/build/src/database/pool/base.d.ts +15 -0
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +4 -1
- package/build/src/database/pool/checkout-timeout-error.d.ts +13 -0
- package/build/src/database/pool/checkout-timeout-error.d.ts.map +1 -0
- package/build/src/database/pool/checkout-timeout-error.js +15 -0
- package/build/src/http-client/websocket-client.d.ts +18 -0
- package/build/src/http-client/websocket-client.d.ts.map +1 -1
- package/build/src/http-client/websocket-client.js +48 -1
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +7 -1
- package/build/src/http-server/client/websocket-session.d.ts +6 -0
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +27 -1
- package/build/src/http-server/index.d.ts +82 -10
- package/build/src/http-server/index.d.ts.map +1 -1
- package/build/src/http-server/index.js +186 -33
- package/build/src/http-server/worker-handler/index.d.ts +28 -1
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +23 -2
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +7 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/database/pool/async-tracked-multi-connection.js +46 -9
- package/src/database/pool/base.js +3 -0
- package/src/database/pool/checkout-timeout-error.js +16 -0
- package/src/http-client/websocket-client.js +52 -0
- package/src/http-server/client/index.js +6 -0
- package/src/http-server/client/websocket-session.js +30 -0
- package/src/http-server/index.js +202 -38
- package/src/http-server/worker-handler/index.js +15 -1
- package/src/http-server/worker-handler/worker-thread.js +8 -0
|
@@ -6,6 +6,7 @@ import EventEmitter from "../utils/event-emitter.js"
|
|
|
6
6
|
import InProcessHandler from "./worker-handler/in-process.js"
|
|
7
7
|
import Logger from "../logger.js"
|
|
8
8
|
import Net from "net"
|
|
9
|
+
import os from "node:os"
|
|
9
10
|
import ServerClient from "./server-client.js"
|
|
10
11
|
import WorkerHandler from "./worker-handler/index.js"
|
|
11
12
|
|
|
@@ -14,17 +15,18 @@ import WorkerHandler from "./worker-handler/index.js"
|
|
|
14
15
|
* @typedef {{start: () => Promise<void>, stop: () => Promise<void>}} DevelopmentReloaderLike */
|
|
15
16
|
/**
|
|
16
17
|
* Defines this typedef.
|
|
17
|
-
* @typedef {(args: {configuration: import("../configuration.js").default, workerCount: number}) => (WorkerHandler | InProcessHandler)} WorkerHandlerFactory */
|
|
18
|
+
* @typedef {(args: {configuration: import("../configuration.js").default, onWebsocketSessionOwned: (args: {sessionId: string, workerHandler: WorkerHandler}) => void, onWebsocketSessionReleased: (args: {sessionId: string, workerHandler: WorkerHandler}) => void, onWorkerStopped: (args: {workerHandler: WorkerHandler}) => void, workerCount: number}) => (WorkerHandler | InProcessHandler)} WorkerHandlerFactory */
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Runs normalize worker count.
|
|
21
22
|
* @param {object} args - Options object.
|
|
22
23
|
* @param {number} [args.maxWorkers] - Backward-compatible worker count alias.
|
|
23
24
|
* @param {number} [args.workers] - Configured worker count.
|
|
25
|
+
* @param {number} args.defaultWorkerCount - Process-available CPU count.
|
|
24
26
|
* @returns {number} - Normalized worker count.
|
|
25
27
|
*/
|
|
26
|
-
function normalizeWorkerCount({maxWorkers, workers}) {
|
|
27
|
-
const workerCount = workers ?? maxWorkers ??
|
|
28
|
+
function normalizeWorkerCount({defaultWorkerCount, maxWorkers, workers}) {
|
|
29
|
+
const workerCount = workers ?? maxWorkers ?? defaultWorkerCount
|
|
28
30
|
|
|
29
31
|
if (!Number.isInteger(workerCount) || workerCount < 1) {
|
|
30
32
|
throw new Error("HTTP server workers must be a positive integer")
|
|
@@ -33,6 +35,9 @@ function normalizeWorkerCount({maxWorkers, workers}) {
|
|
|
33
35
|
return workerCount
|
|
34
36
|
}
|
|
35
37
|
|
|
38
|
+
const MAX_INITIAL_REQUEST_HEADER_BYTES = 64 * 1024
|
|
39
|
+
const WEBSOCKET_SESSION_ROUTING_PARAMETER = "velociousSessionId"
|
|
40
|
+
|
|
36
41
|
export default class VelociousHttpServer {
|
|
37
42
|
clientCount = 0
|
|
38
43
|
_starting = false
|
|
@@ -70,10 +75,8 @@ export default class VelociousHttpServer {
|
|
|
70
75
|
* @type {Array<WorkerHandler | InProcessHandler>} */
|
|
71
76
|
workerHandlers = []
|
|
72
77
|
nextWorkerHandlerIndex = 0
|
|
73
|
-
/**
|
|
74
|
-
|
|
75
|
-
* @type {Map<string, WorkerHandler | InProcessHandler>} */
|
|
76
|
-
stickyWorkerHandlers = new Map()
|
|
78
|
+
/** Worker ownership for live or grace-paused resumable WebSocket sessions. */
|
|
79
|
+
websocketSessionOwners = new Map()
|
|
77
80
|
|
|
78
81
|
/**
|
|
79
82
|
* Runs constructor.
|
|
@@ -84,10 +87,11 @@ export default class VelociousHttpServer {
|
|
|
84
87
|
* @param {number} [args.port] - Port.
|
|
85
88
|
* @param {number} [args.maxWorkers] - Max workers.
|
|
86
89
|
* @param {number} [args.workers] - Worker handlers to start.
|
|
90
|
+
* @param {() => number} [args.availableParallelism] - CPU availability owner seam.
|
|
87
91
|
* @param {(args: {configuration: import("../configuration.js").default, onReload: (args: {changedPath: string}) => Promise<void>}) => {start: () => Promise<void>, stop: () => Promise<void>}} [args.developmentReloaderFactory] - Development reloader factory.
|
|
88
92
|
* @param {WorkerHandlerFactory} [args.workerHandlerFactory] - Worker handler factory.
|
|
89
93
|
*/
|
|
90
|
-
constructor({configuration, developmentReloaderFactory, host, inProcess, maxWorkers, port, workerHandlerFactory, workers}) {
|
|
94
|
+
constructor({availableParallelism = os.availableParallelism, configuration, developmentReloaderFactory, host, inProcess, maxWorkers, port, workerHandlerFactory, workers}) {
|
|
91
95
|
this.configuration = configuration
|
|
92
96
|
this.developmentReloaderFactory = developmentReloaderFactory
|
|
93
97
|
this.workerHandlerFactory = workerHandlerFactory
|
|
@@ -95,7 +99,8 @@ export default class VelociousHttpServer {
|
|
|
95
99
|
this.logger = new Logger(this)
|
|
96
100
|
this.host = host ?? "0.0.0.0"
|
|
97
101
|
this.port = port ?? 3006
|
|
98
|
-
this.workers = normalizeWorkerCount({maxWorkers, workers})
|
|
102
|
+
this.workers = normalizeWorkerCount({defaultWorkerCount: availableParallelism(), maxWorkers, workers})
|
|
103
|
+
this.effectiveWorkers = this.inProcess && workers === undefined && maxWorkers === undefined ? 1 : this.workers
|
|
99
104
|
}
|
|
100
105
|
|
|
101
106
|
/**
|
|
@@ -167,7 +172,7 @@ export default class VelociousHttpServer {
|
|
|
167
172
|
this.developmentReloader = startupState.developmentReloader
|
|
168
173
|
this.netServer = startupState.netServer
|
|
169
174
|
this.workerHandlers = startupState.workerHandlers
|
|
170
|
-
this.
|
|
175
|
+
this.websocketSessionOwners.clear()
|
|
171
176
|
}
|
|
172
177
|
|
|
173
178
|
/**
|
|
@@ -205,7 +210,7 @@ export default class VelociousHttpServer {
|
|
|
205
210
|
* @returns {Promise<void>} - Resolves when complete.
|
|
206
211
|
*/
|
|
207
212
|
async _ensureWorkers() {
|
|
208
|
-
while (this.workerHandlers.length < this.
|
|
213
|
+
while (this.workerHandlers.length < this.effectiveWorkers) {
|
|
209
214
|
await this.spawnWorker()
|
|
210
215
|
}
|
|
211
216
|
}
|
|
@@ -232,6 +237,7 @@ export default class VelociousHttpServer {
|
|
|
232
237
|
activeSocketCount: this._activeSockets.size,
|
|
233
238
|
clientCount: Object.keys(this.clients).length,
|
|
234
239
|
configuredWorkerCount: this.workers,
|
|
240
|
+
effectiveWorkerCount: this.effectiveWorkers,
|
|
235
241
|
inProcess: this.inProcess,
|
|
236
242
|
workerCount: this.workerHandlers.length,
|
|
237
243
|
workers: await Promise.all(this.workerHandlers.map((handler) => this.workerDebugSnapshot(handler)))
|
|
@@ -327,7 +333,7 @@ export default class VelociousHttpServer {
|
|
|
327
333
|
const stopTasks = this.workerHandlers.map((handler) => handler.stop())
|
|
328
334
|
await Promise.all(stopTasks)
|
|
329
335
|
this.workerHandlers = []
|
|
330
|
-
this.
|
|
336
|
+
this.websocketSessionOwners.clear()
|
|
331
337
|
}
|
|
332
338
|
|
|
333
339
|
/**
|
|
@@ -367,9 +373,6 @@ export default class VelociousHttpServer {
|
|
|
367
373
|
this.clientCount++
|
|
368
374
|
|
|
369
375
|
try {
|
|
370
|
-
// Paused WebSocket sessions are worker-local, so reconnects from
|
|
371
|
-
// the same client address must return to the same worker.
|
|
372
|
-
const workerHandler = this.workerHandlerToUse({stickyKey: socket.remoteAddress})
|
|
373
376
|
const client = new ServerClient({
|
|
374
377
|
clientCount,
|
|
375
378
|
configuration: this.configuration,
|
|
@@ -377,16 +380,184 @@ export default class VelociousHttpServer {
|
|
|
377
380
|
})
|
|
378
381
|
|
|
379
382
|
client.events.on("close", this.onClientClose)
|
|
380
|
-
|
|
381
|
-
this.logger.debug(`Gave client ${clientCount} to worker ${workerHandler.workerCount}`)
|
|
382
|
-
workerHandler.addSocketConnection(client)
|
|
383
383
|
this.clients[clientCount] = client
|
|
384
|
+
this.routeClientAfterInitialRoutingData(client)
|
|
384
385
|
} catch (error) {
|
|
385
386
|
this.logger.error(`Failed to initialize client ${clientCount} on new connection`, error)
|
|
386
387
|
socket.destroy()
|
|
387
388
|
}
|
|
388
389
|
}
|
|
389
390
|
|
|
391
|
+
/**
|
|
392
|
+
* Buffers only the bounded initial request data needed to recognize a
|
|
393
|
+
* WebSocket resume routing hint, then replays it to the selected worker.
|
|
394
|
+
* @param {ServerClient} client - Unassigned socket client.
|
|
395
|
+
* @returns {void}
|
|
396
|
+
*/
|
|
397
|
+
routeClientAfterInitialRoutingData(client) {
|
|
398
|
+
const {socket} = client
|
|
399
|
+
/** @type {Buffer[]} */
|
|
400
|
+
const chunks = []
|
|
401
|
+
let byteLength = 0
|
|
402
|
+
const cleanup = () => {
|
|
403
|
+
socket.off("data", onData)
|
|
404
|
+
socket.off("close", cleanup)
|
|
405
|
+
}
|
|
406
|
+
const onData = (/** @type {Buffer} */ chunk) => {
|
|
407
|
+
chunks.push(chunk)
|
|
408
|
+
byteLength += chunk.length
|
|
409
|
+
const initialRequest = Buffer.concat(chunks, byteLength)
|
|
410
|
+
|
|
411
|
+
if (this.initialRequestNeedsMoreRoutingData(initialRequest) && byteLength < MAX_INITIAL_REQUEST_HEADER_BYTES) return
|
|
412
|
+
|
|
413
|
+
cleanup()
|
|
414
|
+
this.assignClientToWorker(client, initialRequest)
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
socket.on("data", onData)
|
|
418
|
+
socket.once("close", cleanup)
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Checks whether the buffered initial HTTP headers are complete.
|
|
423
|
+
* @param {Buffer} initialRequest - Buffered initial request bytes.
|
|
424
|
+
* @returns {boolean} - Whether a header terminator is present.
|
|
425
|
+
*/
|
|
426
|
+
initialRequestHeadersComplete(initialRequest) {
|
|
427
|
+
return initialRequest.includes("\r\n\r\n") || initialRequest.includes("\n\n")
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Checks whether a possible resumable WebSocket request still needs headers.
|
|
432
|
+
* Ordinary and malformed requests can reach the existing request parser as
|
|
433
|
+
* soon as their first line is complete.
|
|
434
|
+
* @param {Buffer} initialRequest - Buffered initial request bytes.
|
|
435
|
+
* @returns {boolean} - Whether more routing data is required.
|
|
436
|
+
*/
|
|
437
|
+
initialRequestNeedsMoreRoutingData(initialRequest) {
|
|
438
|
+
if (this.initialRequestHeadersComplete(initialRequest)) return false
|
|
439
|
+
|
|
440
|
+
const lineEnd = initialRequest.indexOf("\n")
|
|
441
|
+
|
|
442
|
+
if (lineEnd === -1) return true
|
|
443
|
+
|
|
444
|
+
const requestLine = initialRequest.subarray(0, lineEnd).toString("latin1").replace(/\r$/, "")
|
|
445
|
+
const requestLineMatch = requestLine.match(/^GET ([^ ]+) HTTP\/[^ ]+$/)
|
|
446
|
+
|
|
447
|
+
if (!requestLineMatch) return false
|
|
448
|
+
|
|
449
|
+
try {
|
|
450
|
+
const requestUrl = new URL(requestLineMatch[1], "http://velocious.invalid")
|
|
451
|
+
|
|
452
|
+
return requestUrl.searchParams.has(WEBSOCKET_SESSION_ROUTING_PARAMETER)
|
|
453
|
+
} catch {
|
|
454
|
+
return false
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* Assigns a buffered client and replays the exact bytes into its worker.
|
|
460
|
+
* @param {ServerClient} client - Client awaiting assignment.
|
|
461
|
+
* @param {Buffer} initialRequest - Initial request bytes.
|
|
462
|
+
* @returns {void}
|
|
463
|
+
*/
|
|
464
|
+
assignClientToWorker(client, initialRequest) {
|
|
465
|
+
if (client.socket.destroyed) return
|
|
466
|
+
|
|
467
|
+
try {
|
|
468
|
+
const workerHandler = this.workerHandlerForInitialRequest(initialRequest)
|
|
469
|
+
|
|
470
|
+
this.logger.debug(`Gave client ${client.clientCount} to worker ${workerHandler.workerCount}`)
|
|
471
|
+
workerHandler.addSocketConnection(client)
|
|
472
|
+
client.onSocketData(initialRequest)
|
|
473
|
+
} catch (error) {
|
|
474
|
+
this.logger.error(`Failed to assign client ${client.clientCount} to a worker`, error)
|
|
475
|
+
client.destroy(error instanceof Error ? error : new Error("Failed to assign HTTP client to worker", {cause: error}))
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Selects the owner of a resumable WebSocket session or the next ordinary worker.
|
|
481
|
+
* @param {Buffer} initialRequest - Initial HTTP request headers.
|
|
482
|
+
* @returns {WorkerHandler | InProcessHandler} - Selected worker.
|
|
483
|
+
*/
|
|
484
|
+
workerHandlerForInitialRequest(initialRequest) {
|
|
485
|
+
const sessionId = this.websocketResumeSessionId(initialRequest)
|
|
486
|
+
|
|
487
|
+
if (sessionId) {
|
|
488
|
+
const owner = this.websocketSessionOwners.get(sessionId)
|
|
489
|
+
|
|
490
|
+
if (owner && this.workerHandlers.includes(owner)) return owner
|
|
491
|
+
if (owner) this.websocketSessionOwners.delete(sessionId)
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
return this.workerHandlerToUse()
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* Reads the resumable WebSocket session routing hint from an upgrade request.
|
|
499
|
+
* @param {Buffer} initialRequest - Initial HTTP request headers.
|
|
500
|
+
* @returns {string | undefined} - Session identity, if present on a WebSocket upgrade.
|
|
501
|
+
*/
|
|
502
|
+
websocketResumeSessionId(initialRequest) {
|
|
503
|
+
const headerEnd = initialRequest.indexOf("\r\n\r\n")
|
|
504
|
+
const fallbackHeaderEnd = headerEnd === -1 ? initialRequest.indexOf("\n\n") : headerEnd
|
|
505
|
+
|
|
506
|
+
if (fallbackHeaderEnd === -1) return
|
|
507
|
+
|
|
508
|
+
const lines = initialRequest.subarray(0, fallbackHeaderEnd).toString("latin1").split(/\r?\n/)
|
|
509
|
+
const [method, requestTarget] = lines[0]?.split(" ") || []
|
|
510
|
+
|
|
511
|
+
if (method !== "GET" || !requestTarget) return
|
|
512
|
+
|
|
513
|
+
/** @type {Map<string, string>} */
|
|
514
|
+
const headers = new Map()
|
|
515
|
+
|
|
516
|
+
for (const line of lines.slice(1)) {
|
|
517
|
+
const separatorIndex = line.indexOf(":")
|
|
518
|
+
|
|
519
|
+
if (separatorIndex === -1) continue
|
|
520
|
+
|
|
521
|
+
headers.set(line.slice(0, separatorIndex).trim().toLowerCase(), line.slice(separatorIndex + 1).trim().toLowerCase())
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
if (headers.get("upgrade") !== "websocket" || !headers.get("connection")?.split(",").map((value) => value.trim()).includes("upgrade")) return
|
|
525
|
+
|
|
526
|
+
const sessionId = new URL(requestTarget, "http://velocious.invalid").searchParams.get(WEBSOCKET_SESSION_ROUTING_PARAMETER)
|
|
527
|
+
|
|
528
|
+
return sessionId || undefined
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Records the live worker owner for a resumable session.
|
|
533
|
+
* @param {{sessionId: string, workerHandler: WorkerHandler | InProcessHandler}} args - Ownership claim.
|
|
534
|
+
* @returns {void}
|
|
535
|
+
*/
|
|
536
|
+
claimWebsocketSession({sessionId, workerHandler}) {
|
|
537
|
+
if (!this.workerHandlers.includes(workerHandler)) return
|
|
538
|
+
this.websocketSessionOwners.set(sessionId, workerHandler)
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* Releases a session only when the releasing worker still owns it.
|
|
543
|
+
* @param {{sessionId: string, workerHandler: WorkerHandler | InProcessHandler}} args - Ownership release.
|
|
544
|
+
* @returns {void}
|
|
545
|
+
*/
|
|
546
|
+
releaseWebsocketSession({sessionId, workerHandler}) {
|
|
547
|
+
if (this.websocketSessionOwners.get(sessionId) === workerHandler) this.websocketSessionOwners.delete(sessionId)
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* Releases every session owned by a worker leaving service.
|
|
552
|
+
* @param {WorkerHandler | InProcessHandler} workerHandler - Worker leaving service.
|
|
553
|
+
* @returns {void}
|
|
554
|
+
*/
|
|
555
|
+
releaseWebsocketSessionsForWorker(workerHandler) {
|
|
556
|
+
for (const [sessionId, owner] of this.websocketSessionOwners) {
|
|
557
|
+
if (owner === workerHandler) this.websocketSessionOwners.delete(sessionId)
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
390
561
|
/**
|
|
391
562
|
* On client close.
|
|
392
563
|
* @param {ServerClient} client - Client instance.
|
|
@@ -425,7 +596,7 @@ export default class VelociousHttpServer {
|
|
|
425
596
|
* @type {Array<WorkerHandler | InProcessHandler>} */
|
|
426
597
|
const workerHandlers = []
|
|
427
598
|
|
|
428
|
-
for (let index = 0; index < this.
|
|
599
|
+
for (let index = 0; index < this.effectiveWorkers; index += 1) {
|
|
429
600
|
workerHandlers.push(await this._buildWorkerHandler())
|
|
430
601
|
}
|
|
431
602
|
|
|
@@ -443,9 +614,18 @@ export default class VelociousHttpServer {
|
|
|
443
614
|
|
|
444
615
|
const Handler = this.inProcess ? InProcessHandler : WorkerHandler
|
|
445
616
|
const workerHandler = this.workerHandlerFactory
|
|
446
|
-
? this.workerHandlerFactory({
|
|
617
|
+
? this.workerHandlerFactory({
|
|
618
|
+
configuration: this.configuration,
|
|
619
|
+
onWebsocketSessionOwned: ({sessionId, workerHandler}) => this.claimWebsocketSession({sessionId, workerHandler}),
|
|
620
|
+
onWebsocketSessionReleased: ({sessionId, workerHandler}) => this.releaseWebsocketSession({sessionId, workerHandler}),
|
|
621
|
+
onWorkerStopped: ({workerHandler}) => this.releaseWebsocketSessionsForWorker(workerHandler),
|
|
622
|
+
workerCount
|
|
623
|
+
})
|
|
447
624
|
: new Handler({
|
|
448
625
|
configuration: this.configuration,
|
|
626
|
+
onWebsocketSessionOwned: ({sessionId, workerHandler}) => this.claimWebsocketSession({sessionId, workerHandler}),
|
|
627
|
+
onWebsocketSessionReleased: ({sessionId, workerHandler}) => this.releaseWebsocketSession({sessionId, workerHandler}),
|
|
628
|
+
onWorkerStopped: ({workerHandler}) => this.releaseWebsocketSessionsForWorker(workerHandler),
|
|
449
629
|
workerCount
|
|
450
630
|
})
|
|
451
631
|
|
|
@@ -456,25 +636,9 @@ export default class VelociousHttpServer {
|
|
|
456
636
|
|
|
457
637
|
/**
|
|
458
638
|
* Runs worker handler to use.
|
|
459
|
-
* @param {object} [args] - Options object.
|
|
460
|
-
* @param {string} [args.stickyKey] - Stable key that must keep routing to the same worker.
|
|
461
639
|
* @returns {WorkerHandler | InProcessHandler} - The worker handler to use.
|
|
462
640
|
*/
|
|
463
|
-
workerHandlerToUse(
|
|
464
|
-
if (stickyKey) {
|
|
465
|
-
const stickyWorkerHandler = this.stickyWorkerHandlers.get(stickyKey)
|
|
466
|
-
|
|
467
|
-
if (stickyWorkerHandler && this.workerHandlers.includes(stickyWorkerHandler)) {
|
|
468
|
-
return stickyWorkerHandler
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
const workerHandler = this._nextRoundRobinWorkerHandler()
|
|
472
|
-
|
|
473
|
-
this.stickyWorkerHandlers.set(stickyKey, workerHandler)
|
|
474
|
-
|
|
475
|
-
return workerHandler
|
|
476
|
-
}
|
|
477
|
-
|
|
641
|
+
workerHandlerToUse() {
|
|
478
642
|
return this._nextRoundRobinWorkerHandler()
|
|
479
643
|
}
|
|
480
644
|
|
|
@@ -550,7 +714,7 @@ export default class VelociousHttpServer {
|
|
|
550
714
|
|
|
551
715
|
this.workerHandlers = newWorkerHandlers
|
|
552
716
|
this.nextWorkerHandlerIndex = 0
|
|
553
|
-
this.
|
|
717
|
+
for (const workerHandler of oldWorkerHandlers) this.releaseWebsocketSessionsForWorker(workerHandler)
|
|
554
718
|
|
|
555
719
|
await Promise.all(oldWorkerHandlers.map((workerHandler) => workerHandler.stop()))
|
|
556
720
|
} while (this._reloadWorkersForDevelopmentQueued && !this._stopping)
|
|
@@ -41,8 +41,11 @@ export default class VelociousHttpServerWorker {
|
|
|
41
41
|
* @param {object} args - Options object.
|
|
42
42
|
* @param {import("../../configuration.js").default} args.configuration - Configuration instance.
|
|
43
43
|
* @param {number} args.workerCount - Worker count.
|
|
44
|
+
* @param {(args: {sessionId: string, workerHandler: VelociousHttpServerWorker}) => void} [args.onWebsocketSessionOwned] - Session ownership callback.
|
|
45
|
+
* @param {(args: {sessionId: string, workerHandler: VelociousHttpServerWorker}) => void} [args.onWebsocketSessionReleased] - Session ownership release callback.
|
|
46
|
+
* @param {(args: {workerHandler: VelociousHttpServerWorker}) => void} [args.onWorkerStopped] - Worker lifecycle callback.
|
|
44
47
|
*/
|
|
45
|
-
constructor({configuration, workerCount}) {
|
|
48
|
+
constructor({configuration, onWebsocketSessionOwned, onWebsocketSessionReleased, onWorkerStopped, workerCount}) {
|
|
46
49
|
this.configuration = configuration
|
|
47
50
|
|
|
48
51
|
/**
|
|
@@ -52,6 +55,9 @@ export default class VelociousHttpServerWorker {
|
|
|
52
55
|
|
|
53
56
|
this.logger = new Logger(this)
|
|
54
57
|
this.workerCount = workerCount
|
|
58
|
+
this.onWebsocketSessionOwned = onWebsocketSessionOwned
|
|
59
|
+
this.onWebsocketSessionReleased = onWebsocketSessionReleased
|
|
60
|
+
this.onWorkerStopped = onWorkerStopped
|
|
55
61
|
this.workerStarted = false
|
|
56
62
|
this._stopping = false
|
|
57
63
|
this._debugRequestId = 0
|
|
@@ -152,6 +158,7 @@ export default class VelociousHttpServerWorker {
|
|
|
152
158
|
}
|
|
153
159
|
|
|
154
160
|
this.unregisterFromEventsHostIfNeeded()
|
|
161
|
+
if (this.onWorkerStopped) this.onWorkerStopped({workerHandler: this})
|
|
155
162
|
if (this._stopResolve) {
|
|
156
163
|
this._stopResolve()
|
|
157
164
|
}
|
|
@@ -190,6 +197,7 @@ export default class VelociousHttpServerWorker {
|
|
|
190
197
|
* @param {number} [data.transferId] - File transfer id.
|
|
191
198
|
* @param {boolean} [data.websocketFrame] - Whether output is a completed WebSocket frame.
|
|
192
199
|
* @param {string} [data.channel] - Channel name.
|
|
200
|
+
* @param {string} [data.sessionId] - WebSocket session identity.
|
|
193
201
|
* @param {number} [data.requestId] - Debug request id.
|
|
194
202
|
* @param {Record<string, ReturnType<typeof JSON.parse>>} [data.snapshot] - Worker debug snapshot.
|
|
195
203
|
* @param {ReturnType<typeof JSON.parse>} [data.payload] - Payload data.
|
|
@@ -306,6 +314,12 @@ export default class VelociousHttpServerWorker {
|
|
|
306
314
|
channel,
|
|
307
315
|
configuration: this.configuration
|
|
308
316
|
})
|
|
317
|
+
} else if (command == "websocketSessionOwned") {
|
|
318
|
+
if (typeof data.sessionId !== "string") throw new Error("Worker websocket session id must be a string")
|
|
319
|
+
if (this.onWebsocketSessionOwned) this.onWebsocketSessionOwned({sessionId: data.sessionId, workerHandler: this})
|
|
320
|
+
} else if (command == "websocketSessionReleased") {
|
|
321
|
+
if (typeof data.sessionId !== "string") throw new Error("Worker websocket session id must be a string")
|
|
322
|
+
if (this.onWebsocketSessionReleased) this.onWebsocketSessionReleased({sessionId: data.sessionId, workerHandler: this})
|
|
309
323
|
} else {
|
|
310
324
|
throw new Error(`Unknown command: ${command}`)
|
|
311
325
|
}
|
|
@@ -170,6 +170,14 @@ export default class VelociousHttpServerWorkerHandlerWorkerThread {
|
|
|
170
170
|
this.parentPort.postMessage({command: "clientClose", clientCount, output})
|
|
171
171
|
})
|
|
172
172
|
|
|
173
|
+
client.events.on("websocketSessionOwned", ({sessionId}) => {
|
|
174
|
+
this.parentPort.postMessage({command: "websocketSessionOwned", sessionId})
|
|
175
|
+
})
|
|
176
|
+
|
|
177
|
+
client.events.on("websocketSessionReleased", ({sessionId}) => {
|
|
178
|
+
this.parentPort.postMessage({command: "websocketSessionReleased", sessionId})
|
|
179
|
+
})
|
|
180
|
+
|
|
173
181
|
this.clients[clientCount] = client
|
|
174
182
|
}
|
|
175
183
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "async_hooks";
|
|
2
2
|
import BasePool from "./base.js";
|
|
3
|
+
import DatabasePoolCheckoutTimeoutError from "./checkout-timeout-error.js";
|
|
3
4
|
export type PendingCheckout = {
|
|
4
5
|
/**
|
|
5
6
|
* - Resolved database configuration needed by the checkout.
|
|
@@ -122,6 +123,8 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
122
123
|
* Pending checkout drain promise.
|
|
123
124
|
* @type {Promise<void> | undefined} */
|
|
124
125
|
pendingCheckoutDrainPromise: Promise<void> | undefined;
|
|
126
|
+
/** Whether a caller requested another pass through the pending checkout queue. */
|
|
127
|
+
pendingCheckoutDrainRequested: boolean;
|
|
125
128
|
/**
|
|
126
129
|
* Idle connection reaper timer.
|
|
127
130
|
* @type {ReturnType<typeof setTimeout> | undefined} */
|
|
@@ -319,6 +322,23 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
319
322
|
* @returns {Promise<void>} - Resolves when pending checkouts have been drained as far as possible.
|
|
320
323
|
*/
|
|
321
324
|
drainPendingCheckouts(): Promise<void>;
|
|
325
|
+
/**
|
|
326
|
+
* Starts the single checkout-drain owner. The shared promise is cleared before
|
|
327
|
+
* it settles, closing the resolved-promise/stale-field interval in which a new
|
|
328
|
+
* request could otherwise be lost.
|
|
329
|
+
* @returns {void}
|
|
330
|
+
*/
|
|
331
|
+
startPendingCheckoutDrain(): void;
|
|
332
|
+
/**
|
|
333
|
+
* Runs drain passes until every request observed during the active pass has
|
|
334
|
+
* received a later pass.
|
|
335
|
+
* @param {{reject: (reason?: ReturnType<typeof JSON.parse>) => void, resolve: (value?: void) => void}} deferred - Shared drain settlement.
|
|
336
|
+
* @returns {Promise<void>}
|
|
337
|
+
*/
|
|
338
|
+
runRequestedPendingCheckoutDrains({ reject, resolve }: {
|
|
339
|
+
reject: (reason?: ReturnType<typeof JSON.parse>) => void;
|
|
340
|
+
resolve: (value?: void) => void;
|
|
341
|
+
}): Promise<void>;
|
|
322
342
|
/**
|
|
323
343
|
* Runs drain pending checkouts actual.
|
|
324
344
|
* @returns {Promise<void>} - Resolves when pending checkouts have been drained as far as possible.
|
|
@@ -356,9 +376,9 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
356
376
|
/**
|
|
357
377
|
* Runs pending checkout timeout error.
|
|
358
378
|
* @param {PendingCheckout} checkout - Timed-out checkout.
|
|
359
|
-
* @returns {
|
|
379
|
+
* @returns {DatabasePoolCheckoutTimeoutError} - Timeout error.
|
|
360
380
|
*/
|
|
361
|
-
pendingCheckoutTimeoutError(checkout: PendingCheckout):
|
|
381
|
+
pendingCheckoutTimeoutError(checkout: PendingCheckout): DatabasePoolCheckoutTimeoutError;
|
|
362
382
|
/**
|
|
363
383
|
* Builds sanitized diagnostics for a checkout timeout.
|
|
364
384
|
* @param {PendingCheckout} checkout - Timed-out checkout.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-tracked-multi-connection.d.ts","sourceRoot":"","sources":["../../../../src/database/pool/async-tracked-multi-connection.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"async-tracked-multi-connection.d.ts","sourceRoot":"","sources":["../../../../src/database/pool/async-tracked-multi-connection.js"],"names":[],"mappings":"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"}
|