litecoin-project / litecoin

Litecoin source tree
http://www.litecoin.org
MIT License
4.35k stars 3.03k forks source link

Fixed an issue where transaction indexes of block could be lost, #980

Open yujianxian opened 2 weeks ago

yujianxian commented 2 weeks ago

The problems I encountered:

I have done customization development in WriteBlock(block, pindex) and WriteBlock(block, pindex) maybe return false, where i restart the node and find that the transaction cannot be obtained through the transaction index

Here's why: If run Commit() first, then WriteBlock(block, pindex), At this time, the transaction indexed of the block has been marked as successfully created, but if WriteBlock(block, pindex) fails to be run, the transaction index is not really created, and the transaction data will not be found out through the transaction index. so WriteBlock(block, pindex) must be executed first before committing () is executed.