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

Paul Joseph Davis commented on COUCHDB-1165:
--------------------------------------------

@Gabor,

That's a pretty good idea. The only hiccup is that it'll require refactoring 
the way that cuch_task_status works, but scanning through it I already see how 
to manage that. If you're interested in giving a go at this yourself feel free 
to ping me directly with questions on how to go about this.

The API itself I'd probably change up a bit though. Something more like:

% Create task
<- ["task_create", Type, Task, Status]
-> [true, TaskId]

% Update task
<- ["task_update", TaskId, NewStatus]
% no response

% Delete task
<- ["task_done", TaskId]

Where TaskId, Typ, Task, and Status are all strings.

> Allow CouchDB-managed OS daemons to include information in _active_tasks
> ------------------------------------------------------------------------
>
>                 Key: COUCHDB-1165
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1165
>             Project: CouchDB
>          Issue Type: New Feature
>          Components: Database Core, HTTP Interface
>            Reporter: Gabor Ratky
>            Priority: Minor
>
> The new Externals API coupled with the HTTP Proxying enables powerful 
> background data processing scenarios, similar to the replication and 
> compaction API's in the core CouchDB API. The Replication API returns a JSON 
> structure that includes information about the replication that has completed 
> but progress information is also available through _active_tasks and thus, 
> Futon.
> An OS daemon that handles proxied requests to perform data processing tasks 
> can also reply with information about a completed request but has no way 
> other than ["log", DMESG] to communicate progress and append to the CouchDB 
> log, similar how view checkpointing is included in the CouchDB log.
> The suggested JSON commands supported by the Externals API would allow a 
> daemon to register a long-running tasks, report completion progress and 
> status and signal when the long running task completes.
> While I am not intimately familiar with the inner workings of _active_tasks 
> and {couch_httpd_misc_handlers, handle_task_status_req}, the following API 
> would work (suggestions welcome!):
> Register a new active task:
> ["task", { "id":"import:foo.csv", "type": "File Import", "task":"foo.csv", 
> "status": "Imported 0 of 360,410 bytes (0%)" }]
> Report progress (same structure as registering a new active task):
> ["task", { "id":"import:foo.csv", "type": "File Import", "task":"foo.csv", 
> "status": "Imported 150,428 of 360,410 bytes (41%)" }]
> Register task completion:
> ["task", {"id":"import:foo.csv", complete: true}]
> Of course, id could be a number id that uniquely identifies the process 
> itself. Currently, active tasks include the "pid" of the process that 
> performs the task. 
> It would be lovely to see this functionality in 1.2 and I will have time to 
> work on this in the 1.2 timeframe so if there are no objections and everyone 
> agrees on a meaningful command structure, I can work on the patch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to