Skip to content

consensus halt with no empty blocks #3199

@ebuchman

Description

@ebuchman

With create_empty_blocks = false, after some number of hours under load, tendermint was found to halt.

The consensus state at this point indicated that all precommits were received for the round, but progress was not being made.

This suggested that perhaps the triggeredTimeoutCommit was not being reset properly, and was preventing the timeoutPrecommit from being scheduled.

Turns out, when the mempool notifies the consensus that txs are available, its possible that the consensus would not have already entered the new round, and the enterNewRound method actually gets skipped, going right to the proposal instead:

cs.enterPropose(cs.Height, 0)

Since enterNewRound is where triggeredTimeoutPrecommit is reset, this explains the halt.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C:consensusComponent: ConsensusT:bugType Bug (Confirmed)

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions