Skip to content
This repository was archived by the owner on Apr 22, 2023. It is now read-only.
This repository was archived by the owner on Apr 22, 2023. It is now read-only.

net::Server.unref() failed on cluster mode #25782

@kyriosli

Description

@kyriosli

I opened an issue in the project nodejs/node and thought maybe I should have posted it here:

This can be easily reproduced by the following code:

var cluster = require('cluster');
if (cluster.isMaster) {
    cluster.fork();
}
else {
    require('net').createServer().listen(8081, function () {
        this.unref();
    })
}

In node v0.12.7 it says:

net.js:1440
    this._handle.unref();
                 ^
TypeError: undefined is not a function
    at Server.unref (net.js:1440:18)
    at Server.<anonymous> (/home/kyrios.li/test.js:7:8)
    at Server.g (events.js:199:16)
    at Server.emit (events.js:129:20)
    at net.js:1171:12
    at process._tickCallback (node.js:355:11)

and the same code is ok when NODE_CLUSTER_SCHED_POLICY is set to none. So I thought maybe it is a problem with RoundRobin?


I simplified the code to to the following:

var cluster = require('cluster');
if (cluster.isMaster) {
    cluster.fork();
}

but the child process is not exiting because there is internal message listeners. So Making unref work well will not make a change.

But I think we should at least avoid the error to be thrown, maybe a patch to the net module that ignores the unref call when cluster.isSlave is true will do?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions