Interesting Sam, but what if I set a flag that is checked every process.nextTick and suspends redis updates, so what's left is finishing iterating over in-memory items?
On Wed, Dec 10, 2014 at 8:47 PM, Sam Roberts <s...@strongloop.com> wrote: > >> On Monday, December 8, 2014 at 3:47 PM, Ω Alisson wrote: > >> > >> I'm running a Node app that fetches Redis data into another database. > It´s > >> using the cluster module, everything works fine but I need to ensure > that > >> workers will finish properly their jobs(they use BRPOP then allocate > into a > >> object then insert in batches cleaning the objects), how do I do this? > > > On Tue, Dec 9, 2014 at 7:33 AM, Ω Alisson <thelinuxl...@gmail.com> wrote: > > if I do something like this on a worker process, wouldn't be effective? > > > > process.on("message", function(m) { > > if(m.cmd === "disconnect") { > > // cleanup logic > > } > > }) > > If I understand correctly, you want workers to be given a chance to > finish what they are doing when disconnected using node cluster? > > In principle this works, though that message doesn't exist (unless you > send it?). You don't say how/when you fork and/or disconnect workers. > > Generally, this would happen in gracefull shutdown by calling > `cluster.disconnect()` in the node master. Unfortunately, while that > waits > for cluster worker ***servers*** to close, it doesn't wait for > clients, like redis clients. LIke yours, likely. > > You can trap the disconnect message if you are willing to use node > internals: https://gist.github.com/sam-github/8185222 > > node cluster should really expose that event, IMO, but so it goes, for > the moment. > > Most supervisors, strongloops's included, offer a way to inform the > worker that it should cleanup. `slc run` sends a shutdown message, > > https://github.com/strongloop/strong-cluster-control/blob/master/api.md#controlcmdshutdown > , > for example, when shutting down, and gives 60seconds grace to the > worker (configurable), before SIGTERMing it. > > Cheers, > Sam > > -- > Job board: http://jobs.nodejs.org/ > New group rules: > https://gist.github.com/othiym23/9886289#file-moderation-policy-md > Old group rules: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to nodejs+unsubscr...@googlegroups.com. > To post to this group, send email to nodejs@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/nodejs/CACmrRmSaa5hb6zSwSP6Z8YX7PdifXxnE-%2BsZdbosVDmgXOegrw%40mail.gmail.com > . > For more options, visit https://groups.google.com/d/optout. > -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. To post to this group, send email to nodejs@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/CACZE8Y482nhYEYvR6wYMf64cou_vt-XmsJo9sro3q1XAhAn3WA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.