[ 
https://issues.apache.org/jira/browse/KUDU-2149?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adar Dembo updated KUDU-2149:
-----------------------------
       Resolution: Fixed
    Fix Version/s: 1.6.0
           Status: Resolved  (was: In Review)

Fixed in commit edd41cb40fbad206e2c356983baba8fbc57199b5.

> New failure detector implementation can lead to election stacking
> -----------------------------------------------------------------
>
>                 Key: KUDU-2149
>                 URL: https://issues.apache.org/jira/browse/KUDU-2149
>             Project: Kudu
>          Issue Type: Bug
>          Components: consensus
>    Affects Versions: 1.5.0
>            Reporter: Adar Dembo
>            Assignee: Adar Dembo
>            Priority: Critical
>             Fix For: 1.6.0
>
>
> A new failure detector (FD) implementation was merged in commit 21b0f3d and 
> is part of Kudu 1.5. One of the key changes is that the detection logic runs 
> on a reactor thread rather than on a dedicated per-replica thread. But, 
> because reactor threads are shared, the election started in the event of a 
> failure must be thunked to the Raft thread pool (starting an election means 
> casting a vote, which generally means performing IO, which is verboten on a 
> reactor thread).
> By thunking, the FD immediately rearms; the previous implementation did not 
> do this. If there's a lot of outstanding IO (i.e. during an election storm 
> across thousands of tablets), it's possible for the FD to fire again while 
> the first election task is still waiting to cast its vote. The new election 
> task will try to acquire the consensus lock and block on it (it's held by the 
> first election task). And so on. When the original IO finally completes, all 
> of the follow-on elections will get unblocked at the same time.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to