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:
parent
6654c59452
commit
aa899aa6d0
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user