@proteinjs/db-driver-spanner 1.13.0 → 1.14.1

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 (40) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/dist/generated/index.js +1 -1
  4. package/dist/generated/index.js.map +1 -1
  5. package/dist/generated/test/index.js +1 -1
  6. package/dist/generated/test/index.js.map +1 -1
  7. package/dist/src/SpannerConfig.d.ts +22 -0
  8. package/dist/src/SpannerConfig.d.ts.map +1 -1
  9. package/dist/src/SpannerDriver.d.ts +46 -11
  10. package/dist/src/SpannerDriver.d.ts.map +1 -1
  11. package/dist/src/SpannerDriver.js +194 -26
  12. package/dist/src/SpannerDriver.js.map +1 -1
  13. package/dist/src/SpannerLivenessMonitor.d.ts +25 -0
  14. package/dist/src/SpannerLivenessMonitor.d.ts.map +1 -1
  15. package/dist/src/SpannerLivenessMonitor.js +48 -2
  16. package/dist/src/SpannerLivenessMonitor.js.map +1 -1
  17. package/dist/test/SessionPoolExhaustion.test.d.ts +2 -0
  18. package/dist/test/SessionPoolExhaustion.test.d.ts.map +1 -0
  19. package/dist/test/SessionPoolExhaustion.test.js +230 -0
  20. package/dist/test/SessionPoolExhaustion.test.js.map +1 -0
  21. package/dist/test/SpannerLivenessMonitor.test.js +42 -0
  22. package/dist/test/SpannerLivenessMonitor.test.js.map +1 -1
  23. package/dist/test/SpannerOperationDeadline.test.d.ts +2 -0
  24. package/dist/test/SpannerOperationDeadline.test.d.ts.map +1 -0
  25. package/dist/test/SpannerOperationDeadline.test.js +227 -0
  26. package/dist/test/SpannerOperationDeadline.test.js.map +1 -0
  27. package/dist/test/TransactionSafety.test.d.ts +2 -0
  28. package/dist/test/TransactionSafety.test.d.ts.map +1 -0
  29. package/dist/test/TransactionSafety.test.js +325 -0
  30. package/dist/test/TransactionSafety.test.js.map +1 -0
  31. package/generated/index.ts +6 -9
  32. package/generated/test/index.ts +8 -11
  33. package/package.json +6 -5
  34. package/src/SpannerConfig.ts +22 -0
  35. package/src/SpannerDriver.ts +204 -28
  36. package/src/SpannerLivenessMonitor.ts +61 -3
  37. package/test/SessionPoolExhaustion.test.ts +127 -0
  38. package/test/SpannerLivenessMonitor.test.ts +55 -0
  39. package/test/SpannerOperationDeadline.test.ts +156 -0
  40. package/test/TransactionSafety.test.ts +157 -0
@@ -101,9 +101,32 @@ var SpannerDriver = /** @class */ (function () {
101
101
  return SpannerDriver.SPANNER_INSTANCE;
102
102
  };
103
103
  SpannerDriver.prototype.getSpannerDb = function () {
104
+ var _this = this;
104
105
  if (!SpannerDriver.SPANNER_DB) {
105
- SpannerDriver.SPANNER_DB = this.getSpannerInstance().database(this.config.databaseName);
106
- SpannerDriver.LIVENESS_MONITOR = new SpannerLivenessMonitor_1.SpannerLivenessMonitor(SpannerDriver.SPANNER_DB).start();
106
+ var db_2 = this.getSpannerInstance().database(this.config.databaseName, this.config.sessionPoolOptions);
107
+ // The session pool forwards its 'error' events to the Database (session keepalive /
108
+ // delete failures — advisory: the pool self-heals, and per-query failures reject their
109
+ // own calls instead of flowing through this channel). Without a listener Node treats
110
+ // the emit as an unhandled 'error' event and crashes the process; a recycled client's
111
+ // post-close session deletes make that a certainty, so the owner that creates the
112
+ // Database also owns its error channel.
113
+ db_2.on('error', function (error) {
114
+ var detail = error instanceof Error ? error.message : String(error);
115
+ if (SpannerDriver.SPANNER_DB === db_2) {
116
+ _this.logger.warn({
117
+ message: 'Spanner session pool error (advisory; the pool self-heals)',
118
+ obj: { error: detail },
119
+ });
120
+ }
121
+ else {
122
+ _this.logger.debug({
123
+ message: 'Spanner session pool error from a recycled/abandoned client (expected during teardown)',
124
+ obj: { error: detail },
125
+ });
126
+ }
127
+ });
128
+ SpannerDriver.SPANNER_DB = db_2;
129
+ SpannerDriver.LIVENESS_MONITOR = new SpannerLivenessMonitor_1.SpannerLivenessMonitor(db_2).start();
107
130
  }
108
131
  return SpannerDriver.SPANNER_DB;
109
132
  };
@@ -210,10 +233,14 @@ var SpannerDriver = /** @class */ (function () {
210
233
  case 1:
211
234
  _b.trys.push([1, 3, , 4]);
212
235
  this.logger.debug({ message: "Executing query", obj: { sql: sql, params: namedParams } });
213
- return [4 /*yield*/, this.logIfStalled('spanner query', sql, runner.run({
236
+ return [4 /*yield*/, this.withDeadline('spanner query', sql, runner.run({
214
237
  sql: sql,
215
238
  params: namedParams === null || namedParams === void 0 ? void 0 : namedParams.params,
216
239
  types: namedParams === null || namedParams === void 0 ? void 0 : namedParams.types,
240
+ // The gRPC deadline is what actually cancels the RPC on a dead channel: the stream
241
+ // errors, the library ends the snapshot, and the borrowed session RETURNS to the
242
+ // pool. The withDeadline race alone would fail the caller but leak the session.
243
+ gaxOptions: { timeout: this.operationDeadlineMs() },
217
244
  }))];
218
245
  case 2:
219
246
  rows = (_b.sent())[0];
@@ -251,7 +278,7 @@ var SpannerDriver = /** @class */ (function () {
251
278
  if (!transaction) return [3 /*break*/, 2];
252
279
  return [4 /*yield*/, this.executeDml(generateStatement, transaction)];
253
280
  case 1: return [2 /*return*/, _a.sent()];
254
- case 2: return [4 /*yield*/, this.logIfStalled('spanner dml transaction', '(runTransactionAsync)', this.getSpannerDb().runTransactionAsync(function (transaction) { return __awaiter(_this, void 0, void 0, function () {
281
+ case 2: return [4 /*yield*/, this.withDeadline('spanner dml transaction', '(runTransactionAsync)', this.getSpannerDb().runTransactionAsync(function (transaction) { return __awaiter(_this, void 0, void 0, function () {
255
282
  var rowCount, error_2;
256
283
  return __generator(this, function (_a) {
257
284
  switch (_a.label) {
@@ -260,7 +287,7 @@ var SpannerDriver = /** @class */ (function () {
260
287
  return [4 /*yield*/, this.executeDml(generateStatement, transaction)];
261
288
  case 1:
262
289
  rowCount = _a.sent();
263
- return [4 /*yield*/, transaction.commit()];
290
+ return [4 /*yield*/, this.commit(transaction)];
264
291
  case 2:
265
292
  _a.sent();
266
293
  return [2 /*return*/, rowCount];
@@ -276,7 +303,10 @@ var SpannerDriver = /** @class */ (function () {
276
303
  }); }))];
277
304
  case 3:
278
305
  // Stalls in the transaction wrapper itself (session acquisition / begin / commit) happen
279
- // OUTSIDE executeDml's instrumentation — wrap the whole round trip too.
306
+ // OUTSIDE executeDml's instrumentation — wrap the whole round trip too. Every await inside
307
+ // the run function is deadline-bounded (dml, commit, rollback): the run function therefore
308
+ // ALWAYS settles, which is what makes runTransactionAsync's own `finally` release the
309
+ // transaction's session back to the pool on a dead channel.
280
310
  return [2 /*return*/, _a.sent()];
281
311
  }
282
312
  });
@@ -299,10 +329,13 @@ var SpannerDriver = /** @class */ (function () {
299
329
  case 1:
300
330
  _b.trys.push([1, 3, , 4]);
301
331
  this.logger.debug({ message: "Executing dml", obj: { sql: sql, params: namedParams } });
302
- return [4 /*yield*/, this.logIfStalled('spanner dml', sql, runner.runUpdate({
332
+ return [4 /*yield*/, this.withDeadline('spanner dml', sql, runner.runUpdate({
303
333
  sql: sql,
304
334
  params: namedParams === null || namedParams === void 0 ? void 0 : namedParams.params,
305
335
  types: namedParams === null || namedParams === void 0 ? void 0 : namedParams.types,
336
+ // gRPC deadline: cancels the RPC on a dead channel so the transaction's run function
337
+ // settles and the library releases the session (see runDml).
338
+ gaxOptions: { timeout: this.operationDeadlineMs() },
306
339
  }))];
307
340
  case 2:
308
341
  rowCount = (_b.sent())[0];
@@ -336,7 +369,7 @@ var SpannerDriver = /** @class */ (function () {
336
369
  var _this = this;
337
370
  return __generator(this, function (_a) {
338
371
  switch (_a.label) {
339
- case 0: return [4 /*yield*/, this.logIfStalled('spanner transaction', '(runTransactionAsync)', this.getSpannerDb().runTransactionAsync(function (transaction) { return __awaiter(_this, void 0, void 0, function () {
372
+ case 0: return [4 /*yield*/, this.withDeadline('spanner transaction', '(runTransactionAsync)', this.getSpannerDb().runTransactionAsync(function (transaction) { return __awaiter(_this, void 0, void 0, function () {
340
373
  var result, error_4;
341
374
  return __generator(this, function (_a) {
342
375
  switch (_a.label) {
@@ -345,7 +378,7 @@ var SpannerDriver = /** @class */ (function () {
345
378
  return [4 /*yield*/, fn(transaction)];
346
379
  case 1:
347
380
  result = _a.sent();
348
- return [4 /*yield*/, transaction.commit()];
381
+ return [4 /*yield*/, this.commit(transaction)];
349
382
  case 2:
350
383
  _a.sent();
351
384
  return [2 /*return*/, result];
@@ -364,6 +397,23 @@ var SpannerDriver = /** @class */ (function () {
364
397
  });
365
398
  });
366
399
  };
400
+ /**
401
+ * Deadline-bounded commit: a commit hanging on a dead channel would otherwise keep the
402
+ * transaction's run function pending forever, and with it the session (runTransactionAsync
403
+ * only releases the session once the run function settles).
404
+ */
405
+ SpannerDriver.prototype.commit = function (transaction) {
406
+ return __awaiter(this, void 0, void 0, function () {
407
+ return __generator(this, function (_a) {
408
+ switch (_a.label) {
409
+ case 0: return [4 /*yield*/, this.withDeadline('spanner commit', '(commit)', transaction.commit({ gaxOptions: { timeout: this.operationDeadlineMs() } }))];
410
+ case 1:
411
+ _a.sent();
412
+ return [2 /*return*/];
413
+ }
414
+ });
415
+ });
416
+ };
367
417
  /**
368
418
  * Release a transaction whose work errored. The client library's runner does NOT roll back on
369
419
  * non-retryable errors — it just rethrows — so a thrown `fn` (e.g. an application rollback, or
@@ -372,8 +422,10 @@ var SpannerDriver = /** @class */ (function () {
372
422
  * so one leaked transaction blocks every subsequent DDL with FAILED_PRECONDITION ("a
373
423
  * read-write transaction is already in progress") — poisoning whole test runs. Rollback of an
374
424
  * already-invalid transaction (e.g. ABORTED, about to be retried by the runner with a fresh
375
- * transaction) is expected to fail; that failure is logged and swallowed so the ORIGINAL error
376
- * — the one that carries retry semantics — always propagates.
425
+ * transaction, or one whose commit was already called) is expected to fail; that failure is
426
+ * logged at debug and swallowed so the ORIGINAL error — the one that carries retry semantics —
427
+ * always propagates. Deadline-bounded like commit: an unbounded rollback on a dead channel
428
+ * would keep the run function (and its session) pending forever.
377
429
  */
378
430
  SpannerDriver.prototype.rollbackQuietly = function (transaction) {
379
431
  return __awaiter(this, void 0, void 0, function () {
@@ -382,7 +434,7 @@ var SpannerDriver = /** @class */ (function () {
382
434
  switch (_a.label) {
383
435
  case 0:
384
436
  _a.trys.push([0, 2, , 3]);
385
- return [4 /*yield*/, transaction.rollback()];
437
+ return [4 /*yield*/, this.withDeadline('spanner rollback', '(rollback)', transaction.rollback({ timeout: this.operationDeadlineMs() }))];
386
438
  case 1:
387
439
  _a.sent();
388
440
  return [3 /*break*/, 3];
@@ -396,28 +448,39 @@ var SpannerDriver = /** @class */ (function () {
396
448
  });
397
449
  };
398
450
  /**
399
- * Stall diagnostics (2026-07-10 flow-hang investigation): background flow tasks intermittently
400
- * wedge between model calls with every model-layer guard silent — the remaining awaits on that
401
- * path are Spanner ops, and this client has NO acquire/read timeouts (a wedged session/gRPC
402
- * stream waits forever). Logs ops still pending at 30s and 120s with the op and statement
403
- * then keeps waiting: pure diagnosis, zero behavior change.
451
+ * The one choke point every query/dml/transaction op awaits through. Two jobs:
452
+ *
453
+ * 1. Stall diagnostics (2026-07-10 flow-hang investigation): logs ops still pending at 30s
454
+ * and 120s with the op and statement.
455
+ * 2. OP DEADLINE (2026-08-06 overnight wedge): an op that has not settled by
456
+ * `operationDeadlineMs` (default 60s) FAILS with an error naming the deadline instead of
457
+ * hanging forever on a dead gRPC channel. This race covers hangs the gRPC deadline cannot
458
+ * see (session-pool acquisition, library internals before the RPC starts); the
459
+ * wire-level cancellation + session return is the gRPC deadline attached per call
460
+ * (`gaxOptions.timeout`, same value) — see the call sites. Deadline failures feed the
461
+ * channel-death recycle counter; any success resets it.
404
462
  */
405
- SpannerDriver.prototype.logIfStalled = function (op, sql, promise, timeoutMs) {
463
+ SpannerDriver.prototype.withDeadline = function (op, sql, promise) {
406
464
  var _this = this;
407
465
  var _a, _b;
408
- if (timeoutMs === void 0) { timeoutMs = 30000; }
466
+ // Pool gauge (P4a): every op passes through here, so this is where waiting-on-the-pool
467
+ // becomes visible (throttled inside the monitor). The monitor exists by now — all ops
468
+ // require getSpannerDb() first.
469
+ SpannerDriver.LIVENESS_MONITOR.logPoolPressure();
470
+ var deadlineMs = this.operationDeadlineMs();
471
+ var generation = SpannerDriver.CLIENT_GENERATION;
409
472
  var settled = false;
410
473
  var logStall = function (afterMs) {
411
474
  return _this.logger.error({
412
475
  message: "Spanner op stalled: ".concat(op),
413
- obj: { afterMs: afterMs, sql: String(sql).slice(0, 200) },
476
+ obj: { afterMs: afterMs, sql: String(sql).slice(0, 200), pool: SpannerDriver.LIVENESS_MONITOR.poolStats() },
414
477
  });
415
478
  };
416
479
  var t1 = setTimeout(function () {
417
480
  if (!settled) {
418
- logStall(timeoutMs);
481
+ logStall(30000);
419
482
  }
420
- }, timeoutMs);
483
+ }, 30000);
421
484
  var t2 = setTimeout(function () {
422
485
  if (!settled) {
423
486
  logStall(120000);
@@ -425,12 +488,109 @@ var SpannerDriver = /** @class */ (function () {
425
488
  }, 120000);
426
489
  (_a = t1.unref) === null || _a === void 0 ? void 0 : _a.call(t1);
427
490
  (_b = t2.unref) === null || _b === void 0 ? void 0 : _b.call(t2);
428
- return Promise.resolve(promise).finally(function () {
429
- settled = true;
430
- clearTimeout(t1);
431
- clearTimeout(t2);
491
+ return new Promise(function (resolve, reject) {
492
+ var _a;
493
+ var clear = function () {
494
+ settled = true;
495
+ clearTimeout(t1);
496
+ clearTimeout(t2);
497
+ clearTimeout(deadlineTimer);
498
+ };
499
+ var deadlineTimer = setTimeout(function () {
500
+ if (settled) {
501
+ return;
502
+ }
503
+ clear();
504
+ _this.logger.error({
505
+ message: "Spanner op exceeded its ".concat(deadlineMs, "ms deadline: ").concat(op, " \u2014 failing the op"),
506
+ obj: { sql: String(sql).slice(0, 200), pool: SpannerDriver.LIVENESS_MONITOR.poolStats() },
507
+ });
508
+ _this.recordDeadlineFailure(generation);
509
+ // Deliberately no grpc `code` on this error: the liveness monitor's probe/exit
510
+ // escalation stays owned by genuine grpc errors; hang-shaped death is owned by the
511
+ // recycle counter.
512
+ reject(new Error("Spanner op exceeded its ".concat(deadlineMs, "ms deadline: ").concat(op, " (configure via SpannerConfig.operationDeadlineMs)")));
513
+ }, deadlineMs);
514
+ (_a = deadlineTimer.unref) === null || _a === void 0 ? void 0 : _a.call(deadlineTimer);
515
+ Promise.resolve(promise).then(function (value) {
516
+ if (settled) {
517
+ return; // deadline already failed the caller; the library handles the late settle
518
+ }
519
+ clear();
520
+ _this.recordOpSuccess(generation);
521
+ resolve(value);
522
+ }, function (error) {
523
+ if (settled) {
524
+ return;
525
+ }
526
+ clear();
527
+ // A grpc DEADLINE_EXCEEDED (code 4) is the same dead-channel signal arriving via the
528
+ // per-call gRPC deadline — classification for the one counter, not a second path.
529
+ if ((error === null || error === void 0 ? void 0 : error.code) === 4) {
530
+ _this.recordDeadlineFailure(generation);
531
+ }
532
+ reject(error);
533
+ });
432
534
  });
433
535
  };
536
+ // ── Channel-death recycle (one owner for the process-wide client) ─────────
537
+ SpannerDriver.prototype.recordOpSuccess = function (generation) {
538
+ if (generation !== SpannerDriver.CLIENT_GENERATION) {
539
+ return; // outcome from a recycled client says nothing about the fresh channel
540
+ }
541
+ SpannerDriver.CONSECUTIVE_DEADLINE_FAILURES = 0;
542
+ };
543
+ SpannerDriver.prototype.recordDeadlineFailure = function (generation) {
544
+ if (generation !== SpannerDriver.CLIENT_GENERATION) {
545
+ return;
546
+ }
547
+ SpannerDriver.CONSECUTIVE_DEADLINE_FAILURES += 1;
548
+ if (SpannerDriver.CONSECUTIVE_DEADLINE_FAILURES < this.deadlineFailuresBeforeRecycle()) {
549
+ return;
550
+ }
551
+ // Reset BEFORE recycling: the counter and generation swap happen in this same synchronous
552
+ // frame, so a burst of ops all timing out together triggers exactly one recycle.
553
+ SpannerDriver.CONSECUTIVE_DEADLINE_FAILURES = 0;
554
+ this.recycleClient();
555
+ };
556
+ /**
557
+ * Drop the process-wide Spanner client so the next op builds a fresh client/channel — the
558
+ * categorical cure for a dead gRPC channel (Mac sleep, NAT drop) that deadlines every op.
559
+ * The old liveness monitor is stopped so its probe/exit escalation can't kill the process
560
+ * for a channel we just abandoned; LIVENESS_MONITOR itself stays pointed at it (stopped)
561
+ * until getSpannerDb() installs the new client's monitor, keeping in-flight ops' error
562
+ * paths callable.
563
+ */
564
+ SpannerDriver.prototype.recycleClient = function () {
565
+ this.logger.error({
566
+ message: "Recycling Spanner client after ".concat(this.deadlineFailuresBeforeRecycle(), " consecutive op-deadline failures (dead gRPC channel suspected) \u2014 a fresh client/channel will be created on the next op"),
567
+ });
568
+ SpannerDriver.CLIENT_GENERATION += 1;
569
+ var oldMonitor = SpannerDriver.LIVENESS_MONITOR;
570
+ var oldDb = SpannerDriver.SPANNER_DB;
571
+ var oldSpanner = SpannerDriver.SPANNER;
572
+ SpannerDriver.SPANNER = undefined;
573
+ SpannerDriver.SPANNER_INSTANCE = undefined;
574
+ SpannerDriver.SPANNER_DB = undefined;
575
+ oldMonitor === null || oldMonitor === void 0 ? void 0 : oldMonitor.stop();
576
+ // Best-effort teardown of the old client: session deletes are themselves RPCs on the very
577
+ // channel we believe is dead — the recycle must not depend on them succeeding.
578
+ void (oldDb === null || oldDb === void 0 ? void 0 : oldDb.close().catch(function () { return undefined; }));
579
+ try {
580
+ oldSpanner === null || oldSpanner === void 0 ? void 0 : oldSpanner.close();
581
+ }
582
+ catch (_a) {
583
+ // already torn down
584
+ }
585
+ };
586
+ SpannerDriver.prototype.operationDeadlineMs = function () {
587
+ var _a;
588
+ return (_a = this.config.operationDeadlineMs) !== null && _a !== void 0 ? _a : 60000;
589
+ };
590
+ SpannerDriver.prototype.deadlineFailuresBeforeRecycle = function () {
591
+ var _a;
592
+ return (_a = this.config.deadlineFailuresBeforeRecycle) !== null && _a !== void 0 ? _a : 3;
593
+ };
434
594
  /**
435
595
  * Execute a schema write operation.
436
596
  */
@@ -467,6 +627,14 @@ var SpannerDriver = /** @class */ (function () {
467
627
  });
468
628
  });
469
629
  };
630
+ /**
631
+ * Channel-death recycle accounting (2026-08-06 overnight wedge). Ops are tagged with the
632
+ * generation of the client they started on; only same-generation outcomes touch the counter,
633
+ * so a burst of deadline failures from the OLD (recycled) channel can never spuriously
634
+ * recycle the fresh one.
635
+ */
636
+ SpannerDriver.CLIENT_GENERATION = 0;
637
+ SpannerDriver.CONSECUTIVE_DEADLINE_FAILURES = 0;
470
638
  return SpannerDriver;
471
639
  }());
472
640
  exports.SpannerDriver = SpannerDriver;
@@ -1 +1 @@
1
- {"version":3,"file":"SpannerDriver.js","sourceRoot":"","sources":["../../src/SpannerDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpannerDriver.js","sourceRoot":"","sources":["../../src/SpannerDriver.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,42 @@
1
1
  import { Database } from '@google-cloud/spanner';
2
+ /** Session pool gauge (P4a): the four numbers that make pool exhaustion observable. */
3
+ export type SpannerSessionPoolStats = {
4
+ size: number;
5
+ available: number;
6
+ borrowed: number;
7
+ totalWaiters: number;
8
+ };
2
9
  export declare class SpannerLivenessMonitor {
3
10
  private db;
4
11
  private static readonly PROBE_SQL;
5
12
  private static readonly PROBE_TIMEOUT_MS;
6
13
  /** delay before each attempt; 5 attempts spanning ~2 min (fast failures) to ~4.5 min (30s-deadline failures) */
7
14
  private static readonly PROBE_DELAYS_MS;
15
+ /** waiters > 0 is the wedge signature — warn on sight, but at most once per interval per process */
16
+ private static readonly POOL_PRESSURE_WARN_INTERVAL_MS;
8
17
  private logger;
9
18
  private checkInFlight;
19
+ private stopped;
20
+ private lastPoolPressureWarnMs;
10
21
  constructor(db: Database);
11
22
  /** Attach the single 'error' listener; called once when the Database singleton is created. */
12
23
  start(): this;
24
+ /**
25
+ * Retire this monitor when its client is recycled (channel-death recycle in SpannerDriver):
26
+ * a stopped monitor must never escalate to process exit for a channel the driver has already
27
+ * abandoned — the replacement client gets a fresh monitor.
28
+ */
29
+ stop(): void;
13
30
  /** Called from driver catch blocks; probes only for connectivity-shaped errors. */
14
31
  reportError(error: any): void;
32
+ poolStats(): SpannerSessionPoolStats;
33
+ /**
34
+ * Warn whenever operations are queued waiting on the session pool (the silent-wedge
35
+ * signature — with an infinite acquireTimeout a wedged pool otherwise produces no signal at
36
+ * all). Called by the driver as ops are issued; throttled so a contended burst emits one
37
+ * line per interval, not one per queued op.
38
+ */
39
+ logPoolPressure(nowMs?: number): void;
15
40
  private verifyLiveness;
16
41
  private probe;
17
42
  private sleep;
@@ -1 +1 @@
1
- {"version":3,"file":"SpannerLivenessMonitor.d.ts","sourceRoot":"","sources":["../../src/SpannerLivenessMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAgBjD,qBAAa,sBAAsB;IAQrB,OAAO,CAAC,EAAE;IAPtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAc;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAClD,gHAAgH;IAChH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAC7E,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,aAAa,CAAS;gBAEV,EAAE,EAAE,QAAQ;IAEhC,8FAA8F;IAC9F,KAAK,IAAI,IAAI;IAWb,mFAAmF;IACnF,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;YASf,cAAc;YA4Bd,KAAK;IAOnB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;CAGb"}
1
+ {"version":3,"file":"SpannerLivenessMonitor.d.ts","sourceRoot":"","sources":["../../src/SpannerLivenessMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAe,MAAM,uBAAuB,CAAC;AAgB9D,uFAAuF;AACvF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,sBAAsB;IAYrB,OAAO,CAAC,EAAE;IAXtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAc;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAClD,gHAAgH;IAChH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAC7E,oGAAoG;IACpG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAU;IAChE,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,sBAAsB,CAA4B;gBAEtC,EAAE,EAAE,QAAQ;IAEhC,8FAA8F;IAC9F,KAAK,IAAI,IAAI;IAcb;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAIZ,mFAAmF;IACnF,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAO7B,SAAS,IAAI,uBAAuB;IAKpC;;;;;OAKG;IACH,eAAe,CAAC,KAAK,SAAa,GAAG,IAAI;YAmB3B,cAAc;YAkCd,KAAK;IAOnB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;CAGb"}
@@ -54,27 +54,65 @@ var SpannerLivenessMonitor = /** @class */ (function () {
54
54
  this.db = db;
55
55
  this.logger = new logger_1.Logger({ name: this.constructor.name });
56
56
  this.checkInFlight = false;
57
+ this.stopped = false;
58
+ this.lastPoolPressureWarnMs = Number.NEGATIVE_INFINITY;
57
59
  }
58
60
  /** Attach the single 'error' listener; called once when the Database singleton is created. */
59
61
  SpannerLivenessMonitor.prototype.start = function () {
60
62
  var _this = this;
61
63
  this.db.on('error', function (error) {
62
64
  var _a;
65
+ if (_this.stopped) {
66
+ return;
67
+ }
63
68
  _this.logger.warn({
64
69
  message: "Spanner session pool emitted a background error; verifying db connectivity",
65
- obj: { code: error === null || error === void 0 ? void 0 : error.code, errorDetails: (_a = error === null || error === void 0 ? void 0 : error.details) !== null && _a !== void 0 ? _a : String(error) },
70
+ obj: { code: error === null || error === void 0 ? void 0 : error.code, errorDetails: (_a = error === null || error === void 0 ? void 0 : error.details) !== null && _a !== void 0 ? _a : String(error), pool: _this.poolStats() },
66
71
  });
67
72
  void _this.verifyLiveness();
68
73
  });
69
74
  return this;
70
75
  };
76
+ /**
77
+ * Retire this monitor when its client is recycled (channel-death recycle in SpannerDriver):
78
+ * a stopped monitor must never escalate to process exit for a channel the driver has already
79
+ * abandoned — the replacement client gets a fresh monitor.
80
+ */
81
+ SpannerLivenessMonitor.prototype.stop = function () {
82
+ this.stopped = true;
83
+ };
71
84
  /** Called from driver catch blocks; probes only for connectivity-shaped errors. */
72
85
  SpannerLivenessMonitor.prototype.reportError = function (error) {
73
- if (!CONNECTIVITY_GRPC_CODES.includes(error === null || error === void 0 ? void 0 : error.code)) {
86
+ if (this.stopped || !CONNECTIVITY_GRPC_CODES.includes(error === null || error === void 0 ? void 0 : error.code)) {
74
87
  return;
75
88
  }
76
89
  void this.verifyLiveness();
77
90
  };
91
+ SpannerLivenessMonitor.prototype.poolStats = function () {
92
+ var pool = this.db.pool_;
93
+ return { size: pool.size, available: pool.available, borrowed: pool.borrowed, totalWaiters: pool.totalWaiters };
94
+ };
95
+ /**
96
+ * Warn whenever operations are queued waiting on the session pool (the silent-wedge
97
+ * signature — with an infinite acquireTimeout a wedged pool otherwise produces no signal at
98
+ * all). Called by the driver as ops are issued; throttled so a contended burst emits one
99
+ * line per interval, not one per queued op.
100
+ */
101
+ SpannerLivenessMonitor.prototype.logPoolPressure = function (nowMs) {
102
+ if (nowMs === void 0) { nowMs = Date.now(); }
103
+ var stats = this.poolStats();
104
+ if (stats.totalWaiters === 0) {
105
+ return;
106
+ }
107
+ if (nowMs - this.lastPoolPressureWarnMs < SpannerLivenessMonitor.POOL_PRESSURE_WARN_INTERVAL_MS) {
108
+ return;
109
+ }
110
+ this.lastPoolPressureWarnMs = nowMs;
111
+ this.logger.warn({
112
+ message: "Spanner session pool under pressure: operations are waiting for a session",
113
+ obj: stats,
114
+ });
115
+ };
78
116
  // --- helpers last ---
79
117
  SpannerLivenessMonitor.prototype.verifyLiveness = function () {
80
118
  var _a;
@@ -97,6 +135,9 @@ var SpannerLivenessMonitor = /** @class */ (function () {
97
135
  return [4 /*yield*/, this.sleep(SpannerLivenessMonitor.PROBE_DELAYS_MS[attempt])];
98
136
  case 3:
99
137
  _b.sent();
138
+ if (this.stopped) {
139
+ return [2 /*return*/]; // client recycled mid-cycle — this channel's fate no longer matters
140
+ }
100
141
  _b.label = 4;
101
142
  case 4:
102
143
  _b.trys.push([4, 6, , 7]);
@@ -116,6 +157,9 @@ var SpannerLivenessMonitor = /** @class */ (function () {
116
157
  attempt++;
117
158
  return [3 /*break*/, 2];
118
159
  case 8:
160
+ if (this.stopped) {
161
+ return [2 /*return*/];
162
+ }
119
163
  this.logger.error({
120
164
  message: "Db unreachable after sustained probing; exiting restart-requested (code ".concat(RESTART_REQUEST_EXIT_CODE, ") so supervision respawns into a valid state"),
121
165
  });
@@ -154,6 +198,8 @@ var SpannerLivenessMonitor = /** @class */ (function () {
154
198
  SpannerLivenessMonitor.PROBE_TIMEOUT_MS = 10000;
155
199
  /** delay before each attempt; 5 attempts spanning ~2 min (fast failures) to ~4.5 min (30s-deadline failures) */
156
200
  SpannerLivenessMonitor.PROBE_DELAYS_MS = [0, 5000, 15000, 30000, 60000];
201
+ /** waiters > 0 is the wedge signature — warn on sight, but at most once per interval per process */
202
+ SpannerLivenessMonitor.POOL_PRESSURE_WARN_INTERVAL_MS = 10000;
157
203
  return SpannerLivenessMonitor;
158
204
  }());
159
205
  exports.SpannerLivenessMonitor = SpannerLivenessMonitor;
@@ -1 +1 @@
1
- {"version":3,"file":"SpannerLivenessMonitor.js","sourceRoot":"","sources":["../../src/SpannerLivenessMonitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpannerLivenessMonitor.js","sourceRoot":"","sources":["../../src/SpannerLivenessMonitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '../generated/test/index';
2
+ //# sourceMappingURL=SessionPoolExhaustion.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionPoolExhaustion.test.d.ts","sourceRoot":"","sources":["../../test/SessionPoolExhaustion.test.ts"],"names":[],"mappings":"AAMA,OAAO,yBAAyB,CAAC"}