Skip to content

Commit

Permalink
cluster: use ObjectPrototypeHasOwnProperty
Browse files Browse the repository at this point in the history
Signed-off-by: Daeyeon Jeong <daeyeon.dev@gmail.com>
PR-URL: #48141
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
  • Loading branch information
daeyeon authored and targos committed May 30, 2023
1 parent f117855 commit 6cf2adc
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
6 changes: 5 additions & 1 deletion lib/cluster.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,9 @@

'use strict';

const childOrPrimary = 'NODE_UNIQUE_ID' in process.env ? 'child' : 'primary';
const {
ObjectPrototypeHasOwnProperty: ObjectHasOwn,
} = primordials;

const childOrPrimary = ObjectHasOwn(process.env, 'NODE_UNIQUE_ID') ? 'child' : 'primary';
module.exports = require(`internal/cluster/${childOrPrimary}`);
17 changes: 15 additions & 2 deletions test/parallel/test-cluster-basic.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,26 @@
'use strict';
const common = require('../common');

const assert = require('assert');
const cluster = require('cluster');
const assert = require('node:assert');
const cluster = require('node:cluster');
const { spawnSync } = require('node:child_process');

assert.strictEqual('NODE_UNIQUE_ID' in process.env, false,
`NODE_UNIQUE_ID (${process.env.NODE_UNIQUE_ID}) ` +
'should be removed on startup');

{
const { status } = spawnSync(process.execPath, [
'-e',
`
const { strictEqual } = require('node:assert');
Object.setPrototypeOf(process.env, { NODE_UNIQUE_ID: 0 });
strictEqual(require('cluster').isPrimary, true);
`,
]);
assert.strictEqual(status, 0);
}

function forEach(obj, fn) {
Object.keys(obj).forEach((name, index) => {
fn(obj[name], name, index);
Expand Down

0 comments on commit 6cf2adc

Please sign in to comment.