Skip to content
  • yacovm's avatar
    [FAB-13633] Make Step RPC failures non blocking · fba0b4e2
    yacovm authored
    
    
    Per the gRPC documentation:
    
    If an RPC is issued but the channel is in TRANSIENT_FAILURE or
    SHUTDOWN states, the RPC is unable to be transmited promptly.
    By default, gRPC implementations SHOULD fail such RPCs immediately.
    This is known as "fail fast," but usage of the term is historical.
    
    However...
    
    RPCs SHOULD NOT fail as a result of the channel being in other states
    (CONNECTING, READY, or IDLE).
    
    Therefore, if it takes too much time for gRPC to move from
    a state of CONNECTING to TRANSIENT_FAILURE (i.e - packet drop,
    or DNS lookup failure) - it will slow down the entire Raft FSM.
    
    This change set makes Step RPCs inspect the underlying
    gRPC connection state prior to being invoked.
    If the connection is in state connecting, then
    it fails fast.
    
    Change-Id: I50df1f758a00fc99bed54ff1a2056f83f53efdf7
    Signed-off-by: default avataryacovm <yacovm@il.ibm.com>
    fba0b4e2