From b4bbf9e18e8a1faff48c81c349e633d531306f94 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Mon, 10 Apr 2023 11:12:57 +0200 Subject: [PATCH] Check that transaction is not completed before attempting rollback Signed-off-by: Eric Peterson --- .../src/PgSearchEngine/PgSearchEngineIndexer.test.ts | 2 ++ .../src/PgSearchEngine/PgSearchEngineIndexer.ts | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts index a8e010dea5..d614185b7c 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.test.ts @@ -23,6 +23,7 @@ describe('PgSearchEngineIndexer', () => { const tx = { rollback: jest.fn(), commit: jest.fn(), + isCompleted: jest.fn(), } as any; let database: jest.Mocked; let indexer: PgSearchEngineIndexer; @@ -37,6 +38,7 @@ describe('PgSearchEngineIndexer', () => { completeInsert: jest.fn(), prepareInsert: jest.fn(), }; + tx.isCompleted.mockReturnValue(false); indexer = new PgSearchEngineIndexer({ batchSize: 100, type: 'my-type', diff --git a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts index a0ad3ee7d9..47ea812a92 100644 --- a/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts +++ b/plugins/search-backend-module-pg/src/PgSearchEngine/PgSearchEngineIndexer.ts @@ -113,11 +113,10 @@ export class PgSearchEngineIndexer extends BatchSearchEngineIndexer { return; } - try { - this.tx!.rollback(error); - } catch { - // Unlikely! It was likely rolled back earlier. + if (!this.tx!.isCompleted()) { + await this.tx!.rollback(error); } + done(error); } }