From 8b97ff82dae4bf16123d25abc63c3a5d5d8a27cd Mon Sep 17 00:00:00 2001 From: Sam Stern Date: Mon, 24 Sep 2018 14:15:03 -0700 Subject: [PATCH] Review feedback --- lib/firestore/delete.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/firestore/delete.js b/lib/firestore/delete.js index 0bd920b3..09670c12 100644 --- a/lib/firestore/delete.js +++ b/lib/firestore/delete.js @@ -301,6 +301,7 @@ FirestoreDelete.prototype._recursiveBatchDelete = function() { var pageIncoming = false; var lastDocName = undefined; + var retried = {}; var failures = []; var queueLoop = function() { @@ -351,10 +352,11 @@ FirestoreDelete.prototype._recursiveBatchDelete = function() { numOutstanding--; }) .catch(function(e) { - // For server errors, just throw the document back into the queue. - if (e.status >= 500 && e.status < 600) { + // For server errors, retry if the document has not yet been retried. + if (e.status >= 500 && e.status < 600 && !retried[toDelete.name]) { logger.debug("Server error deleting doc " + toDelete.name, e); queue.push(toDelete); + retried[toDelete.name] = true; } else { logger.debug("Fatal error deleting doc " + toDelete.name, e); failures.push(toDelete); @@ -366,7 +368,7 @@ FirestoreDelete.prototype._recursiveBatchDelete = function() { return false; }; - return new Promise(function(resolve) { + return new Promise(function(resolve, reject) { var intervalId = setInterval(function() { if (queueLoop()) { clearInterval(intervalId);