velocious 1.0.418 → 1.0.420

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 CHANGED
@@ -1442,7 +1442,7 @@ database: {
1442
1442
  }
1443
1443
  ```
1444
1444
 
1445
- `pool.max` caps live async-tracked connections for that pool. When the cap is reached, new checkouts wait until a matching checked-in connection can be handed over or capacity is freed.
1445
+ `pool.max` caps live async-tracked connections for that pool. When the cap is reached, new checkouts wait until a matching checked-in connection can be handed over or capacity is freed. The built-in debug endpoint reports each in-use connection's `checkedOutForMs`, each idle connection's `idleForMs`, and queued `pendingCheckouts[].waitingForMs` so production diagnostics can distinguish long-held checkouts from pool-capacity waits.
1446
1446
 
1447
1447
  # Websockets
1448
1448
 
@@ -2,6 +2,7 @@ export const CLOSED_CONNECTION: unique symbol;
2
2
  /**
3
3
  * @typedef {object} PendingCheckout
4
4
  * @property {import("../../configuration-types.js").DatabaseConfigurationType} databaseConfig - Resolved database configuration needed by the checkout.
5
+ * @property {number} enqueuedAt - Timestamp when the checkout started waiting.
5
6
  * @property {import("./base.js").ConnectionCheckoutOptions} options - Checkout options.
6
7
  * @property {string} reuseKey - Database configuration reuse key needed by the checkout.
7
8
  * @property {(connection: import("../drivers/base.js").default) => void} resolve - Resolves with an activated connection.
@@ -68,6 +69,14 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
68
69
  * @returns {Promise<void>} - Resolves when the connection is checked in or closed.
69
70
  */
70
71
  checkin(connection: import("../drivers/base.js").default): Promise<void>;
72
+ /**
73
+ * @param {import("../drivers/base.js").default} connection - Connection being checked in.
74
+ * @param {number | undefined} id - Connection checkout id.
75
+ * @returns {void}
76
+ */
77
+ untrackConnectionInUse(connection: import("../drivers/base.js").default, id: number | undefined): void;
78
+ /** @returns {Promise<void>} - Resolves once idle reaping has been scheduled or run. */
79
+ handleCheckedInIdleConnection(): Promise<void>;
71
80
  /**
72
81
  * @param {string} reuseKey - Database configuration reuse key.
73
82
  * @param {object} [args] - Options.
@@ -91,6 +100,11 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
91
100
  activateConnection(connection: import("../drivers/base.js").default, options?: import("./base.js").ConnectionCheckoutOptions): Promise<import("../drivers/base.js").default>;
92
101
  /** @returns {number | undefined} - Configured max live connections. */
93
102
  maxConnections(): number | undefined;
103
+ /**
104
+ * @param {unknown} value - Candidate max connection count.
105
+ * @returns {value is number} - Whether the value is a valid max connection count.
106
+ */
107
+ validMaxConnections(value: unknown): value is number;
94
108
  /** @returns {number} - Number of live and in-progress connections. */
95
109
  liveConnectionCount(): number;
96
110
  /** @returns {boolean} - Whether a new connection can be spawned. */
@@ -112,6 +126,23 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
112
126
  drainPendingCheckouts(): Promise<void>;
113
127
  /** @returns {Promise<void>} - Resolves when pending checkouts have been drained as far as possible. */
114
128
  drainPendingCheckoutsActual(): Promise<void>;
129
+ /** @returns {Promise<boolean>} - Whether a pending checkout was resolved with an idle connection. */
130
+ resolvePendingCheckoutWithMatchingIdleConnection(): Promise<boolean>;
131
+ /**
132
+ * @param {PendingCheckout} checkout - Checkout waiting for a connection.
133
+ * @returns {Promise<boolean>} - Whether an idle connection was closed to free capacity.
134
+ */
135
+ closeIdleConnectionForPendingCheckoutCapacity(checkout: PendingCheckout): Promise<boolean>;
136
+ /**
137
+ * @param {string} reuseKey - Database configuration reuse key.
138
+ * @returns {import("../drivers/base.js").default | undefined} - Matching idle connection, if present.
139
+ */
140
+ findIdleConnectionForReuseKey(reuseKey: string): import("../drivers/base.js").default | undefined;
141
+ /**
142
+ * @param {PendingCheckout} checkout - Checkout waiting for a connection.
143
+ * @returns {Promise<import("../drivers/base.js").default | undefined>} - Matching idle connection, if one can be reused.
144
+ */
145
+ idleConnectionForPendingCheckout(checkout: PendingCheckout): Promise<import("../drivers/base.js").default | undefined>;
115
146
  /**
116
147
  * @param {PendingCheckout} checkout - Checkout request to resolve.
117
148
  * @returns {Promise<void>} - Resolves when the checkout has been handled.
@@ -125,6 +156,13 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
125
156
  resolvePendingCheckout(checkout: PendingCheckout, connection: import("../drivers/base.js").default): Promise<void>;
126
157
  /** @returns {Promise<boolean>} - Whether an idle connection was closed to free capacity. */
127
158
  closeOneIdleConnectionForCapacity(): Promise<boolean>;
159
+ /** @returns {import("../drivers/base.js").default} - Fallback connection, if present. */
160
+ currentFallbackConnectionOrFail(): import("../drivers/base.js").default;
161
+ /**
162
+ * @param {number} id - Checked-out connection id.
163
+ * @returns {void}
164
+ */
165
+ ensureConnectionIsInUse(id: number): void;
128
166
  /**
129
167
  * Registers a fallback connection for this pool identifier that will be used when no async context is available.
130
168
  * @param {import("../drivers/base.js").default} connection - Connection.
@@ -140,6 +178,56 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
140
178
  setTestSharedConnection(connection: import("../drivers/base.js").default): void;
141
179
  /** @returns {void} */
142
180
  clearTestSharedConnection(): void;
181
+ /**
182
+ * @param {number} now - Current timestamp.
183
+ * @returns {{connections: Array<Record<string, unknown>>, seenConnections: Set<import("../drivers/base.js").default>}} - Connection snapshots and seen set.
184
+ */
185
+ debugConnectionSnapshots(now: number): {
186
+ connections: Array<Record<string, unknown>>;
187
+ seenConnections: Set<import("../drivers/base.js").default>;
188
+ };
189
+ /**
190
+ * @param {{connections: Array<Record<string, unknown>>, now: number, seenConnections: Set<import("../drivers/base.js").default>}} args - Snapshot collection state.
191
+ * @returns {void}
192
+ */
193
+ addInUseDebugConnectionSnapshots({ connections, now, seenConnections }: {
194
+ connections: Array<Record<string, unknown>>;
195
+ now: number;
196
+ seenConnections: Set<import("../drivers/base.js").default>;
197
+ }): void;
198
+ /**
199
+ * @param {{connections: Array<Record<string, unknown>>, now: number, seenConnections: Set<import("../drivers/base.js").default>}} args - Snapshot collection state.
200
+ * @returns {void}
201
+ */
202
+ addIdleDebugConnectionSnapshots({ connections, now, seenConnections }: {
203
+ connections: Array<Record<string, unknown>>;
204
+ now: number;
205
+ seenConnections: Set<import("../drivers/base.js").default>;
206
+ }): void;
207
+ /**
208
+ * @param {{connections: Array<Record<string, unknown>>, seenConnections: Set<import("../drivers/base.js").default>}} args - Snapshot collection state.
209
+ * @returns {void}
210
+ */
211
+ addFallbackDebugConnectionSnapshots({ connections, seenConnections }: {
212
+ connections: Array<Record<string, unknown>>;
213
+ seenConnections: Set<import("../drivers/base.js").default>;
214
+ }): void;
215
+ /**
216
+ * @param {{connection: import("../drivers/base.js").default | undefined, connections: Array<Record<string, unknown>>, reapable?: boolean, seenConnections: Set<import("../drivers/base.js").default>, state: string}} args - Snapshot collection state.
217
+ * @returns {void}
218
+ */
219
+ addDebugConnectionSnapshotIfUnseen({ connection, connections, reapable, seenConnections, state }: {
220
+ connection: import("../drivers/base.js").default | undefined;
221
+ connections: Array<Record<string, unknown>>;
222
+ reapable?: boolean;
223
+ seenConnections: Set<import("../drivers/base.js").default>;
224
+ state: string;
225
+ }): void;
226
+ /**
227
+ * @param {number} now - Current timestamp.
228
+ * @returns {Array<Record<string, unknown>>} - Pending checkout snapshots.
229
+ */
230
+ pendingCheckoutDebugSnapshots(now: number): Array<Record<string, unknown>>;
143
231
  /**
144
232
  * @returns {import("../drivers/base.js").default | undefined} - The global connection.
145
233
  */
@@ -152,8 +240,15 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
152
240
  clearGlobalConnectionForIdentifier(): void;
153
241
  /** @returns {number | null} - Idle timeout in milliseconds, or null when disabled. */
154
242
  idleTimeoutMillis(): number | null;
243
+ /**
244
+ * @param {unknown} value - Candidate idle timeout value.
245
+ * @returns {value is number} - Whether the value is a valid idle timeout.
246
+ */
247
+ validIdleTimeoutMillis(value: unknown): value is number;
155
248
  /** @returns {void} */
156
249
  scheduleIdleConnectionReaper(): void;
250
+ /** @returns {boolean} - Whether an idle reaper timer should be scheduled. */
251
+ hasIdleConnectionsToReap(): boolean;
157
252
  /**
158
253
  * @param {number} idleTimeoutMillis - Idle timeout in milliseconds.
159
254
  * @returns {number} - Delay before the next reap.
@@ -164,6 +259,49 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
164
259
  * @returns {Promise<void>} - Resolves when complete.
165
260
  */
166
261
  reapIdleConnections(): Promise<void>;
262
+ /**
263
+ * @param {import("../drivers/base.js").default[]} expiredConnections - Connections to close.
264
+ * @returns {Promise<void>} - Resolves when closed.
265
+ */
266
+ closeExpiredIdleConnections(expiredConnections: import("../drivers/base.js").default[]): Promise<void>;
267
+ /** @returns {Promise<void>} - Resolves once in-flight connection closes settle. */
268
+ awaitInflightConnectionCloses(): Promise<void>;
269
+ /**
270
+ * @param {{idleTimeoutMillis: number, now: number}} args - Reaper classification inputs.
271
+ * @returns {{expiredConnections: import("../drivers/base.js").default[], keptConnections: import("../drivers/base.js").default[]}} - Classified idle connections.
272
+ */
273
+ classifyIdleConnectionsForReaping({ idleTimeoutMillis, now }: {
274
+ idleTimeoutMillis: number;
275
+ now: number;
276
+ }): {
277
+ expiredConnections: import("../drivers/base.js").default[];
278
+ keptConnections: import("../drivers/base.js").default[];
279
+ };
280
+ /**
281
+ * @param {{connection: import("../drivers/base.js").default, expiredConnections: import("../drivers/base.js").default[], idleTimeoutMillis: number, keptConnections: import("../drivers/base.js").default[], now: number}} args - Classification state.
282
+ * @returns {void}
283
+ */
284
+ classifyIdleConnectionForReaping({ connection, expiredConnections, idleTimeoutMillis, keptConnections, now }: {
285
+ connection: import("../drivers/base.js").default;
286
+ expiredConnections: import("../drivers/base.js").default[];
287
+ idleTimeoutMillis: number;
288
+ keptConnections: import("../drivers/base.js").default[];
289
+ now: number;
290
+ }): void;
291
+ /**
292
+ * @param {import("../drivers/base.js").default} connection - Connection to inspect.
293
+ * @returns {boolean} - Whether the connection is marked closed.
294
+ */
295
+ connectionIsClosed(connection: import("../drivers/base.js").default): boolean;
296
+ /**
297
+ * @param {{connection: import("../drivers/base.js").default, idleTimeoutMillis: number, now: number}} args - Expiry inputs.
298
+ * @returns {boolean} - Whether the idle connection expired.
299
+ */
300
+ idleConnectionExpired({ connection, idleTimeoutMillis, now }: {
301
+ connection: import("../drivers/base.js").default;
302
+ idleTimeoutMillis: number;
303
+ now: number;
304
+ }): boolean;
167
305
  /**
168
306
  * @param {import("../drivers/base.js").default} connection - Connection to inspect.
169
307
  * @returns {boolean} - Whether the connection has an open transaction.
@@ -197,6 +335,10 @@ export type PendingCheckout = {
197
335
  * - Resolved database configuration needed by the checkout.
198
336
  */
199
337
  databaseConfig: import("../../configuration-types.js").DatabaseConfigurationType;
338
+ /**
339
+ * - Timestamp when the checkout started waiting.
340
+ */
341
+ enqueuedAt: number;
200
342
  /**
201
343
  * - Checkout options.
202
344
  */
@@ -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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"}