Browse Source

fix(core): Safer access to queryRunner in transactions

Fixes #3565
Michael Bromley 7 months ago
parent
commit
5beb2fe3ca
1 changed files with 4 additions and 2 deletions
  1. 4 2
      packages/core/src/connection/transaction-wrapper.ts

+ 4 - 2
packages/core/src/connection/transaction-wrapper.ts

@@ -34,8 +34,10 @@ export class TransactionWrapper {
         const ctx = originalCtx.copy();
 
         const entityManager: EntityManager | undefined = (ctx as any)[TRANSACTION_MANAGER_KEY];
-        const queryRunner = entityManager?.queryRunner || connection.createQueryRunner();
-
+        let queryRunner = entityManager?.queryRunner;
+        if (!queryRunner || queryRunner.isReleased) {
+            queryRunner = connection.createQueryRunner();
+        }
         if (mode === 'auto') {
             await this.startTransaction(queryRunner, isolationLevel);
         }