@google-cloud/pubsub 5.0.0 → 5.2.0

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 (56) hide show
  1. package/README.md +1 -0
  2. package/build/protos/google/pubsub/v1/pubsub.proto +144 -29
  3. package/build/protos/google/pubsub/v1/schema.proto +2 -3
  4. package/build/protos/protos.d.ts +1007 -27
  5. package/build/protos/protos.js +3093 -172
  6. package/build/protos/protos.json +357 -32
  7. package/build/src/exponential-retry.js +3 -3
  8. package/build/src/exponential-retry.js.map +1 -1
  9. package/build/src/index.d.ts +1 -1
  10. package/build/src/index.js +2 -1
  11. package/build/src/index.js.map +1 -1
  12. package/build/src/lease-manager.d.ts +18 -0
  13. package/build/src/lease-manager.js +52 -2
  14. package/build/src/lease-manager.js.map +1 -1
  15. package/build/src/logs.d.ts +9 -0
  16. package/build/src/logs.js +26 -0
  17. package/build/src/logs.js.map +1 -0
  18. package/build/src/message-queues.d.ts +25 -1
  19. package/build/src/message-queues.js +41 -5
  20. package/build/src/message-queues.js.map +1 -1
  21. package/build/src/message-stream.d.ts +8 -0
  22. package/build/src/message-stream.js +37 -14
  23. package/build/src/message-stream.js.map +1 -1
  24. package/build/src/publisher/message-batch.d.ts +26 -1
  25. package/build/src/publisher/message-batch.js +41 -6
  26. package/build/src/publisher/message-batch.js.map +1 -1
  27. package/build/src/publisher/message-queues.d.ts +22 -5
  28. package/build/src/publisher/message-queues.js +51 -18
  29. package/build/src/publisher/message-queues.js.map +1 -1
  30. package/build/src/pubsub.d.ts +25 -6
  31. package/build/src/pubsub.js.map +1 -1
  32. package/build/src/subscriber.d.ts +70 -4
  33. package/build/src/subscriber.js +154 -9
  34. package/build/src/subscriber.js.map +1 -1
  35. package/build/src/subscription.d.ts +11 -13
  36. package/build/src/subscription.js +2 -1
  37. package/build/src/subscription.js.map +1 -1
  38. package/build/src/telemetry-tracing.js +19 -12
  39. package/build/src/telemetry-tracing.js.map +1 -1
  40. package/build/src/temporal.d.ts +66 -4
  41. package/build/src/temporal.js +104 -4
  42. package/build/src/temporal.js.map +1 -1
  43. package/build/src/util.d.ts +22 -0
  44. package/build/src/util.js +36 -0
  45. package/build/src/util.js.map +1 -1
  46. package/build/src/v1/publisher_client.d.ts +0 -18
  47. package/build/src/v1/publisher_client.js +16 -8
  48. package/build/src/v1/publisher_client.js.map +1 -1
  49. package/build/src/v1/schema_service_client.d.ts +0 -20
  50. package/build/src/v1/schema_service_client.js +5 -5
  51. package/build/src/v1/schema_service_client.js.map +1 -1
  52. package/build/src/v1/subscriber_client.d.ts +4 -36
  53. package/build/src/v1/subscriber_client.js +6 -8
  54. package/build/src/v1/subscriber_client.js.map +1 -1
  55. package/package.json +5 -5
  56. package/CHANGELOG.md +0 -1620
