-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deadlock conditions in the geth clique consensus implementation #9
Comments
I think the best approach for us (before this issue get solved by |
I tried to reproduce the deadlock condition IDChain faced a few days ago.
The chain stopped mining new blocks at signers:
Node0 and Node4 are waiting for Node1 or Node2 (or Node3) to mine the next block, and |
deadlock_resolver.py seems to be able to resolve all sort of deadlocks. |
I'm in the same deadlock situation. I tried using deadlock_resolver.py and it solved the issue but the transactions in the reverted block were deleted. Is there any workaround to this issue? @abramsymons |
It's not an issue. |
I'd push back on that not being an issue. We shouldn't delete the transactions in the block that's been reverted, they should be pushed popped back into the mempool. I think one approach is to have a data structure that can cache some of the transactions in non-finalized blocks and release them in the event of a deadlock caused reorg. Similar to how geth handles added/deleted txns in the event of a reorg: deletedTxs []common.Hash
addedTxs []common.Hash |
But Geth doesn't delete the transactions from the removed blocks. |
I think this is a good idea. |
As reported in go-ethereum issue #18402 there is a random probability of deadlock especially when number of active nodes in the network is even.
We experienced this deadlock once when we had 4 sealers and once when we had 5 sealers and one of them was down.
The text was updated successfully, but these errors were encountered: