| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent af096f1 commit 916e694
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -30,7 +30,7 @@ if (cluster.isWorker) { | |||
| 30 | 30 | } | |
| 31 | 31 | }); | |
| 32 | 32 | ||
| 33 | - // Throw accidently error when all workers are listening | ||
| 33 | + // Throw accidental error when all workers are listening | ||
| 34 | 34 | var listeningNum = 0; | |
| 35 | 35 | cluster.on('listening', function listeningEvent() { | |
| 36 | 36 | ||
@@ -39,10 +39,10 @@ if (cluster.isWorker) { | |||
| 39 | 39 | // Stop listening | |
| 40 | 40 | cluster.removeListener('listening', listeningEvent); | |
| 41 | 41 | ||
| 42 | - // throw accidently error | ||
| 42 | + // Throw accidental error | ||
| 43 | 43 | process.nextTick(function() { | |
| 44 | 44 | console.error('about to throw'); | |
| 45 | - throw new Error('accidently error'); | ||
| 45 | + throw new Error('accidental error'); | ||
| 46 | 46 | }); | |
| 47 | 47 | } | |
| 48 | 48 | ||
@@ -68,8 +68,8 @@ if (cluster.isWorker) { | |||
| 68 | 68 | } | |
| 69 | 69 | }; | |
| 70 | 70 | ||
| 71 | - var existMaster = false; | ||
| 72 | - var existWorker = false; | ||
| 71 | + var masterExited = false; | ||
| 72 | + var workersExited = false; | ||
| 73 | 73 | ||
| 74 | 74 | // List all workers | |
| 75 | 75 | var workers = []; | |
@@ -89,36 +89,33 @@ if (cluster.isWorker) { | |||
| 89 | 89 | // When cluster is dead | |
| 90 | 90 | master.on('exit', function(code) { | |
| 91 | 91 | ||
| 92 | - // Check that the cluster died accidently | ||
| 93 | - existMaster = !!code; | ||
| 92 | + // Check that the cluster died accidentally (non-zero exit code) | ||
| 93 | + masterExited = !!code; | ||
| 94 | 94 | ||
| 95 | - // Give the workers time to shut down | ||
| 96 | - var timeout = 200; | ||
| 97 | - if (common.isAix) { | ||
| 98 | - // AIX needs more time due to default exit performance | ||
| 99 | - timeout = 1000; | ||
| 100 | - } | ||
| 101 | - setTimeout(checkWorkers, timeout); | ||
| 102 | - | ||
| 103 | - function checkWorkers() { | ||
| 104 | - // When master is dead all workers should be dead to | ||
| 95 | + var pollWorkers = function() { | ||
| 96 | + // When master is dead all workers should be dead too | ||
| 105 | 97 | var alive = false; | |
| 106 | 98 | workers.forEach(function(pid) { | |
| 107 | 99 | if (isAlive(pid)) { | |
| 108 | 100 | alive = true; | |
| 109 | 101 | } | |
| 110 | 102 | }); | |
| 111 | - | ||
| 112 | - // If a worker was alive this did not act as expected | ||
| 113 | - existWorker = !alive; | ||
| 114 | - } | ||
| 103 | + if (alive) { | ||
| 104 | + setTimeout(pollWorkers, 50); | ||
| 105 | + } else { | ||
| 106 | + workersExited = true; | ||
| 107 | + } | ||
| 108 | + }; | ||
| 109 | + | ||
| 110 | + // Loop indefinitely until worker exit | ||
| 111 | + pollWorkers(); | ||
| 115 | 112 | }); | |
| 116 | 113 | ||
| 117 | 114 | process.once('exit', function() { | |
| 118 | - var m = 'The master did not die after an error was throwed'; | ||
| 119 | - assert.ok(existMaster, m); | ||
| 115 | + var m = 'The master did not die after an error was thrown'; | ||
| 116 | + assert.ok(masterExited, m); | ||
| 120 | 117 | m = 'The workers did not die after an error in the master'; | |
| 121 | - assert.ok(existWorker, m); | ||
| 118 | + assert.ok(workersExited, m); | ||
| 122 | 119 | }); | |
| 123 | 120 | ||
| 124 | 121 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -55,26 +55,21 @@ if (cluster.isWorker) { | |||
| 55 | 55 | var alive = true; | |
| 56 | 56 | master.on('exit', function(code) { | |
| 57 | 57 | ||
| 58 | - // make sure that the master died by purpose | ||
| 58 | + // make sure that the master died on purpose | ||
| 59 | 59 | assert.equal(code, 0); | |
| 60 | 60 | ||
| 61 | 61 | // check worker process status | |
| 62 | - var timeout = 200; | ||
| 63 | - if (common.isAix) { | ||
| 64 | - // AIX needs more time due to default exit performance | ||
| 65 | - timeout = 1000; | ||
| 66 | - } | ||
| 67 | - setTimeout(function() { | ||
| 62 | + var pollWorker = function() { | ||
| 68 | 63 | alive = isAlive(pid); | |
| 69 | - }, timeout); | ||
| 64 | + if (alive) { | ||
| 65 | + setTimeout(pollWorker, 50); | ||
| 66 | + } | ||
| 67 | + }; | ||
| 68 | + // Loop indefinitely until worker exit. | ||
| 69 | + pollWorker(); | ||
| 70 | 70 | }); | |
| 71 | 71 | ||
| 72 | 72 | process.once('exit', function() { | |
| 73 | - // cleanup: kill the worker if alive | ||
| 74 | - if (alive) { | ||
| 75 | - process.kill(pid); | ||
| 76 | - } | ||
| 77 | - | ||
| 78 | 73 | assert.equal(typeof pid, 'number', 'did not get worker pid info'); | |
| 79 | 74 | assert.equal(alive, false, 'worker was alive after master died'); | |
| 80 | 75 | }); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments