From 1d76546a781527ef5b9085fc9f189c024355ae9f Mon Sep 17 00:00:00 2001 From: Tom Andersen Date: Fri, 5 Jan 2024 16:21:37 -0500 Subject: [PATCH] fix: Make transaction rollback best effort. (#1967) * Make rollback best effort. * Fix test --- dev/src/transaction.ts | 15 ++++++++++++++- dev/test/transaction.ts | 1 - 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dev/src/transaction.ts b/dev/src/transaction.ts index a5690d3cc..222e535fe 100644 --- a/dev/src/transaction.ts +++ b/dev/src/transaction.ts @@ -481,7 +481,20 @@ export class Transaction implements firestore.Transaction { transaction: this._transactionId, }; - return this._firestore.request('rollback', request, this._requestTag); + const promise: Promise = this._firestore.request( + 'rollback', + request, + this._requestTag + ); + + return promise.catch(reason => { + logger( + 'Firestore.runTransaction', + this._requestTag, + 'Best effort to rollback failed with error:', + reason + ); + }); } /** diff --git a/dev/test/transaction.ts b/dev/test/transaction.ts index 19088425d..9477ae3f6 100644 --- a/dev/test/transaction.ts +++ b/dev/test/transaction.ts @@ -574,7 +574,6 @@ describe('failed transactions', () => { begin({transactionId: 'foo1'}), commit('foo1', /* writes=*/ undefined, serverError), rollback('foo1', serverError), - rollback('foo1'), backoff(), begin({ transactionId: 'foo2',