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.

Reply via email to