[ https://issues.apache.org/jira/browse/SLING-5027?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14745550#comment-14745550 ]
Stefan Egli commented on SLING-5027: ------------------------------------ Marked as a regression of SLING-3434 > vote loop until vote is promoted > -------------------------------- > > Key: SLING-5027 > URL: https://issues.apache.org/jira/browse/SLING-5027 > Project: Sling > Issue Type: Bug > Components: Extensions > Affects Versions: Discovery Impl 1.1.0 > Reporter: Stefan Egli > Assignee: Stefan Egli > Fix For: Discovery Impl 1.1.8 > > > {{VotingHandler.analyzeVotings}} has the risk of running into a busy vote > loop during the duration of an {{/ongoingVotings}}: > * {{analyzeVotings}} is invoked either when something changes in > {{/var/discovery/impl/ongoingVotings}} or as part of a heartbeat > * as part of this, it figures out the ongoingVotings, decides on which it has > to vote (should there be more than 1, and it doesn't vote if it was the > initiator) then potentially does a {{vote(,true)}} on it > * in {{vote()}} it not only sets the {{vote}} property accordingly (true or > false) - it additionally, since > [SLING-3434|https://issues.apache.org/jira/browse/SLING-3434?focusedCommentId=14297078&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14297078], > also sets the {{votedAt}} property (timestamp) > * since the above is a change in {{/ongoingVotings}}, this will trigger an > observation event - which again triggers the {{analyzeVotings}} to be called, > which will again find an ongoing vote, vote upon, trigger an observation > event etc. Resulting in an endless loop that involves repository and an > observation handler > * now the above loop only occurs since the introduction of the {{votedAt}} > property - as that is changing on each iteration. Without that, voting again > with the same boolean would not result in an observation event and the loop > would not happen at all. > * in any case, the loop lasts at maximum until the initiator finally got all > the votes and can promote the vote to an {{/establishedView}}. This should > typically be a fast operation - but if the cluster is under heavy load and > experiences delays for some reason, this busy loop can last a little while. > So this loop is a regression introduced with SLING-3434. -- This message was sent by Atlassian JIRA (v6.3.4#6332)