From 1fbf8c24faf8e00528492da6bbe72a49eb172250 Mon Sep 17 00:00:00 2001 From: Ryan Seys Date: Sat, 21 Mar 2015 23:23:01 -0400 Subject: [PATCH] Do not autoAck when no messages are pulled --- lib/pubsub/subscription.js | 2 +- test/pubsub/subscription.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/pubsub/subscription.js b/lib/pubsub/subscription.js index 006b3cdbed7..82a2babcd1f 100644 --- a/lib/pubsub/subscription.js +++ b/lib/pubsub/subscription.js @@ -360,7 +360,7 @@ Subscription.prototype.pull = function(options, callback) { var messages = response.receivedMessages || []; messages = messages.map(Subscription.formatMessage_); - if (self.autoAck) { + if (self.autoAck && messages.length !== 0) { var ackIds = messages.map(function(message) { return message.ackId; }); diff --git a/test/pubsub/subscription.js b/test/pubsub/subscription.js index 2be34b0782a..cb403c6c137 100644 --- a/test/pubsub/subscription.js +++ b/test/pubsub/subscription.js @@ -285,6 +285,18 @@ describe('Subscription', function() { subscription.pull({}, assert.ifError); }); + it('should not autoAck if no messages returned', function(done) { + subscription.makeReq_ = function(method, path, qs, body, callback) { + callback(null, { receivedMessages: [] }); + }; + subscription.ack = function() { + throw new Error('I should not run.'); + }; + subscription.pull(function() { + done(); + }); + }); + it('should pass id to ack', function(done) { subscription.ack = function(id) { assert.equal(id, expectedMessage.ackId);