[ 
https://issues.apache.org/jira/browse/SOLR-12258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16464033#comment-16464033
 ] 

David Smiley commented on SOLR-12258:
-------------------------------------

The attached patch:
 * V2HttpCall: moved the alias resolution into getDocCollection and renamed to 
resolveDocCollection to handle both alias & collection resolution.  Added retry 
logic, both for aliases and for collections (via  
ZkStateReader.forceUpdateCollection(collection)
 * HttpSolrCall: after we call aliases.update(), added a call to 
{{cores.getZkController().zkStateReader.forceUpdateCollection(collectionName);}}
  And I removed the comment about admin UI elements triggering this code path 
because this is no longer true – I checked by using Solr with a breakpoint both 
cloud and standard, and by researching the original issue.
 * ZkStateReader.forceUpdateCollection: added TODO comment that we ought to 
call ZooKeeper.sync().

Tests are running now.

Any comments [~gus_heck], [~noble.paul] or [~shalinmangar]?  If not I'll commit 
this maybe Monday.  I'm looking forward to not seeing spurious CI failures for 
TimeRoutedAliasUpdateProcessorTest that will be solved by this.

> V2 API should "retry" for unresolved collections/aliases (like V1 does)
> -----------------------------------------------------------------------
>
>                 Key: SOLR-12258
>                 URL: https://issues.apache.org/jira/browse/SOLR-12258
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: SolrCloud, v2 API
>            Reporter: David Smiley
>            Priority: Major
>         Attachments: SOLR-12258.patch, SOLR-12258.patch
>
>
> When using V1, if the request refers to a possible collection/alias that 
> fails to resolve, HttpSolrCall will invoke AliasesManager.update() then retry 
> the request as if anew (in collaboration with SolrDispatchFilter).  If it 
> fails to resolve again we stop there and return an error; it doesn't go on 
> forever.
> V2 (V2HttpCall specifically) doesn't have this retry mechanism.  It'll return 
> "no such collection or alias".
> The retry will not only work for an alias but the retrying is a delay that 
> will at least help the odds of a newly made collection from being known to 
> this Solr node.  It'd be nice if this was more explicit – i.e. if there was a 
> mechanism similar to AliasesManager.update() but for a collection.  I'm not 
> sure how to do that?
> BTW I discovered this while debugging a Jenkins failure of 
> TimeRoutedAliasUpdateProcessorTest.test where it early on simply goes to 
> issue a V2 based request to change the configuration of a collection that was 
> created immediately before it.  It's pretty mysterious.  I am aware of 
> SolrCloudTestCase.waitForState which is maybe something that needs to be 
> called?  But if that were true then *every* SolrCloud test would need to use 
> it; it just seems wrong to me that we ought to use this method commonly.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to