} else {
// There is user code to be run
+ // If this is a worker in cluster mode, start up the communication
+ // channel. This needs to be done before any user code gets executed
+ // (including preload modules).
+ if (process.argv[1] && process.env.NODE_UNIQUE_ID) {
+ var cluster = NativeModule.require('cluster');
+ cluster._setupWorker();
+
+ // Make sure it's not accidentally inherited by child processes.
+ delete process.env.NODE_UNIQUE_ID;
+ }
+
// Load any preload modules
if (process._preload_modules) {
var Module = NativeModule.require('module');
var path = NativeModule.require('path');
process.argv[1] = path.resolve(process.argv[1]);
- // If this is a worker in cluster mode, start up the communication
- // channel.
- if (process.env.NODE_UNIQUE_ID) {
- var cluster = NativeModule.require('cluster');
- cluster._setupWorker();
-
- // Make sure it's not accidentally inherited by child processes.
- delete process.env.NODE_UNIQUE_ID;
- }
-
var Module = NativeModule.require('module');
if (global.v8debug &&
--- /dev/null
+var cluster = require('cluster');
+if (cluster.isMaster) {
+ cluster.fork(); // one child
+ cluster.on('exit', function(worker, code, signal) {
+ console.log('worker terminated with code ' + code);
+ });
+}
if (err) throw err;
assert.equal(stdout, 'A\nB\nhello\n');
});
+
+child_process.exec(nodeBinary + ' '
+ + '--require ' + fixture('cluster-preload.js') + ' '
+ + fixture('cluster-preload-test.js'),
+ function(err, stdout, stderr) {
+ if (err) throw err;
+ assert.ok(/worker terminated with code 43/.test(stdout));
+ });