cluster: use Map to track indexes

PR-URL: https://github.com/nodejs/node/pull/23125
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
This commit is contained in:
cjihrig 2018-09-27 10:08:48 -04:00
parent 6654c59452
commit aa899aa6d0
No known key found for this signature in database
GPG Key ID: 7434390BDBE9B9C5

View File

@ -8,7 +8,7 @@ const Worker = require('internal/cluster/worker');
const { internal, sendHelper } = require('internal/cluster/utils'); const { internal, sendHelper } = require('internal/cluster/utils');
const cluster = new EventEmitter(); const cluster = new EventEmitter();
const handles = {}; const handles = {};
const indexes = {}; const indexes = new Map();
const noop = () => {}; const noop = () => {};
module.exports = cluster; module.exports = cluster;
@ -62,14 +62,18 @@ cluster._getServer = function(obj, options, cb) {
options.addressType, options.addressType,
options.fd ].join(':'); options.fd ].join(':');
if (indexes[indexesKey] === undefined) let index = indexes.get(indexesKey);
indexes[indexesKey] = 0;
if (index === undefined)
index = 0;
else else
indexes[indexesKey]++; index++;
indexes.set(indexesKey, index);
const message = util._extend({ const message = util._extend({
act: 'queryServer', act: 'queryServer',
index: indexes[indexesKey], index,
data: null data: null
}, options); }, options);
@ -108,7 +112,7 @@ function shared(message, handle, indexesKey, cb) {
handle.close = function() { handle.close = function() {
send({ act: 'close', key }); send({ act: 'close', key });
delete handles[key]; delete handles[key];
delete indexes[indexesKey]; indexes.delete(indexesKey);
return close.apply(this, arguments); return close.apply(this, arguments);
}.bind(handle); }.bind(handle);
assert(handles[key] === undefined); assert(handles[key] === undefined);
@ -141,7 +145,7 @@ function rr(message, indexesKey, cb) {
send({ act: 'close', key }); send({ act: 'close', key });
delete handles[key]; delete handles[key];
delete indexes[indexesKey]; indexes.delete(indexesKey);
key = undefined; key = undefined;
} }