Skip to content

Commit cb0d823

Browse files
cjihrigtargos
authored andcommitted
cluster: use Map to track handles in master
PR-URL: #23125 Reviewed-By: Gus Caplan <[email protected]> Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Trivikram Kamat <[email protected]> Reviewed-By: Denys Otrishko <[email protected]>
1 parent 0f133eb commit cb0d823

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

‎lib/internal/cluster/master.js‎

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -148,20 +148,18 @@ function removeWorker(worker){
148148
deletecluster.workers[worker.id];
149149

150150
if(keys(cluster.workers).length===0){
151-
assert(keys(handles).length===0,'Resource leak detected.');
151+
assert(handles.size===0,'Resource leak detected.');
152152
intercom.emit('disconnect');
153153
}
154154
}
155155

156156
functionremoveHandlesForWorker(worker){
157157
assert(worker);
158158

159-
for(varkeyinhandles){
160-
consthandle=handles[key];
161-
159+
handles.forEach((handle,key)=>{
162160
if(handle.remove(worker))
163-
deletehandles[key];
164-
}
161+
handles.delete(key);
162+
});
165163
}
166164

167165
cluster.fork=function(env){
@@ -277,7 +275,7 @@ function queryServer(worker, message){
277275

278276
constkey=`${message.address}:${message.port}:${message.addressType}:`+
279277
`${message.fd}:${message.index}`;
280-
varhandle=handles[key];
278+
varhandle=handles.get(key);
281279

282280
if(handle===undefined){
283281
letaddress=message.address;
@@ -302,12 +300,13 @@ function queryServer(worker, message){
302300
constructor=SharedHandle;
303301
}
304302

305-
handles[key]=handle=newconstructor(key,
306-
address,
307-
message.port,
308-
message.addressType,
309-
message.fd,
310-
message.flags);
303+
handle=newconstructor(key,
304+
address,
305+
message.port,
306+
message.addressType,
307+
message.fd,
308+
message.flags);
309+
handles.set(key,handle);
311310
}
312311

313312
if(!handle.data)
@@ -319,11 +318,11 @@ function queryServer(worker, message){
319318
errno: errno,
320319
key: key,
321320
ack: message.seq,
322-
data: handles[key].data
321+
data: handles.get(key).data
323322
},reply);
324323

325324
if(errno)
326-
deletehandles[key];// Gives other workers a chance to retry.
325+
handles.delete(key);// Gives other workers a chance to retry.
327326

328327
send(worker,reply,handle);
329328
});
@@ -346,10 +345,10 @@ function listening(worker, message){
346345
// removed by a prior call to removeHandlesForWorker() so guard against that.
347346
functionclose(worker,message){
348347
constkey=message.key;
349-
consthandle=handles[key];
348+
consthandle=handles.get(key);
350349

351350
if(handle&&handle.remove(worker))
352-
deletehandles[key];
351+
handles.delete(key);
353352
}
354353

355354
functionsend(worker,message,handle,cb){

‎lib/internal/cluster/utils.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const util = require('util');
44
module.exports={
55
sendHelper,
66
internal,
7-
handles: {}// Used in tests.
7+
handles: newMap()// Used in tests.
88
};
99

1010
constcallbacks=newMap();

0 commit comments

Comments
(0)