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

David Smiley commented on SOLR-18605:
-------------------------------------

Implementation:  A possible approach is to generate an internal async ID and 
simply auto-delete it at completion (say if it contains a flag to do so and/or 
if the ID has a certain prefix).  I'm *not* saying it _should_ work this way, 
I'm merely offering a possible workable implementation approach that might be a 
bit easy /to do.

> async=true should mean "fire and forget" (async without tracking)
> -----------------------------------------------------------------
>
>                 Key: SOLR-18605
>                 URL: https://issues.apache.org/jira/browse/SOLR-18605
>             Project: Solr
>          Issue Type: Improvement
>          Components: SolrCloud
>            Reporter: David Smiley
>            Priority: Major
>
> 🤖 Some clients want to run an admin command asynchronously without ever 
> polling for its completion status. Examples: a cron job that triggers a 
> backup, or a shard split that will complete (or fail) eventually. Not every 
> client can do anything meaningful by polling. Today such a client must still 
> supply a unique {{async}} request ID per call, and Solr stores a status for 
> it that nobody will read; it lingers until cleaned up via {{DELETESTATUS}}.
> h3. Proposal
> Reserve {{async=true}} as a special value meaning "fire and forget":
> * The command executes asynchronously and the response returns immediately, 
> as with any async request.
> * No async ID is claimed in ZooKeeper, so repeated calls never collide.
> * No result is stored, so there's nothing to clean up via {{DELETESTATUS}}.
> * The response omits {{requestid}}.
> {{async=false}} is treated as synchronous (i.e. as if {{async}} were absent).
> h3. Scope
> * Collections API, both Overseer and distributed modes 
> ({{CollectionsHandler}}, {{DistributedCollectionConfigSetCommandRunner}}).
> * CoreAdmin async ({{CoreAdminHandler}}).
> * V2 APIs whose {{async}} request-body field flows through the same code 
> paths.
> * SolrJ: optionally a no-arg variant on {{CollectionAdminRequest}} (e.g. 
> {{processAsync()}} without an ID); could be a follow-up.
> * Ref guide: async sections of the Collections API and CoreAdmin pages.
> h3. Back-compat
> Today {{true}} is treated as an ordinary request ID: the first call claims 
> it, and later calls fail with "Task with the same requestid already exists" 
> until it's deleted. Anyone relying on the literal ID {{true}} would lose the 
> ability to track it. That's unlikely, but worth a note in major-changes.
> h3. Testing
> Integration test: issue two {{async=true}} Collections API requests 
> back-to-back; both succeed, the work completes (e.g. wait for collection 
> state), and no request status is stored. Similar case for CoreAdmin.
> 🤖 Generated with [Claude Code](https://claude.com/claude-code)



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

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

Reply via email to