diff --git a/premix/debug.nim b/premix/debug.nim index 2e8f0cc63..64b815685 100644 --- a/premix/debug.nim +++ b/premix/debug.nim @@ -19,19 +19,17 @@ proc executeBlock(blockEnv: JsonNode, memoryDB: TrieDatabaseRef, blockNumber: Ui header = chainDB.getBlockHeader(blockNumber) body = chainDB.getBlockBody(header.blockHash) + let transaction = memoryDB.beginTransaction() + defer: transaction.dispose() let - transaction = memoryDB.beginTransaction() vmState = newBaseVMState(parent, chainDB) validationResult = processBlock(chainDB, parent, header, body, vmState) - if validationResult != ValidationResult.OK: + if validationResult != ValidationResult.OK: error "block validation error", validationResult else: info "block validation success", validationResult, blockNumber - # success or not dispose it - transaction.dispose() - dumpDebuggingMetaData(chainDB, header, body, vmState, false) let fileName = "debug" & $blockNumber & ".json" diff --git a/premix/dumper.nim b/premix/dumper.nim index 8c2563ea6..e520d6d73 100644 --- a/premix/dumper.nim +++ b/premix/dumper.nim @@ -16,8 +16,9 @@ proc dumpDebug(chainDB: BaseChainDB, blockNumber: Uint256) = captureTrieDB = trieDB captureDB captureChainDB = newBaseChainDB(captureTrieDB, false) + let transaction = memoryDB.beginTransaction() + defer: transaction.dispose() let - transaction = memoryDB.beginTransaction() parentNumber = blockNumber - 1 parent = captureChainDB.getBlockHeader(parentNumber) header = captureChainDB.getBlockHeader(blockNumber) @@ -28,8 +29,6 @@ proc dumpDebug(chainDB: BaseChainDB, blockNumber: Uint256) = captureChainDB.setHead(parent, true) let validationResult = processBlock(captureChainDB, parent, header, body, vmState) - # success or not dispose it - transaction.dispose() dumpDebuggingMetaData(captureChainDB, header, body, vmState, false) proc main() = diff --git a/premix/hunter.nim b/premix/hunter.nim index b80ee59de..9037fcc01 100644 --- a/premix/hunter.nim +++ b/premix/hunter.nim @@ -68,13 +68,13 @@ proc huntProblematicBlock(blockNumber: Uint256): ValidationResult = chainDB.setHead(parentBlock.header, true) + let transaction = memoryDB.beginTransaction() + defer: transaction.dispose() let - transaction = memoryDB.beginTransaction() vmState = newBaseVMState(parentBlock.header, chainDB) validationResult = processBlock(chainDB, parentBlock.header, thisBlock.header, thisBlock.body, vmState) if validationResult != ValidationResult.OK: - transaction.dispose() dumpDebuggingMetaData(chainDB, thisBlock.header, thisBlock.body, vmState, false) result = validationResult