Thanks Jimb, your code definitely gonna help me understand the concept.
On Friday, August 15, 2014 10:05:15 PM UTC+5:30, Jimb Esser wrote:
>
> Hmm, on my OSX machine, it seems the behavior is roughly the same as I
> recall from Windows - hitting Ctrl+C delivers SIGINT to all of the
> processes, not just the master, so the cluster children are exiting
> immediately because of that. If you kill just the master, then the
> children presumably exit because they notice the IPC connection being
> closed. If you want to change that behavior, catch the appropriate signals
> and disconnect your children appropriately. Here's a modified version of
> your code using the logic we use for hot-restarting our servers (master
> exits immediately, to be replaced with a new one, children hang around
> until they're done servicing all of their requests, children ignore SIGINT
> in this case).
>
> var cluster = require('cluster');
>
>
> if(cluster.isMaster){
> console.log('In Master');
> for(var i = 0; i < 3 ; i++) {
> cluster.fork();
> }
> cluster.on('online',function(worker){
> console.log('Worker Live:',worker.id);
> });
> cluster.workers[1].send('Bazingaa');
> process.on('SIGINT', function () {
> for (var id in cluster.workers) {
> cluster.workers[id].send('mySIGINT');
> }
> cluster.disconnect();
> process.stdout.write('Received SIGINT, forwarded to workers', function
> () {
> process.exit(0);
> });
> });
> } else {
> console.log('In Worker',cluster.worker.id);
> var interval = setInterval(function () {
> console.log('worker ' + cluster.worker.id + ' alive');
> }, 1000);
> process.on('message',function(msg){
> if (msg === 'mySIGINT') {
> console.log('Master wants me to exit');
> setTimeout(function () {
> // will cause process to exit, no outstanding operations
> clearInterval(interval);
> }, 2500);
> } else {
> console.log('Message from server:', msg, cluster.worker.id);
> }
> });
> process.on('exit', function () {
> console.log('worker ' + cluster.worker.id + ' exiting');
> });
> process.on('SIGINT', function () {
> console.log('Received SIGINT as child, ignoring');
> });
> }
>
>
>
>
> On Thursday, August 14, 2014 8:30:43 PM UTC-7, Sam Roberts wrote:
>>
>> On Wed, Aug 13, 2014 at 8:53 PM, Tushar Jain <[email protected]> wrote:
>> >> sorry for the ambiguity..
>> >
>> > I mean node example.js
>> > (ctrl-c node)
>>
>> master is killed (assuming default SIGINT behaviour)
>> ipc connections to all workers closed by OS
>> all workers notice IPC connection closed
>> all workers exit
>>
>> > node example.js
>>
>> master starts
>> worker starts
>>
>
--
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/f773d1a7-2b7b-457b-9761-dccfcff7b691%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.