hiero-ledger / hiero-ledger/hiero-consensus-node
Idea for `ISSPostMortemProtocol`
- Dominant language
- Java
- Stars
- 406
- Forks
- 226
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 210
Description
This issue is to capture some thoughts about a potential improvement to how we report on ISSes:
- Currently, debugging an ISS involves manually comparing hashstream files from multiple nodes
- To avoid this manual process, we could create a new `ISSPostMortemProtocol`
- When a node observes an ISS, it should execute this protocol one time with each peer
- The protocol exchanges raw bytes, _not_ through consensus
- The protocol would involve exchanging hashes with each peer, starting at the root of the state
- The pair of nodes executing this protocol would step down through each node of the tree, and each generate a report about which hashes differ with that peer
- Improvements to `MerkleMap` and `VirtualMap` could allow drilling all the way down to what specific piece of data differs
- Execution of this protocol in the case of an ISS would immediately pinpoint the problem, and allow work to begin on a fix without delay
This protocol would perform the same job as the PCLI command mentioned [here](https://github.com/hashgraph/hedera-services/issues/7775), but without requiring access to multiple sets of logs
Contributor guide
Research direction
Start by reviewing the existing PCLI command described in issue #7775 and the current ISS debugging workflow involving hashstream files from multiple nodes. Then investigate the protocol and state-tree components relevant to MerkleMap and VirtualMap. Done would require a defined peer-to-peer post-mortem protocol that reports differing hashes and can identify the divergent data without relying on multiple log sets.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100