Skip to content

Commit b8fe366

Browse files
committed
fix: update tx and its outputs in different sqls
1 parent 7cb8ad3 commit b8fe366

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

packages/neuron-wallet/src/services/tx/transaction-persistor.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,25 @@ export class TransactionPersistor {
9191
txEntity.blockHash = transaction.blockHash
9292
txEntity.blockNumber = transaction.blockNumber
9393
txEntity.status = TransactionStatus.Success
94-
await connection.manager.save([txEntity, ...outputs.concat(previousOutputs)])
94+
95+
const sliceSize = 100
96+
const queryRunner = connection.createQueryRunner()
97+
await TransactionPersistor.waitUntilTransactionFinished(queryRunner)
98+
await queryRunner.startTransaction()
99+
try {
100+
await queryRunner.manager.save(txEntity)
101+
for (const slice of Utils.eachSlice(previousOutputs, sliceSize)) {
102+
await queryRunner.manager.save(slice)
103+
}
104+
for (const slice of Utils.eachSlice(outputs, sliceSize)) {
105+
await queryRunner.manager.save(slice)
106+
}
107+
await queryRunner.commitTransaction()
108+
} catch (err) {
109+
await queryRunner.rollbackTransaction()
110+
} finally {
111+
await queryRunner.release()
112+
}
95113

96114
return txEntity
97115
}

0 commit comments

Comments
 (0)