Skip to content
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

dbft: fix the deadlock reason in four-good-nodes setup #3

Closed

Commits on Mar 6, 2023

  1. dbft: fix the deadlock reason in four-good-nodes setup

    Finally, the reason of the following real-life liveness lock in the four nodes
    scenario is found:
    ```
    rmState |-> ( 0 :> [type |-> "cv", view |-> 1] @@
      1 :> [type |-> "cv", view |-> 1] @@
      2 :> [type |-> "commitSent", view |-> 0] @@
      3 :> [type |-> "commitSent", view |-> 1] )
    ```
    The issue was discovered and fixed in the TLA+ model initially, see the
    roman-khimov#2.
    
    The decision on preparation payloads rejection/acceptance should be based on
    the number of Commits accepted durnig the whole set of rounds, not during
    the current round only.
    
    See also the C# source code, it doesn't have such problem:
    https://github.com/neo-project/neo-modules/blob/d00d90b9c27b3d0c3c57e9ca1f560a09975df241/src/DBFTPlugin/Consensus/ConsensusContext.cs#L223
    AnnaShaleva committed Mar 6, 2023
    Configuration menu
    Copy the full SHA
    e90389d View commit details
    Browse the repository at this point in the history