@@ -188,15 +188,34 @@ export declare class PubSub {
188
188
  */
189
189
  get isIdResolved(): boolean;
190
190
  /**
191
- * Closes out this object, releasing any server connections. Note that once
192
- * you close a PubSub object, it may not be used again. Any pending operations
193
- * (e.g. queued publish messages) will fail. If you have topic or subscription
194
- * objects that may have pending operations, you should call close() on those
195
- * first if you want any pending messages to be delivered correctly. The
191
+ * Closes the PubSub client, releasing any underlying gRPC connections.
192
+ *
193
+ * Note that once you close a PubSub object, it may not be used again. Any pending
194
+ * operations (e.g. queued publish messages) will fail. If you have topic or
195
+ * subscription objects that may have pending operations, you should call close()
196
+ * on those first if you want any pending messages to be delivered correctly. The
196
197
  * PubSub class doesn't track those.
198
+
199
+ * Note that this method primarily closes the gRPC clients (Publisher and Subscriber)
200
+ * used for API requests. It does **not** automatically handle the graceful shutdown
201
+ * of active subscriptions.
202
+ *
203
+ * For graceful shutdown of subscriptions with specific timeout behavior (e.g.,
204
+ * ensuring buffered messages are nacked before closing), please refer to the
205
+ * {@link Subscription#close} method. It is recommended to call
206
+ * `Subscription.close({timeout: ...})` directly on your active `Subscription`
207
+ * objects *before* calling `PubSub.close()` if you require that specific
208
+ * shutdown behavior.
209
+ *
210
+ * Calling `PubSub.close()` without first closing active subscriptions might
211
+ * result in abrupt termination of message processing for those subscriptions.
212
+ * Any pending operations on associated Topic or Subscription objects (e.g.,
213
+ * queued publish messages or unacked subscriber messages) may fail after
214
+ * `PubSub.close()` is called.
197
215
  *
198
216
  * @callback EmptyCallback
199
- * @returns {Promise<void>}
217
+ * @param {Error} [err] Request error, if any.
218
+ * @returns {Promise<void>} Resolves when the clients are closed.
200
219
  */
201
220
  close(): Promise<void>;
202
221
  close(callback: EmptyCallback): void;
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,16 @@ import * as tracing from './telemetry-tracing';
24
24
  import { Duration } from './temporal';
25
25
  import { EventEmitter } from 'events';
26
26
  export { StatusError } from './message-stream';
27
+ /**
28
+ * Loggers. Exported for unit tests.
29
+ *
30
+ * @private
31
+ */
32
+ export declare const logs: {
33
+ slowAck: import("google-logging-utils").AdhocDebugLogFunction;
34
+ ackNack: import("google-logging-utils").AdhocDebugLogFunction;
35
+ debug: import("google-logging-utils").AdhocDebugLogFunction;
36
+ };
27
37
  export type PullResponse = google.pubsub.v1.IStreamingPullResponse;
28
38
  export type SubscriptionProperties = google.pubsub.v1.StreamingPullResponse.ISubscriptionProperties;
29
39
  type ValueOf<T> = T[keyof T];
@@ -35,6 +45,22 @@ export declare const AckResponses: {
35
45
  Other: "OTHER";
36
46
  };
37
47
  export type AckResponse = ValueOf<typeof AckResponses>;
48
+ /**
49
+ * Enum values for behaviors of the Subscriber.close() method.
50
+ */
51
+ export declare const SubscriberCloseBehaviors: {
52
+ NackImmediately: "NACK";
53
+ WaitForProcessing: "WAIT";
54
+ };
55
+ export type SubscriberCloseBehavior = ValueOf<typeof SubscriberCloseBehaviors>;
56
+ /**
57
+ * Options to modify the behavior of the Subscriber.close() method. If
58
+ * none is passed, the default is SubscriberCloseBehaviors.Wait.
59
+ */
60
+ export interface SubscriberCloseOptions {
61
+ behavior?: SubscriberCloseBehavior;
62
+ timeout?: Duration;
63
+ }
38
64
  /**
39
65
  * Thrown when an error is detected in an ack/nack/modack call, when
40
66
  * exactly-once delivery is enabled on the subscription. This will
@@ -110,10 +136,12 @@ export declare class Message implements tracing.MessageWithAttributes {
110
136
  orderingKey?: string;
111
137
  publishTime: PreciseDate;
112
138
  received: number;
139
+ private _handledPromise;
113
140
  private _handled;
114
141
  private _length;
115
142
  private _subscriber;
116
143
  private _ackFailed?;
144
+ private _dispatched;
117
145
  /**
118
146
  * @private
119
147
  *
@@ -151,6 +179,26 @@ export declare class Message implements tracing.MessageWithAttributes {
151
179
  * @type {number}
152
180
  */
153
181
  get length(): number;
182
+ /**
183
+ * Resolves when the message has been handled fully; a handled message may
184
+ * not have any further operations performed on it.
185
+ *
186
+ * @private
187
+ */
188
+ get handledPromise(): Promise<void>;
189
+ /**
190
+ * When this message is dispensed to user callback code, this should be called.
191
+ * The time between the dispatch and the handledPromise resolving is when the
192
+ * message is with the user.
193
+ *
194
+ * @private
195
+ */
196
+ dispatched(): void;
197
+ /**
198
+ * @private
199
+ * @returns True if this message has been dispatched to user callback code.
200
+ */
201
+ isDispatched(): boolean;
154
202
  /**
155
203
  * Sets this message's exactly once delivery acks to permanent failure. This is
156
204
  * meant for internal library use only.
@@ -244,6 +292,18 @@ export declare class Message implements tracing.MessageWithAttributes {
244
292
  * settings at the Cloud PubSub server and uses the less accurate method
245
293
  * of only enforcing flow control at the client side.
246
294
  * @property {MessageStreamOptions} [streamingOptions] Streaming options.
295
+ * If no options are passed, it behaves like `SubscriberCloseBehaviors.Wait`.
296
+ * @property {SubscriberCloseOptions} [options] Determines the basic behavior of the
297
+ * close() function.
298
+ * @property {SubscriberCloseBehavior} [options.behavior] The behavior of the close operation.
299
+ * - NackImmediately: Sends nacks for all messages held by the client library, and
300
+ * wait for them to send.
301
+ * - WaitForProcessing: Continues normal ack/nack and leasing processes until close
302
+ * to the timeout, then switches to NackImmediately behavior to close down.
303
+ * Use {@link SubscriberCloseBehaviors} for enum values.
304
+ * @property {Duration} [options.timeout] In the case of Timeout, the maximum duration
305
+ * to wait for pending ack/nack requests to complete before resolving (or rejecting)
306
+ * the promise.
247
307
  */
248
308
  export interface SubscriberOptions {
249
309
  minAckDeadline?: Duration;
@@ -253,6 +313,7 @@ export interface SubscriberOptions {
253
313
  flowControl?: FlowControlOptions;
254
314
  useLegacyFlowControl?: boolean;
255
315
  streamingOptions?: MessageStreamOptions;
316
+ closeOptions?: SubscriberCloseOptions;
256
317
  }
257
318
  /**
258
319
  * Subscriber class is used to manage all message related functionality.
@@ -264,6 +325,7 @@ export interface SubscriberOptions {
264
325
  * @param {SubscriberOptions} options The subscriber options.
265
326
  */
266
327
  export declare class Subscriber extends EventEmitter {
328
+ #private;
267
329
  ackDeadline: number;
268
330
  maxMessages: number;
269
331
  maxBytes: number;
@@ -279,6 +341,7 @@ export declare class Subscriber extends EventEmitter {
279
341
  private _options;
280
342
  private _stream;
281
343
  private _subscription;
344
+ private _99th;
282
345
  subscriptionProperties?: SubscriptionProperties;
283
346
  constructor(subscription: Subscription, options?: {});
284
347
  /**
@@ -341,10 +404,13 @@ export declare class Subscriber extends EventEmitter {
341
404
  */
342
405
  ackWithResponse(message: Message): Promise<AckResponse>;
343
406
  /**
344
- * Closes the subscriber. The returned promise will resolve once any pending
345
- * acks/modAcks are finished.
407
+ * Closes the subscriber, stopping the reception of new messages and shutting
408
+ * down the underlying stream. The behavior of the returned Promise will depend
409
+ * on the closeOptions in the subscriber options.
410
+ *
411
+ * @returns {Promise<void>} A promise that resolves when the subscriber is closed
412
+ * and pending operations are flushed or the timeout is reached.
346
413
  *
347
- * @returns {Promise}
348
414
  * @private
349
415
  */
350
416
  close(): Promise<void>;
@@ -443,7 +509,7 @@ export declare class Subscriber extends EventEmitter {
443
509
  *
444
510
  * @private
445
511
  *
446
- * @returns {Promise}
512
+ * @returns {Promise<void>}
447
513
  */
448
514
  private _waitForFlush;
449
515
  }
@@ -15,10 +15,11 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.Subscriber = exports.Message = exports.SubscriberSpans = exports.AckError = exports.AckResponses = exports.StatusError = void 0;
18
+ exports.Subscriber = exports.Message = exports.SubscriberSpans = exports.AckError = exports.SubscriberCloseBehaviors = exports.AckResponses = exports.logs = exports.StatusError = void 0;
19
19
  const precise_date_1 = require("@google-cloud/precise-date");
20
20
  const projectify_1 = require("@google-cloud/projectify");
21
21
  const promisify_1 = require("@google-cloud/promisify");
22
+ const defer = require("p-defer");
22
23
  const histogram_1 = require("./histogram");
23
24
  const lease_manager_1 = require("./lease-manager");
24
25
  const message_queues_1 = require("./message-queues");
@@ -27,8 +28,20 @@ const default_options_1 = require("./default-options");
27
28
  const tracing = require("./telemetry-tracing");
28
29
  const temporal_1 = require("./temporal");
29
30
  const events_1 = require("events");
31
+ const util_1 = require("./util");
32
+ const logs_1 = require("./logs");
30
33
  var message_stream_2 = require("./message-stream");
31
34
  Object.defineProperty(exports, "StatusError", { enumerable: true, get: function () { return message_stream_2.StatusError; } });
35
+ /**
36
+ * Loggers. Exported for unit tests.
37
+ *
38
+ * @private
39
+ */
40
+ exports.logs = {
41
+ slowAck: logs_1.logs.pubsub.sublog('slow-ack'),
42
+ ackNack: logs_1.logs.pubsub.sublog('ack-nack'),
43
+ debug: logs_1.logs.pubsub.sublog('debug'),
44
+ };
32
45
  exports.AckResponses = {
33
46
  PermissionDenied: 'PERMISSION_DENIED',
34
47
  FailedPrecondition: 'FAILED_PRECONDITION',
@@ -36,6 +49,18 @@ exports.AckResponses = {
36
49
  Invalid: 'INVALID',
37
50
  Other: 'OTHER',
38
51
  };
52
+ /**
53
+ * Enum values for behaviors of the Subscriber.close() method.
54
+ */
55
+ exports.SubscriberCloseBehaviors = {
56
+ NackImmediately: 'NACK',
57
+ WaitForProcessing: 'WAIT',
58
+ };
59
+ /**
60
+ * Specifies how long before the final close timeout, in WaitForProcessing mode,
61
+ * that we should give up and start shutting down cleanly.
62
+ */
63
+ const FINAL_NACK_TIMEOUT = temporal_1.Duration.from({ seconds: 1 });
39
64
  /**
40
65
  * Thrown when an error is detected in an ack/nack/modack call, when
41
66
  * exactly-once delivery is enabled on the subscription. This will
@@ -196,10 +221,12 @@ class Message {
196
221
  orderingKey;
197
222
  publishTime;
198
223
  received;
224
+ _handledPromise;
199
225
  _handled;
200
226
  _length;
201
227
  _subscriber;
202
228
  _ackFailed;
229
+ _dispatched;
203
230
  /**
204
231
  * @private
205
232
  *
@@ -322,7 +349,9 @@ class Message {
322
349
  * @internal
323
350
  */
324
351
  this.isExactlyOnceDelivery = sub.isExactlyOnceDelivery;
352
+ this._dispatched = false;
325
353
  this._handled = false;
354
+ this._handledPromise = defer();
326
355
  this._length = this.data.length;
327
356
  this._subscriber = sub;
328
357
  }
@@ -334,6 +363,35 @@ class Message {
334
363
  get length() {
335
364
  return this._length;
336
365
  }
366
+ /**
367
+ * Resolves when the message has been handled fully; a handled message may
368
+ * not have any further operations performed on it.
369
+ *
370
+ * @private
371
+ */
372
+ get handledPromise() {
373
+ return this._handledPromise.promise;
374
+ }
375
+ /**
376
+ * When this message is dispensed to user callback code, this should be called.
377
+ * The time between the dispatch and the handledPromise resolving is when the
378
+ * message is with the user.
379
+ *
380
+ * @private
381
+ */
382
+ dispatched() {
383
+ if (!this._dispatched) {
384
+ this.subSpans.processingStart(this._subscriber.name);
385
+ this._dispatched = true;
386
+ }
387
+ }
388
+ /**
389
+ * @private
390
+ * @returns True if this message has been dispatched to user callback code.
391
+ */
392
+ isDispatched() {
393
+ return this._dispatched;
394
+ }
337
395
  /**
338
396
  * Sets this message's exactly once delivery acks to permanent failure. This is
339
397
  * meant for internal library use only.
@@ -359,6 +417,7 @@ class Message {
359
417
  this.subSpans.ackCall();
360
418
  this.subSpans.processingEnd();
361
419
  void this._subscriber.ack(this);
420
+ this._handledPromise.resolve();
362
421
  }
363
422
  }
364
423
  /**
@@ -391,6 +450,9 @@ class Message {
391
450
  this.ackFailed(e);
392
451
  throw e;
393
452
  }
453
+ finally {
454
+ this._handledPromise.resolve();
455
+ }
394
456
  }
395
457
  else {
396
458
  return exports.AckResponses.Invalid;
@@ -455,6 +517,7 @@ class Message {
455
517
  this.subSpans.nackCall();
456
518
  this.subSpans.processingEnd();
457
519
  void this._subscriber.nack(this);
520
+ this._handledPromise.resolve();
458
521
  }
459
522
  }
460
523
  /**
@@ -488,6 +551,9 @@ class Message {
488
551
  this.ackFailed(e);
489
552
  throw e;
490
553
  }
554
+ finally {
555
+ this._handledPromise.resolve();
556
+ }
491
557
  }
492
558
  else {
493
559
  return exports.AckResponses.Invalid;
@@ -521,11 +587,15 @@ class Subscriber extends events_1.EventEmitter {
521
587
  _options;
522
588
  _stream;
523
589
  _subscription;
590
+ // We keep this separate from ackDeadline, because ackDeadline could
591
+ // end up being bound by min/max deadline configs.
592
+ _99th;
524
593
  subscriptionProperties;
525
594
  constructor(subscription, options = {}) {
526
595
  super();
527
596
  this.ackDeadline =
528
597
  default_options_1.defaultOptions.subscription.startingAckDeadline.totalOf('second');
598
+ this._99th = this.ackDeadline;
529
599
  this.maxMessages = default_options_1.defaultOptions.subscription.maxOutstandingMessages;
530
600
  this.maxBytes = default_options_1.defaultOptions.subscription.maxOutstandingBytes;
531
601
  this.maxExtensionTime = default_options_1.defaultOptions.subscription.maxExtensionTime;
@@ -555,7 +625,7 @@ class Subscriber extends events_1.EventEmitter {
555
625
  // If we got an ack time reading, update the histogram (and ackDeadline).
556
626
  if (ackTimeSeconds) {
557
627
  this._histogram.add(ackTimeSeconds);
558
- ackDeadline = this._histogram.percentile(99);
628
+ this._99th = ackDeadline = this._histogram.percentile(99);
559
629
  }
560
630
  // Grab our current min/max deadline values, based on whether exactly-once
561
631
  // delivery is enabled, and the defaults.
@@ -650,6 +720,10 @@ class Subscriber extends events_1.EventEmitter {
650
720
  async ack(message) {
651
721
  const ackTimeSeconds = (Date.now() - message.received) / 1000;
652
722
  this.updateAckDeadline(ackTimeSeconds);
723
+ exports.logs.ackNack.info('message (ID %s, ackID %s) ack', message.id, message.ackId);
724
+ if (ackTimeSeconds > this._99th) {
725
+ exports.logs.slowAck.info('message (ID %s, ackID %s) ack took longer than the 99th percentile of message processing time (%s s)', message.id, message.ackId, ackTimeSeconds);
726
+ }
653
727
  tracing.PubsubEvents.ackStart(message);
654
728
  // Ignore this in this version of the method (but hook catch
655
729
  // to avoid unhandled exceptions).
@@ -671,6 +745,10 @@ class Subscriber extends events_1.EventEmitter {
671
745
  async ackWithResponse(message) {
672
746
  const ackTimeSeconds = (Date.now() - message.received) / 1000;
673
747
  this.updateAckDeadline(ackTimeSeconds);
748
+ exports.logs.ackNack.info('message (ID %s, ackID %s) ack with response', message.id, message.ackId);
749
+ if (ackTimeSeconds > this._99th) {
750
+ exports.logs.slowAck.info('message (ID %s, ackID %s) ack took longer than the 99th percentile (%s s)', message.id, message.ackId, ackTimeSeconds);
751
+ }
674
752
  tracing.PubsubEvents.ackStart(message);
675
753
  await this._acks.add(message);
676
754
  tracing.PubsubEvents.ackEnd(message);
@@ -679,21 +757,75 @@ class Subscriber extends events_1.EventEmitter {
679
757
  // No exception means Success.
680
758
  return exports.AckResponses.Success;
681
759
  }
760
+ async #awaitTimeoutAndCheck(promise, timeout) {
761
+ const result = await (0, util_1.awaitWithTimeout)(promise, timeout);
762
+ if (result.exception || result.timedOut) {
763
+ // Don't try to deal with errors at this point, just warn-log.
764
+ if (result.timedOut === false) {
765
+ // This wasn't a timeout.
766
+ exports.logs.debug.warn('Error during Subscriber.close(): %j', result.exception);
767
+ }
768
+ }
769
+ }
682
770
  /**
683
- * Closes the subscriber. The returned promise will resolve once any pending
684
- * acks/modAcks are finished.
771
+ * Closes the subscriber, stopping the reception of new messages and shutting
772
+ * down the underlying stream. The behavior of the returned Promise will depend
773
+ * on the closeOptions in the subscriber options.
774
+ *
775
+ * @returns {Promise<void>} A promise that resolves when the subscriber is closed
776
+ * and pending operations are flushed or the timeout is reached.
685
777
  *
686
- * @returns {Promise}
687
778
  * @private
688
779
  */
689
780
  async close() {
690
781
  if (!this.isOpen) {
691
782
  return;
692
783
  }
784
+ // Always close the stream right away so we don't receive more messages.
693
785
  this.isOpen = false;
694
786
  this._stream.destroy();
787
+ const options = this._options.closeOptions;
788
+ // If no behavior is specified, default to Wait.
789
+ const behavior = options?.behavior ?? exports.SubscriberCloseBehaviors.WaitForProcessing;
790
+ // The timeout can't realistically be longer than the longest time we're willing
791
+ // to lease messages.
792
+ let timeout = (0, temporal_1.atMost)(options?.timeout ?? this.maxExtensionTime, this.maxExtensionTime);
793
+ // If the user specified a zero timeout, just bail immediately.
794
+ if (!timeout.milliseconds) {
795
+ this._inventory.clear();
796
+ return;
797
+ }
798
+ // Warn the user if the timeout is too short for NackImmediately.
799
+ if (temporal_1.Duration.compare(timeout, FINAL_NACK_TIMEOUT) < 0) {
800
+ exports.logs.debug.warn('Subscriber.close() timeout is less than the final shutdown time (%i ms). This may result in lost nacks.', timeout.milliseconds);
801
+ }
802
+ // If we're in WaitForProcessing mode, then we first need to derive a NackImmediately
803
+ // timeout point. If everything finishes before then, we also want to go ahead and bail cleanly.
804
+ const shutdownStart = Date.now();
805
+ if (behavior === exports.SubscriberCloseBehaviors.WaitForProcessing &&
806
+ !this._inventory.isEmpty) {
807
+ const waitTimeout = timeout.subtract(FINAL_NACK_TIMEOUT);
808
+ const emptyPromise = new Promise(r => {
809
+ this._inventory.on('empty', r);
810
+ });
811
+ await this.#awaitTimeoutAndCheck(emptyPromise, waitTimeout);
812
+ }
813
+ // Now we head into immediate shutdown mode with what time is left.
814
+ timeout = timeout.subtract({
815
+ milliseconds: Date.now() - shutdownStart,
816
+ });
817
+ if (timeout.milliseconds <= 0) {
818
+ // This probably won't work out, but go through the motions.
819
+ timeout = temporal_1.Duration.from({ milliseconds: 0 });
820
+ }
821
+ // Grab everything left in inventory. This includes messages that have already
822
+ // been dispatched to user callbacks.
695
823
  const remaining = this._inventory.clear();
696
- await this._waitForFlush();
824
+ remaining.forEach(m => m.nack());
825
+ // Wait for user callbacks to complete.
826
+ const flushCompleted = this._waitForFlush();
827
+ await this.#awaitTimeoutAndCheck(flushCompleted, timeout);
828
+ // Clean up OTel spans for any remaining messages.
697
829
  remaining.forEach(m => {
698
830
  m.subSpans.shutdown();
699
831
  m.endParentSpan();
@@ -757,6 +889,11 @@ class Subscriber extends events_1.EventEmitter {
757
889
  * @private
758
890
  */
759
891
  async nack(message) {
892
+ exports.logs.ackNack.info('message (ID %s, ackID %s) nack', message.id, message.ackId);
893
+ const nackTimeSeconds = (Date.now() - message.received) / 1000;
894
+ if (nackTimeSeconds > this._99th) {
895
+ exports.logs.slowAck.info('message (ID %s, ackID %s) nack took longer than the 99th percentile (%s s)', message.id, message.ackId, nackTimeSeconds);
896
+ }
760
897
  message.subSpans.nackStart();
761
898
  await this.modAck(message, 0);
762
899
  message.subSpans.nackEnd();
@@ -773,6 +910,11 @@ class Subscriber extends events_1.EventEmitter {
773
910
  * @private
774
911
  */
775
912
  async nackWithResponse(message) {
913
+ exports.logs.ackNack.info('message (ID %s, ackID %s) nack with response', message.id, message.ackId);
914
+ const nackTimeSeconds = (Date.now() - message.received) / 1000;
915
+ if (nackTimeSeconds > this._99th) {
916
+ exports.logs.slowAck.info('message (ID %s, ackID %s) nack took longer than the 99th percentile (%s s)', message.id, message.ackId, nackTimeSeconds);
917
+ }
776
918
  message.subSpans.nackStart();
777
919
  const response = await this.modAckWithResponse(message, 0);
778
920
  message.subSpans.nackEnd();
@@ -922,24 +1064,27 @@ class Subscriber extends events_1.EventEmitter {
922
1064
  *
923
1065
  * @private
924
1066
  *
925
- * @returns {Promise}
1067
+ * @returns {Promise<void>}
926
1068
  */
927
1069
  async _waitForFlush() {
928
1070
  const promises = [];
1071
+ // Flush any batched requests immediately.
929
1072
  if (this._acks.numPendingRequests) {
930
1073
  promises.push(this._acks.onFlush());
931
- await this._acks.flush();
1074
+ this._acks.flush('message count').catch(() => { });
932
1075
  }
933
1076
  if (this._modAcks.numPendingRequests) {
934
1077
  promises.push(this._modAcks.onFlush());
935
- await this._modAcks.flush();
1078
+ this._modAcks.flush('message count').catch(() => { });
936
1079
  }
1080
+ // Now, prepare the drain promises.
937
1081
  if (this._acks.numInFlightRequests) {
938
1082
  promises.push(this._acks.onDrain());
939
1083
  }
940
1084
  if (this._modAcks.numInFlightRequests) {
941
1085
  promises.push(this._modAcks.onDrain());
942
1086
  }
1087
+ // Wait for the flush promises.
943
1088
  await Promise.all(promises);
944
1089
  }
945
1090
  }