Skip to content
  • Jay Guo's avatar
    [FAB-14192] Fix deadlock in etcdraft chain · a7654a5b
    Jay Guo authored
    
    
    `Propose` and `ProposeConfChagen` block when node is leaderless.
    However they are currently invoked by the same go routine that
    consumes data from applyC, which processes SoftState to reflect
    leader change.
    
    This may lead to deadlock:
    - block is created on leader and about to be `Propose`ed,
    - leader steps down due to loss of quorum
    - `Propose` is called and blocks
    - SoftState is passed on applyC
    - `serveRequest` is not able to consume applyC
    - deadlock
    
    Change-Id: If4dc048f82983862b5f253231dafd513b442bf53
    Signed-off-by: default avatarJay Guo <guojiannan1101@gmail.com>
    a7654a5b