nickva commented on a change in pull request #409: RFC for CouchDB background 
workers
URL: 
https://github.com/apache/couchdb-documentation/pull/409#discussion_r283856802
 
 

 ##########
 File path: rfcs/007-background-workers.md
 ##########
 @@ -0,0 +1,299 @@
+---
+name: Formal RFC
+about: Submit a formal Request For Comments for consideration by the team.
+title: 'Background workers with FoundationDB backend'
+labels: rfc, discussion
+assignees: ''
+
+---
+
+[NOTE]: # ( ^^ Provide a general summary of the RFC in the title above. ^^ )
+
+# Introduction
+
+This document describes a data model and behavior of CouchDB background 
workers.
+
+## Abstract
+
+CouchDB background workers are used for things like index building and
+replication. We present a generalized model that allows creation, running, and
+monitoring of these jobs. "Jobs" are represented generically such that both
+replication and indexing could take advantage of the same framework. The basic
+idea is that of a global job queue for each job type. New jobs are inserted
+into the jobs table and enqueued for execution.
+
+There are a number of workers that attempt to dequeue pending jobs and run
+them. "Running" is specific to each job type and would be different for
+replication and indexing, respectively.
+
+Workers are processes which execute jobs. They MAY be individual Erlang
+processes, but could also be implemented in Python, Java or any other
+environment with a FoundationDB client. The only coordination between workers
+happens via the database. Workers can start and stop at any time. Workers
+monitor each other for liveliness and in case some workers abruptly terminate,
+all the jobs of a dead worker are re-enqueued into the global pending queue.
 
 Review comment:
   I update the RFC to refocus on jobs instead of workers instead.  But I 
didn't add the extra states to the job framework. It might make more sense for 
each job type to define its own. The job framework only cares about "pending", 
"running" and "finished". Those states are not even explicitly tracked as a 
state label but are derived based on other fields (if it is in the pending 
queue it is pending, if it was accepted by a worker it is "running").
   
   I can see after implementing replication, indexing and others 
(couch-peruser) and seeing that all of them end up defining the same 
type-specific state, we could then move those to this framework

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to