Merge pull request #1865 from obscuren/deadlock-chainmanager-fix

core: deadlock in chainmanager after posting RemovedTransactionEvent
This commit is contained in:
Jeffrey Wilcke 2015-10-02 03:39:43 -07:00
commit 0d78f96205

@ -804,7 +804,9 @@ func (self *ChainManager) reorg(oldBlock, newBlock *types.Block) error {
DeleteReceipt(self.chainDb, tx.Hash())
DeleteTransaction(self.chainDb, tx.Hash())
}
self.eventMux.Post(RemovedTransactionEvent{diff})
// Must be posted in a goroutine because of the transaction pool trying
// to acquire the chain manager lock
go self.eventMux.Post(RemovedTransactionEvent{diff})
return nil
}