[
https://issues.apache.org/jira/browse/SOLR-10525?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Cao Manh Dat resolved SOLR-10525.
---------------------------------
Resolution: Fixed
Assignee: Cao Manh Dat (was: Mark Miller)
Fix Version/s: 7.3
master (8.0)
Committed by SOLR-11702
> Stacked recovery requests do no cancel an in progress recovery first.
> ---------------------------------------------------------------------
>
> Key: SOLR-10525
> URL: https://issues.apache.org/jira/browse/SOLR-10525
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: SolrCloud
> Reporter: Mike Drob
> Assignee: Cao Manh Dat
> Priority: Major
> Fix For: master (8.0), 7.3
>
> Attachments: SOLR-10525.patch, SOLR-10525.patch
>
>
> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java#L300-L310
> Two issues with this code:
> {code}
> boolean locked = recoveryLock.tryLock();
> try {
> if (!locked) {
> if (recoveryWaiting.get() > 0) { // line 1
> return;
> }
> recoveryWaiting.incrementAndGet(); // line 2
> } else {
> recoveryWaiting.incrementAndGet();
> cancelRecovery(); // line 3
> }
> {code}
> The {{cancelRecovery}} on line 3 call will only hit when there are no
> recoveries to actually cancel (since we got the lock that means there are no
> recoveries in progress). Instead it should be moved either to the either
> branch of the if, or outside after the if since we know we will be running a
> recovery at that point.
> This code doesn't always prevent multiple requests from stacking. If there is
> a recovery running, but no recoveries currently waiting, multiple requests
> can check the count at line 1 before any of them will increment the count at
> line 2 and thus all of them will hit the increment.
> I don't have specific tests for this, but it's causing failures for me on my
> SOLR-9555 work in progress.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]