Hi,


How can we be sure that the previous request status info has been already 
processed? What about the following timeline:



-Client1 sends an async request

-Client1 reads status info, it's still running

-Client1 reads status info, it's still running

-Async request finishes

-Right after that Client2 sends a new async request with the same ID, we clear 
the async status because it's already finished

-Client1 reads status info, but this time it will read info about the new async 
request sent by Client2.



Andras








---- On Wed, 10 May 2023 05:15:40 +0200 David Smiley <dsmi...@apache.org> wrote 
---



I noticed that async admin requests to Solr must have a unique asyncId or 
else a request is rejected.  Makes sense -- maybe the request is in 
progress.  But what if it isn't -- what if the previous request for the 
same ID either succeeded or failed?  Shouldn't we clear the previous 
asyncId status and let the new request go through? 
 
I'm imagining leveraging this uniqueness constraint in order to be an 
additional protection measure against requests that should be done 
atomically, like a shard split.  Yes there are already locks but this 
additional measure will allow a fail-fast -- no enqueue of a doomed message 
to the Overseer that will ultimately never succeed any way.  Thus the 
sender of a shard split can use an async ID like 
"SPLIT-collectionName-shardName".  Maybe there are other parts of SolrCloud 
that could leverage this constraint to its advantage likewise. 
 
~ David Smiley 
Apache Lucene/Solr Search Developer 
http://www.linkedin.com/in/davidwsmiley

Reply via email to