Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net: remove long deprecated server.connections property #33647

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 2 additions & 3 deletions doc/api/child_process.md
Expand Up @@ -1379,9 +1379,8 @@ process.on('message', (m, socket) => {
```

Once a socket has been passed to a child, the parent is no longer capable of
tracking when the socket is destroyed. To indicate this, the `.connections`
property becomes `null`. It is recommended not to use `.maxConnections` when
this occurs.
tracking when the socket is destroyed. It is recommended not to use
`.maxConnections` when this occurs.

It is also recommended that any `'message'` handlers in the child process
verify that `socket` exists, as the connection may have been closed during the
Expand Down
10 changes: 6 additions & 4 deletions doc/api/deprecations.md
Expand Up @@ -481,6 +481,9 @@ This behavior has been removed.
### DEP0020: `Server.connections`
<!-- YAML
changes:
- version: REPLACEME
pr-url: https://github.com/nodejs/node/pull/33647
description: Server.connections has been removed.
- version:
- v4.8.6
- v6.12.0
Expand All @@ -491,10 +494,10 @@ changes:
description: Runtime deprecation.
-->

Type: Runtime
Type: End-of-life

The [`Server.connections`][] property is deprecated. Please use the
[`Server.getConnections()`][] method instead.
The `Server.connections` property was deprecated in Node.js v0.9.7 and has
been removed. Please use the [`Server.getConnections()`][] method instead.

<a id="DEP0021"></a>
### DEP0021: `Server.listenFD`
Expand Down Expand Up @@ -2756,7 +2759,6 @@ const moduleParents = Object.values(require.cache)
[`EventEmitter.listenerCount(emitter, eventName)`]: events.html#events_eventemitter_listenercount_emitter_eventname
[`REPLServer.clearBufferedCommand()`]: repl.html#repl_replserver_clearbufferedcommand
[`ReadStream.open()`]: fs.html#fs_class_fs_readstream
[`Server.connections`]: net.html#net_server_connections
[`Server.getConnections()`]: net.html#net_server_getconnections_callback
[`Server.listen({fd: <number>})`]: net.html#net_server_listen_handle_backlog_callback
[`SlowBuffer`]: buffer.html#buffer_class_slowbuffer
Expand Down
17 changes: 0 additions & 17 deletions doc/api/net.md
Expand Up @@ -156,22 +156,6 @@ The optional `callback` will be called once the `'close'` event occurs. Unlike
that event, it will be called with an `Error` as its only argument if the server
was not open when it was closed.

### `server.connections`
<!-- YAML
added: v0.2.0
deprecated: v0.9.7
-->

> Stability: 0 - Deprecated: Use [`server.getConnections()`][] instead.

* {integer|null}

The number of concurrent connections on the server.

This becomes `null` when sending a socket to a child with
[`child_process.fork()`][]. To poll forks and get current number of active
connections, use asynchronous [`server.getConnections()`][] instead.

### `server.getConnections(callback)`
<!-- YAML
added: v0.9.7
Expand Down Expand Up @@ -1256,7 +1240,6 @@ Returns `true` if input is a version 6 IP address, otherwise returns `false`.
[`new net.Socket(options)`]: #net_new_net_socket_options
[`readable.setEncoding()`]: stream.html#stream_readable_setencoding_encoding
[`server.close()`]: #net_server_close_callback
[`server.getConnections()`]: #net_server_getconnections_callback
[`server.listen()`]: #net_server_listen
[`server.listen(handle)`]: #net_server_listen_handle_backlog_callback
[`server.listen(options)`]: #net_server_listen_options_callback
Expand Down
13 changes: 0 additions & 13 deletions doc/api/tls.md
Expand Up @@ -580,18 +580,6 @@ The `server.close()` method stops the server from accepting new connections.
This function operates asynchronously. The `'close'` event will be emitted
when the server has no more open connections.

### `server.connections`
<!-- YAML
added: v0.3.2
deprecated: v0.9.7
-->

> Stability: 0 - Deprecated: Use [`server.getConnections()`][] instead.

* {number}

Returns the current number of concurrent connections on the server.

### `server.getTicketKeys()`
<!-- YAML
added: v3.0.0
Expand Down Expand Up @@ -1963,7 +1951,6 @@ where `secureSocket` has the same API as `pair.cleartext`.
[`net.Server`]: net.html#net_class_net_server
[`net.Socket`]: net.html#net_class_net_socket
[`server.addContext()`]: #tls_server_addcontext_hostname_context
[`server.getConnections()`]: net.html#net_server_getconnections_callback
[`server.getTicketKeys()`]: #tls_server_getticketkeys
[`server.listen()`]: net.html#net_server_listen
[`server.setTicketKeys()`]: #tls_server_setticketkeys_keys
Expand Down
16 changes: 0 additions & 16 deletions lib/net.js
Expand Up @@ -38,7 +38,6 @@ const { inspect } = require('internal/util/inspect');
let debug = require('internal/util/debuglog').debuglog('net', (fn) => {
debug = fn;
});
const { deprecate } = require('internal/util');
const {
isIP,
isIPv4,
Expand Down Expand Up @@ -1157,21 +1156,6 @@ function Server(options, connectionListener) {

this._connections = 0;

ObjectDefineProperty(this, 'connections', {
get: deprecate(() => {

if (this._usingWorkers) {
return null;
}
return this._connections;
}, 'Server.connections property is deprecated. ' +
'Use Server.getConnections method instead.', 'DEP0020'),
set: deprecate((val) => (this._connections = val),
'Server.connections property is deprecated.',
'DEP0020'),
configurable: true, enumerable: false
});

this[async_id_symbol] = -1;
this._handle = null;
this._usingWorkers = false;
Expand Down
28 changes: 7 additions & 21 deletions test/parallel/test-net-server-close.js
Expand Up @@ -20,40 +20,26 @@
// USE OR OTHER DEALINGS IN THE SOFTWARE.

'use strict';
require('../common');
const common = require('../common');
const assert = require('assert');
const net = require('net');

const events = [];
const sockets = [];

process.on('exit', function() {
assert.strictEqual(server.connections, 0);
assert.strictEqual(events.length, 3);
// Expect to see one server event and two client events. The order of the
// events is undefined because they arrive on the same event loop tick.
assert.strictEqual(events.join(' ').match(/server/g).length, 1);
assert.strictEqual(events.join(' ').match(/client/g).length, 2);
});

const server = net.createServer(function(c) {
c.on('close', function() {
events.push('client');
});
c.on('close', common.mustCall());

sockets.push(c);

if (sockets.length === 2) {
assert.strictEqual(server.close(), server);
sockets.forEach(function(c) { c.destroy(); });
sockets.forEach((c) => c.destroy());
}
});

server.on('close', function() {
events.push('server');
});
server.on('close', common.mustCall());

assert.strictEqual(server, server.listen(0, function() {
net.createConnection(this.address().port);
net.createConnection(this.address().port);
assert.strictEqual(server, server.listen(0, () => {
net.createConnection(server.address().port);
net.createConnection(server.address().port);
}));
46 changes: 0 additions & 46 deletions test/parallel/test-net-server-connections-child-null.js

This file was deleted.

39 changes: 0 additions & 39 deletions test/parallel/test-net-server-connections.js

This file was deleted.

28 changes: 3 additions & 25 deletions test/parallel/test-net-stream.js
Expand Up @@ -21,37 +21,19 @@

'use strict';

require('../common');
const common = require('../common');
const assert = require('assert');
const net = require('net');

const s = new net.Stream();

// Test that destroy called on a stream with a server only ever decrements the
// server connection count once

s.server = new net.Server();
s.server.connections = 10;
s._server = s.server;

assert.strictEqual(s.server.connections, 10);
s.destroy();
assert.strictEqual(s.server.connections, 9);
s.destroy();
assert.strictEqual(s.server.connections, 9);

const SIZE = 2E6;
const N = 10;
const buf = Buffer.alloc(SIZE, 'a');

const server = net.createServer(function(socket) {
socket.setNoDelay();

socket.on('error', function(err) {
socket.destroy();
}).on('close', function() {
server.close();
});
socket.on('error', common.mustCall(() => socket.destroy()))
.on('close', common.mustCall(() => server.close()));

for (let i = 0; i < N; ++i) {
socket.write(buf, () => {});
Expand All @@ -67,7 +49,3 @@ const server = net.createServer(function(socket) {
}, 20);
});
});

process.on('exit', function() {
assert.strictEqual(server.connections, 0);
});
14 changes: 3 additions & 11 deletions test/parallel/test-net-sync-cork.js
@@ -1,6 +1,6 @@
'use strict';

require('../common');
const common = require('../common');
const assert = require('assert');
const net = require('net');

Expand All @@ -26,16 +26,8 @@ server.listen(0, function() {
});
});

process.on('exit', function() {
assert.strictEqual(server.connections, 0);
});

function handle(socket) {
socket.resume();

socket.on('error', function(err) {
socket.destroy();
}).on('close', function() {
server.close();
});
socket.on('error', common.mustNotCall())
.on('close', common.mustCall(() => server.close()));
}