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

Stefan Egli updated SLING-4640:
-------------------------------
    Fix Version/s:     (was: Discovery Impl 1.1.4)
                   Discovery Impl 1.1.6

> Possibility of duplicate leaders w/discovery.impl on eventually consistent 
> repo
> -------------------------------------------------------------------------------
>
>                 Key: SLING-4640
>                 URL: https://issues.apache.org/jira/browse/SLING-4640
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: Discovery Impl 1.1.0
>            Reporter: Stefan Egli
>             Fix For: Discovery Impl 1.1.6
>
>
> Note: This is a fork of SLING-3432 based on a 
> [comment|https://issues.apache.org/jira/browse/SLING-3432?focusedCommentId=14495936&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14495936].
>  So here is that comment again:
> Note that [the 
> above|https://issues.apache.org/jira/browse/SLING-3432?focusedCommentId=14492494&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14492494]
>  does not solve the problem where the underlying repository is eventually 
> consistent and the heartbeat configured is too low to catch all possible 
> delays (that such an eventually consistent repository might produce under 
> load). Consider the following:
> # a cluster consisting of 3 nodes: A, B and C, A is the leader
> # writes from B and C are fast - and can be read by all 3 nodes fast
> # writes from A though are slow (ie A behaves asymmetric: slow writes but 
> fast reads)
> # at some point writes from A are slower than the configured heartbeat 
> timeout: at this point B and C find out about this and vote on a new 
> clusterView consisting only of B and C and (let's say) B becomes leader.
> #* meanwhile at A however: A is still happy: it sees the heartbeats of B and 
> C in time and would not start a new voting.
> # at some later point (with a *certain read delay*) A sees that B and C have 
> declared a new {{/establishedViews}} - at this point it would (according to 
> the new rule above) immediately send a TOPOLOGY_CHANGING and things would be 
> 'ok' again. 
> #* *but* until it does send this event - *between 4. and 5. - we have two 
> leaders: A and B*! -> thus could see issues reported here in SLING-3432 still 
> during that small timeframe (which is basically the amount of time it takes 
> for the new established view declared by B and C to be read by A).
> #* at a later time, when eg the delays in the repository have come down, A 
> would rejoin the cluster - but would have to *not become leader* again, as 
> the leader is B and must stay stable.
> This IMHO highlights the problem that using an eventually consistent 
> repository (that has no max guaranteed delay) is *not* 
> pseudo-network-partition/duplicate-leader free under load.
> Note that what is described here is not fixed by SLING-4627.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to