diff --git a/packages/pubsub/src/connection-pool.js b/packages/pubsub/src/connection-pool.js index a7d9b64f9c7..3846e45b47a 100644 --- a/packages/pubsub/src/connection-pool.js +++ b/packages/pubsub/src/connection-pool.js @@ -43,10 +43,13 @@ var MAX_TIMEOUT = 300000; var RETRY_CODES = [ 0, // ok 1, // canceled + 2, // unknown 4, // deadline exceeded 8, // resource exhausted + 10, // aborted 13, // internal error - 14 // unavailable + 14, // unavailable + 15 // dataloss ]; /** diff --git a/packages/pubsub/src/subscription.js b/packages/pubsub/src/subscription.js index 685b46ff1c5..86196880dae 100644 --- a/packages/pubsub/src/subscription.js +++ b/packages/pubsub/src/subscription.js @@ -734,7 +734,7 @@ Subscription.prototype.getMetadata = function(gaxOpts, callback) { * @return {boolean} */ Subscription.prototype.hasMaxMessages_ = function() { - return this.inventory_.lease.length > this.flowControl.maxMessages || + return this.inventory_.lease.length >= this.flowControl.maxMessages || this.inventory_.bytes >= this.flowControl.maxBytes; }; diff --git a/packages/pubsub/system-test/pubsub.js b/packages/pubsub/system-test/pubsub.js index 58e59c2ca5f..6483a361a60 100644 --- a/packages/pubsub/system-test/pubsub.js +++ b/packages/pubsub/system-test/pubsub.js @@ -494,7 +494,7 @@ describe('pubsub', function() { subscription.on('message', onMessage); function onMessage() { - if (++messageCount < (maxMessages + 1)) { + if (++messageCount < maxMessages) { return; } diff --git a/packages/pubsub/test/connection-pool.js b/packages/pubsub/test/connection-pool.js index b4fe57da855..8f1b7654f8c 100644 --- a/packages/pubsub/test/connection-pool.js +++ b/packages/pubsub/test/connection-pool.js @@ -1341,23 +1341,23 @@ describe('ConnectionPool', function() { it('should return true for retryable errors', function() { assert(pool.shouldReconnect({ code: 0 })); // OK assert(pool.shouldReconnect({ code: 1 })); // Canceled + assert(pool.shouldReconnect({ code: 2 })); // Unknown assert(pool.shouldReconnect({ code: 4 })); // DeadlineExceeded assert(pool.shouldReconnect({ code: 8 })); // ResourceExhausted + assert(pool.shouldReconnect({ code: 10 })); // Aborted assert(pool.shouldReconnect({ code: 13 })); // Internal assert(pool.shouldReconnect({ code: 14 })); // Unavailable + assert(pool.shouldReconnect({ code: 15 })); // Dataloss }); it('should return false for non-retryable errors', function() { - assert(!pool.shouldReconnect({ code: 2 })); // Unknown assert(!pool.shouldReconnect({ code: 3 })); // InvalidArgument assert(!pool.shouldReconnect({ code: 5 })); // NotFound assert(!pool.shouldReconnect({ code: 6 })); // AlreadyExists assert(!pool.shouldReconnect({ code: 7 })); // PermissionDenied assert(!pool.shouldReconnect({ code: 9 })); // FailedPrecondition - assert(!pool.shouldReconnect({ code: 10 })); // Aborted assert(!pool.shouldReconnect({ code: 11 })); // OutOfRange assert(!pool.shouldReconnect({ code: 12 })); // Unimplemented - assert(!pool.shouldReconnect({ code: 15 })); // DataLoss assert(!pool.shouldReconnect({ code: 16 })); // Unauthenticated }); diff --git a/packages/pubsub/test/subscription.js b/packages/pubsub/test/subscription.js index b2d206c501d..256b6c1a002 100644 --- a/packages/pubsub/test/subscription.js +++ b/packages/pubsub/test/subscription.js @@ -1187,9 +1187,9 @@ describe('Subscription', function() { }); describe('hasMaxMessages_', function() { - it('should return true if the number of leases > maxMessages', function() { + it('should return true if the number of leases >= maxMessages', function() { subscription.inventory_.lease = ['a', 'b', 'c']; - subscription.flowControl.maxMessages = 2; + subscription.flowControl.maxMessages = 3; assert(subscription.hasMaxMessages_()); });