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

Anshum Gupta edited comment on SOLR-5477 at 1/15/14 8:51 PM:
-------------------------------------------------------------

I have a few questions regrading my approach for making the CoreAdmin calls 
async:

Approach #1:
* CoreAdmin requests get submitted to zk.
* Core watches it's zk node for submitted tasks. Request object is the data in 
the node (when submitted).
* On completion, the core deletes the submitted task and puts a new node with 
the response and other metadata into zk.
* Collection API watches the node when it submits a task, waits for it to 
complete.
* On completion of the Collection API call, delete all related core admin 
request nodes in zk that were generated.

* Cleaning up of request nodes in zk happens through an explicit API call.
* Having something on the following lines in zk would be helpful:
{code}
/tasks
  ../collections/collection1/task1

  ../cores/core1/collection1/task1/coretask1
{/code}
This would help us delete the entire group of tasks associated to a 
core/collection/core task/collection task.

Questions:
* This move would mean having a lot more clients talk to and write to zk. Does 
this approach make sense as far as the intended direction of SolrCloud is 
concerned?
* Any suggestions/concerns about scalability of zk as far as having multiple 
updates coming into zk is concerned.


Approach #2 (Not the best option, and more like the option if zk has 
scalability issues with everyone writing/watching):
* Not have CoreAdmin calls as async but instead introduce a tracking mode. Once 
the task is submitted [with async = "taskid"], track this request using an 
in-memory data structure. Even if the request times out, the client can go back 
and query about the task status.


was (Author: anshumg):
I have a few questions regrading my approach for making the CoreAdmin calls 
async:

Approach #1:
* CoreAdmin requests get submitted to zk.
* Core watches it's zk node for submitted tasks. Request object is the data in 
the node (when submitted).
* On completion, the core deletes the submitted task and puts a new node with 
the response and other metadata into zk.
* Collection API watches the node when it submits a task, waits for it to 
complete.
* On completion of the Collection API call, delete all related core admin 
request nodes in zk that were generated.

* Cleaning up of request nodes in zk happens through an explicit API call.
* Having something on the following lines in zk would be helpful:
{code:title=ZK Path}
/tasks
  ../collections/collection1/task1

  ../cores/core1/collection1/task1/coretask1
{/code}
This would help us delete the entire group of tasks associated to a 
core/collection/core task/collection task.

Questions:
* This move would mean having a lot more clients talk to and write to zk. Does 
this approach make sense as far as the intended direction of SolrCloud is 
concerned?
* Any suggestions/concerns about scalability of zk as far as having multiple 
updates coming into zk is concerned.


Approach #2 (Not the best option, and more like the option if zk has 
scalability issues with everyone writing/watching):
* Not have CoreAdmin calls as async but instead introduce a tracking mode. Once 
the task is submitted [with async = "taskid"], track this request using an 
in-memory data structure. Even if the request times out, the client can go back 
and query about the task status.

> Async execution of OverseerCollectionProcessor tasks
> ----------------------------------------------------
>
>                 Key: SOLR-5477
>                 URL: https://issues.apache.org/jira/browse/SOLR-5477
>             Project: Solr
>          Issue Type: Sub-task
>          Components: SolrCloud
>            Reporter: Noble Paul
>            Assignee: Anshum Gupta
>         Attachments: SOLR-5477-CoreAdminStatus.patch, SOLR-5477.patch
>
>
> Typical collection admin commands are long running and it is very common to 
> have the requests get timed out.  It is more of a problem if the cluster is 
> very large.Add an option to run these commands asynchronously
> add an extra param async=true for all collection commands
> the task is written to ZK and the caller is returned a task id. 
> as separate collection admin command will be added to poll the status of the 
> task
> command=status&id=7657668909
> if id is not passed all running async tasks should be listed
> A separate queue is created to store in-process tasks . After the tasks are 
> completed the queue entry is removed. OverSeerColectionProcessor will perform 
> these tasks in multiple threads



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to