@libp2p/tcp 6.0.3 → 6.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/listener.d.ts +3 -2
- package/dist/src/listener.d.ts.map +1 -1
- package/dist/src/listener.js +32 -23
- package/dist/src/listener.js.map +1 -1
- package/dist/src/socket-to-conn.d.ts +1 -0
- package/dist/src/socket-to-conn.d.ts.map +1 -1
- package/dist/src/socket-to-conn.js +4 -3
- package/dist/src/socket-to-conn.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -8
- package/src/listener.ts +35 -25
- package/src/socket-to-conn.ts +5 -3
package/dist/src/index.d.ts
CHANGED
|
@@ -38,7 +38,6 @@ export interface TCPComponents {
|
|
|
38
38
|
}
|
|
39
39
|
export interface TCPMetrics {
|
|
40
40
|
dialerEvents: CounterGroup;
|
|
41
|
-
listenerEvents: CounterGroup;
|
|
42
41
|
}
|
|
43
42
|
export declare function tcp(init?: TCPOptions): (components?: TCPComponents) => Transport;
|
|
44
43
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAoB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,yBAAyB,CAAA;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAItE,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,gBAAgB;CAEpE;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,EAAE,gBAAgB;CAExF;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAoB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,yBAAyB,CAAA;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAItE,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,gBAAgB;CAEpE;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,EAAE,gBAAgB;CAExF;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,YAAY,CAAA;CAC3B;AA2JD,wBAAgB,GAAG,CAAE,IAAI,GAAE,UAAe,GAAG,CAAC,UAAU,CAAC,EAAE,aAAa,KAAK,SAAS,CAIrF"}
|
package/dist/src/index.js
CHANGED
|
@@ -15,13 +15,9 @@ class TCP {
|
|
|
15
15
|
this.components = components;
|
|
16
16
|
if (components.metrics != null) {
|
|
17
17
|
this.metrics = {
|
|
18
|
-
dialerEvents: components.metrics.registerCounterGroup('
|
|
18
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_tcp_dialer_events_total', {
|
|
19
19
|
label: 'event',
|
|
20
|
-
help: 'Total count of TCP dialer
|
|
21
|
-
}),
|
|
22
|
-
listenerEvents: components.metrics.registerCounterGroup('libp2p_tcp_listener_errors_total', {
|
|
23
|
-
label: 'event',
|
|
24
|
-
help: 'Total count of TCP listener errors by error type'
|
|
20
|
+
help: 'Total count of TCP dialer events by type'
|
|
25
21
|
})
|
|
26
22
|
};
|
|
27
23
|
}
|
|
@@ -48,7 +44,7 @@ class TCP {
|
|
|
48
44
|
});
|
|
49
45
|
log('new outbound connection %s', maConn.remoteAddr);
|
|
50
46
|
const conn = await options.upgrader.upgradeOutbound(maConn);
|
|
51
|
-
log('outbound connection %s
|
|
47
|
+
log('outbound connection upgraded %s', maConn.remoteAddr);
|
|
52
48
|
return conn;
|
|
53
49
|
}
|
|
54
50
|
async _connect(ma, options) {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAC5C,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAgD,MAAM,EAAa,MAAM,6BAA6B,CAAA;AAM7G,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/listener.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Connection } from '@libp2p/interface-connection';
|
|
|
3
3
|
import type { Upgrader, Listener, ListenerEvents } from '@libp2p/interface-transport';
|
|
4
4
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
5
5
|
import type { TCPCreateListenerOptions } from './index.js';
|
|
6
|
-
import type { CounterGroup,
|
|
6
|
+
import type { CounterGroup, MetricGroup, Metrics } from '@libp2p/interface-metrics';
|
|
7
7
|
interface Context extends TCPCreateListenerOptions {
|
|
8
8
|
handler?: (conn: Connection) => void;
|
|
9
9
|
upgrader: Upgrader;
|
|
@@ -13,7 +13,7 @@ interface Context extends TCPCreateListenerOptions {
|
|
|
13
13
|
metrics?: Metrics;
|
|
14
14
|
}
|
|
15
15
|
export interface TCPListenerMetrics {
|
|
16
|
-
status:
|
|
16
|
+
status: MetricGroup;
|
|
17
17
|
errors: CounterGroup;
|
|
18
18
|
events: CounterGroup;
|
|
19
19
|
}
|
|
@@ -24,6 +24,7 @@ export declare class TCPListener extends EventEmitter<ListenerEvents> implements
|
|
|
24
24
|
private readonly connections;
|
|
25
25
|
private status;
|
|
26
26
|
private metrics?;
|
|
27
|
+
private addr;
|
|
27
28
|
constructor(context: Context);
|
|
28
29
|
private onSocket;
|
|
29
30
|
getAddrs(): Multiaddr[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACnF,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAenF,UAAU,OAAQ,SAAQ,wBAAwB;IAChD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACpC,QAAQ,EAAE,QAAQ,CAAA;IAClB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAKD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,YAAY,CAAA;CACrB;AAID,qBAAa,WAAY,SAAQ,YAAY,CAAC,cAAc,CAAE,YAAW,QAAQ;IAQlE,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAC7D,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,IAAI,CAAQ;gBAEU,OAAO,EAAE,OAAO;IA0E9C,OAAO,CAAC,QAAQ;IA2DhB,QAAQ;IAgCF,MAAM,CAAE,EAAE,EAAE,SAAS;IAkBrB,KAAK;CAaZ"}
|
package/dist/src/listener.js
CHANGED
|
@@ -26,6 +26,7 @@ export class TCPListener extends EventEmitter {
|
|
|
26
26
|
this.connections = new Set();
|
|
27
27
|
this.status = { started: false };
|
|
28
28
|
context.keepAlive = context.keepAlive ?? true;
|
|
29
|
+
this.addr = 'unknown';
|
|
29
30
|
this.server = net.createServer(context, this.onSocket.bind(this));
|
|
30
31
|
// https://nodejs.org/api/net.html#servermaxconnections
|
|
31
32
|
// If set reject connections when the server's connection count gets high
|
|
@@ -38,46 +39,53 @@ export class TCPListener extends EventEmitter {
|
|
|
38
39
|
if (context.metrics != null) {
|
|
39
40
|
// we are listening, register metrics for our port
|
|
40
41
|
const address = this.server.address();
|
|
41
|
-
let addr;
|
|
42
42
|
if (address == null) {
|
|
43
|
-
addr = 'unknown';
|
|
43
|
+
this.addr = 'unknown';
|
|
44
44
|
}
|
|
45
45
|
else if (typeof address === 'string') {
|
|
46
46
|
// unix socket
|
|
47
|
-
addr = address;
|
|
47
|
+
this.addr = address;
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
|
-
addr = `${address.address}:${address.port}`;
|
|
50
|
+
this.addr = `${address.address}:${address.port}`;
|
|
51
51
|
}
|
|
52
|
-
context.metrics?.
|
|
52
|
+
context.metrics?.registerMetricGroup('libp2p_tcp_inbound_connections_total', {
|
|
53
|
+
label: 'address',
|
|
53
54
|
help: 'Current active connections in TCP listener',
|
|
54
55
|
calculate: () => {
|
|
55
|
-
return
|
|
56
|
+
return {
|
|
57
|
+
[this.addr]: this.connections.size
|
|
58
|
+
};
|
|
56
59
|
}
|
|
57
60
|
});
|
|
58
61
|
this.metrics = {
|
|
59
|
-
status: context.metrics.
|
|
60
|
-
|
|
62
|
+
status: context.metrics.registerMetricGroup('libp2p_tcp_listener_status_info', {
|
|
63
|
+
label: 'address',
|
|
64
|
+
help: 'Current status of the TCP listener socket'
|
|
61
65
|
}),
|
|
62
|
-
errors: context.metrics.
|
|
63
|
-
label: '
|
|
64
|
-
help: 'Total count of TCP listener errors by
|
|
66
|
+
errors: context.metrics.registerMetricGroup('libp2p_tcp_listener_errors_total', {
|
|
67
|
+
label: 'address',
|
|
68
|
+
help: 'Total count of TCP listener errors by type'
|
|
65
69
|
}),
|
|
66
|
-
events: context.metrics.
|
|
67
|
-
label: '
|
|
68
|
-
help: 'Total count of TCP
|
|
70
|
+
events: context.metrics.registerMetricGroup('libp2p_tcp_listener_events_total', {
|
|
71
|
+
label: 'address',
|
|
72
|
+
help: 'Total count of TCP listener events by type'
|
|
69
73
|
})
|
|
70
74
|
};
|
|
71
|
-
this.metrics?.status.update(
|
|
75
|
+
this.metrics?.status.update({
|
|
76
|
+
[this.addr]: SERVER_STATUS_UP
|
|
77
|
+
});
|
|
72
78
|
}
|
|
73
79
|
this.dispatchEvent(new CustomEvent('listening'));
|
|
74
80
|
})
|
|
75
81
|
.on('error', err => {
|
|
76
|
-
this.metrics?.errors.increment({ listen_error: true });
|
|
82
|
+
this.metrics?.errors.increment({ [`${this.addr} listen_error`]: true });
|
|
77
83
|
this.dispatchEvent(new CustomEvent('error', { detail: err }));
|
|
78
84
|
})
|
|
79
85
|
.on('close', () => {
|
|
80
|
-
this.metrics?.status.update(
|
|
86
|
+
this.metrics?.status.update({
|
|
87
|
+
[this.addr]: SERVER_STATUS_DOWN
|
|
88
|
+
});
|
|
81
89
|
this.dispatchEvent(new CustomEvent('close'));
|
|
82
90
|
});
|
|
83
91
|
}
|
|
@@ -85,7 +93,7 @@ export class TCPListener extends EventEmitter {
|
|
|
85
93
|
// Avoid uncaught errors caused by unstable connections
|
|
86
94
|
socket.on('error', err => {
|
|
87
95
|
log('socket error', err);
|
|
88
|
-
this.metrics?.events.increment({ error: true });
|
|
96
|
+
this.metrics?.events.increment({ [`${this.addr} error`]: true });
|
|
89
97
|
});
|
|
90
98
|
let maConn;
|
|
91
99
|
try {
|
|
@@ -93,19 +101,20 @@ export class TCPListener extends EventEmitter {
|
|
|
93
101
|
listeningAddr: this.status.started ? this.status.listeningAddr : undefined,
|
|
94
102
|
socketInactivityTimeout: this.context.socketInactivityTimeout,
|
|
95
103
|
socketCloseTimeout: this.context.socketCloseTimeout,
|
|
96
|
-
metrics: this.metrics?.events
|
|
104
|
+
metrics: this.metrics?.events,
|
|
105
|
+
metricPrefix: `${this.addr} `
|
|
97
106
|
});
|
|
98
107
|
}
|
|
99
108
|
catch (err) {
|
|
100
109
|
log.error('inbound connection failed', err);
|
|
101
|
-
this.metrics?.errors.increment({ inbound_to_connection: true });
|
|
110
|
+
this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true });
|
|
102
111
|
return;
|
|
103
112
|
}
|
|
104
113
|
log('new inbound connection %s', maConn.remoteAddr);
|
|
105
114
|
try {
|
|
106
115
|
this.context.upgrader.upgradeInbound(maConn)
|
|
107
116
|
.then((conn) => {
|
|
108
|
-
log('inbound connection %s
|
|
117
|
+
log('inbound connection upgraded %s', maConn.remoteAddr);
|
|
109
118
|
this.connections.add(maConn);
|
|
110
119
|
socket.once('close', () => {
|
|
111
120
|
this.connections.delete(maConn);
|
|
@@ -117,7 +126,7 @@ export class TCPListener extends EventEmitter {
|
|
|
117
126
|
})
|
|
118
127
|
.catch(async (err) => {
|
|
119
128
|
log.error('inbound connection failed', err);
|
|
120
|
-
this.metrics?.errors.increment({ inbound_upgrade: true });
|
|
129
|
+
this.metrics?.errors.increment({ [`${this.addr} inbound_upgrade`]: true });
|
|
121
130
|
await attemptClose(maConn);
|
|
122
131
|
})
|
|
123
132
|
.catch(err => {
|
|
@@ -129,7 +138,7 @@ export class TCPListener extends EventEmitter {
|
|
|
129
138
|
attemptClose(maConn)
|
|
130
139
|
.catch(err => {
|
|
131
140
|
log.error('closing inbound connection failed', err);
|
|
132
|
-
this.metrics?.errors.increment({ inbound_closing_failed: true });
|
|
141
|
+
this.metrics?.errors.increment({ [`${this.addr} inbound_closing_failed`]: true });
|
|
133
142
|
});
|
|
134
143
|
}
|
|
135
144
|
}
|
package/dist/src/listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EACL,aAAa,EACb,oBAAoB,EACrB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAOrE,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAEzC;;GAEG;AACH,KAAK,UAAU,YAAY,CAAE,MAA2B;IACtD,IAAI;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;KACrB;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAA;KAC3D;AACH,CAAC;AAWD,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAU5B,MAAM,OAAO,WAAY,SAAQ,YAA4B;
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAI7D,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAI7D,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,WAAW,mBAAmB,wBAsKjF,CAAA"}
|
|
@@ -13,6 +13,7 @@ const log = logger('libp2p:tcp:socket');
|
|
|
13
13
|
*/
|
|
14
14
|
export const toMultiaddrConnection = (socket, options) => {
|
|
15
15
|
const metrics = options.metrics;
|
|
16
|
+
const metricPrefix = options.metricPrefix ?? '';
|
|
16
17
|
const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT;
|
|
17
18
|
const closeTimeout = options.socketCloseTimeout ?? CLOSE_TIMEOUT;
|
|
18
19
|
// Check if we are connected on a unix path
|
|
@@ -41,7 +42,7 @@ export const toMultiaddrConnection = (socket, options) => {
|
|
|
41
42
|
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#socketsettimeouttimeout-callback
|
|
42
43
|
socket.setTimeout(inactivityTimeout, () => {
|
|
43
44
|
log('%s socket read timeout', lOptsStr);
|
|
44
|
-
metrics?.increment({ timeout: true });
|
|
45
|
+
metrics?.increment({ [`${metricPrefix}timeout`]: true });
|
|
45
46
|
// only destroy with an error if the remote has not sent the FIN message
|
|
46
47
|
let err;
|
|
47
48
|
if (socket.readable) {
|
|
@@ -53,7 +54,7 @@ export const toMultiaddrConnection = (socket, options) => {
|
|
|
53
54
|
});
|
|
54
55
|
socket.once('close', () => {
|
|
55
56
|
log('%s socket read timeout', lOptsStr);
|
|
56
|
-
metrics?.increment({ close: true });
|
|
57
|
+
metrics?.increment({ [`${metricPrefix}close`]: true });
|
|
57
58
|
// In instances where `close` was not explicitly called,
|
|
58
59
|
// such as an iterable stream ending, ensure we have set the close
|
|
59
60
|
// timeline
|
|
@@ -65,7 +66,7 @@ export const toMultiaddrConnection = (socket, options) => {
|
|
|
65
66
|
// the remote sent a FIN packet which means no more data will be sent
|
|
66
67
|
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-end
|
|
67
68
|
log('socket ended', maConn.remoteAddr.toString());
|
|
68
|
-
metrics?.increment({ end: true });
|
|
69
|
+
metrics?.increment({ [`${metricPrefix}end`]: true });
|
|
69
70
|
});
|
|
70
71
|
const maConn = {
|
|
71
72
|
async sink(source) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,4BAA4B;AAC5B,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,OAAO,MAAM,UAAU,CAAA;AAM9B,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/tcp",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.4",
|
|
4
4
|
"description": "Node.js implementation of the TCP module that libp2p uses, which implements the interface-connection and interface-transport interfaces",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-tcp#readme",
|
package/src/index.ts
CHANGED
|
@@ -62,7 +62,6 @@ export interface TCPComponents {
|
|
|
62
62
|
|
|
63
63
|
export interface TCPMetrics {
|
|
64
64
|
dialerEvents: CounterGroup
|
|
65
|
-
listenerEvents: CounterGroup
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
class TCP implements Transport {
|
|
@@ -76,13 +75,9 @@ class TCP implements Transport {
|
|
|
76
75
|
|
|
77
76
|
if (components.metrics != null) {
|
|
78
77
|
this.metrics = {
|
|
79
|
-
dialerEvents: components.metrics.registerCounterGroup('
|
|
78
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_tcp_dialer_events_total', {
|
|
80
79
|
label: 'event',
|
|
81
|
-
help: 'Total count of TCP dialer
|
|
82
|
-
}),
|
|
83
|
-
listenerEvents: components.metrics.registerCounterGroup('libp2p_tcp_listener_errors_total', {
|
|
84
|
-
label: 'event',
|
|
85
|
-
help: 'Total count of TCP listener errors by error type'
|
|
80
|
+
help: 'Total count of TCP dialer events by type'
|
|
86
81
|
})
|
|
87
82
|
}
|
|
88
83
|
}
|
|
@@ -115,7 +110,7 @@ class TCP implements Transport {
|
|
|
115
110
|
})
|
|
116
111
|
log('new outbound connection %s', maConn.remoteAddr)
|
|
117
112
|
const conn = await options.upgrader.upgradeOutbound(maConn)
|
|
118
|
-
log('outbound connection %s
|
|
113
|
+
log('outbound connection upgraded %s', maConn.remoteAddr)
|
|
119
114
|
return conn
|
|
120
115
|
}
|
|
121
116
|
|
package/src/listener.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { MultiaddrConnection, Connection } from '@libp2p/interface-connecti
|
|
|
11
11
|
import type { Upgrader, Listener, ListenerEvents } from '@libp2p/interface-transport'
|
|
12
12
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
13
13
|
import type { TCPCreateListenerOptions } from './index.js'
|
|
14
|
-
import type { CounterGroup,
|
|
14
|
+
import type { CounterGroup, MetricGroup, Metrics } from '@libp2p/interface-metrics'
|
|
15
15
|
|
|
16
16
|
const log = logger('libp2p:tcp:listener')
|
|
17
17
|
|
|
@@ -39,7 +39,7 @@ const SERVER_STATUS_UP = 1
|
|
|
39
39
|
const SERVER_STATUS_DOWN = 0
|
|
40
40
|
|
|
41
41
|
export interface TCPListenerMetrics {
|
|
42
|
-
status:
|
|
42
|
+
status: MetricGroup
|
|
43
43
|
errors: CounterGroup
|
|
44
44
|
events: CounterGroup
|
|
45
45
|
}
|
|
@@ -52,12 +52,14 @@ export class TCPListener extends EventEmitter<ListenerEvents> implements Listene
|
|
|
52
52
|
private readonly connections = new Set<MultiaddrConnection>()
|
|
53
53
|
private status: Status = { started: false }
|
|
54
54
|
private metrics?: TCPListenerMetrics
|
|
55
|
+
private addr: string
|
|
55
56
|
|
|
56
57
|
constructor (private readonly context: Context) {
|
|
57
58
|
super()
|
|
58
59
|
|
|
59
60
|
context.keepAlive = context.keepAlive ?? true
|
|
60
61
|
|
|
62
|
+
this.addr = 'unknown'
|
|
61
63
|
this.server = net.createServer(context, this.onSocket.bind(this))
|
|
62
64
|
|
|
63
65
|
// https://nodejs.org/api/net.html#servermaxconnections
|
|
@@ -72,49 +74,56 @@ export class TCPListener extends EventEmitter<ListenerEvents> implements Listene
|
|
|
72
74
|
if (context.metrics != null) {
|
|
73
75
|
// we are listening, register metrics for our port
|
|
74
76
|
const address = this.server.address()
|
|
75
|
-
let addr: string
|
|
76
77
|
|
|
77
78
|
if (address == null) {
|
|
78
|
-
addr = 'unknown'
|
|
79
|
+
this.addr = 'unknown'
|
|
79
80
|
} else if (typeof address === 'string') {
|
|
80
81
|
// unix socket
|
|
81
|
-
addr = address
|
|
82
|
+
this.addr = address
|
|
82
83
|
} else {
|
|
83
|
-
addr = `${address.address}:${address.port}`
|
|
84
|
+
this.addr = `${address.address}:${address.port}`
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
context.metrics?.
|
|
87
|
+
context.metrics?.registerMetricGroup('libp2p_tcp_inbound_connections_total', {
|
|
88
|
+
label: 'address',
|
|
87
89
|
help: 'Current active connections in TCP listener',
|
|
88
90
|
calculate: () => {
|
|
89
|
-
return
|
|
91
|
+
return {
|
|
92
|
+
[this.addr]: this.connections.size
|
|
93
|
+
}
|
|
90
94
|
}
|
|
91
95
|
})
|
|
92
96
|
|
|
93
97
|
this.metrics = {
|
|
94
|
-
status: context.metrics.
|
|
95
|
-
|
|
98
|
+
status: context.metrics.registerMetricGroup('libp2p_tcp_listener_status_info', {
|
|
99
|
+
label: 'address',
|
|
100
|
+
help: 'Current status of the TCP listener socket'
|
|
96
101
|
}),
|
|
97
|
-
errors: context.metrics.
|
|
98
|
-
label: '
|
|
99
|
-
help: 'Total count of TCP listener errors by
|
|
102
|
+
errors: context.metrics.registerMetricGroup('libp2p_tcp_listener_errors_total', {
|
|
103
|
+
label: 'address',
|
|
104
|
+
help: 'Total count of TCP listener errors by type'
|
|
100
105
|
}),
|
|
101
|
-
events: context.metrics.
|
|
102
|
-
label: '
|
|
103
|
-
help: 'Total count of TCP
|
|
106
|
+
events: context.metrics.registerMetricGroup('libp2p_tcp_listener_events_total', {
|
|
107
|
+
label: 'address',
|
|
108
|
+
help: 'Total count of TCP listener events by type'
|
|
104
109
|
})
|
|
105
110
|
}
|
|
106
111
|
|
|
107
|
-
this.metrics?.status.update(
|
|
112
|
+
this.metrics?.status.update({
|
|
113
|
+
[this.addr]: SERVER_STATUS_UP
|
|
114
|
+
})
|
|
108
115
|
}
|
|
109
116
|
|
|
110
117
|
this.dispatchEvent(new CustomEvent('listening'))
|
|
111
118
|
})
|
|
112
119
|
.on('error', err => {
|
|
113
|
-
this.metrics?.errors.increment({ listen_error: true })
|
|
120
|
+
this.metrics?.errors.increment({ [`${this.addr} listen_error`]: true })
|
|
114
121
|
this.dispatchEvent(new CustomEvent<Error>('error', { detail: err }))
|
|
115
122
|
})
|
|
116
123
|
.on('close', () => {
|
|
117
|
-
this.metrics?.status.update(
|
|
124
|
+
this.metrics?.status.update({
|
|
125
|
+
[this.addr]: SERVER_STATUS_DOWN
|
|
126
|
+
})
|
|
118
127
|
this.dispatchEvent(new CustomEvent('close'))
|
|
119
128
|
})
|
|
120
129
|
}
|
|
@@ -123,7 +132,7 @@ export class TCPListener extends EventEmitter<ListenerEvents> implements Listene
|
|
|
123
132
|
// Avoid uncaught errors caused by unstable connections
|
|
124
133
|
socket.on('error', err => {
|
|
125
134
|
log('socket error', err)
|
|
126
|
-
this.metrics?.events.increment({ error: true })
|
|
135
|
+
this.metrics?.events.increment({ [`${this.addr} error`]: true })
|
|
127
136
|
})
|
|
128
137
|
|
|
129
138
|
let maConn: MultiaddrConnection
|
|
@@ -132,11 +141,12 @@ export class TCPListener extends EventEmitter<ListenerEvents> implements Listene
|
|
|
132
141
|
listeningAddr: this.status.started ? this.status.listeningAddr : undefined,
|
|
133
142
|
socketInactivityTimeout: this.context.socketInactivityTimeout,
|
|
134
143
|
socketCloseTimeout: this.context.socketCloseTimeout,
|
|
135
|
-
metrics: this.metrics?.events
|
|
144
|
+
metrics: this.metrics?.events,
|
|
145
|
+
metricPrefix: `${this.addr} `
|
|
136
146
|
})
|
|
137
147
|
} catch (err) {
|
|
138
148
|
log.error('inbound connection failed', err)
|
|
139
|
-
this.metrics?.errors.increment({ inbound_to_connection: true })
|
|
149
|
+
this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true })
|
|
140
150
|
return
|
|
141
151
|
}
|
|
142
152
|
|
|
@@ -144,7 +154,7 @@ export class TCPListener extends EventEmitter<ListenerEvents> implements Listene
|
|
|
144
154
|
try {
|
|
145
155
|
this.context.upgrader.upgradeInbound(maConn)
|
|
146
156
|
.then((conn) => {
|
|
147
|
-
log('inbound connection %s
|
|
157
|
+
log('inbound connection upgraded %s', maConn.remoteAddr)
|
|
148
158
|
this.connections.add(maConn)
|
|
149
159
|
|
|
150
160
|
socket.once('close', () => {
|
|
@@ -159,7 +169,7 @@ export class TCPListener extends EventEmitter<ListenerEvents> implements Listene
|
|
|
159
169
|
})
|
|
160
170
|
.catch(async err => {
|
|
161
171
|
log.error('inbound connection failed', err)
|
|
162
|
-
this.metrics?.errors.increment({ inbound_upgrade: true })
|
|
172
|
+
this.metrics?.errors.increment({ [`${this.addr} inbound_upgrade`]: true })
|
|
163
173
|
|
|
164
174
|
await attemptClose(maConn)
|
|
165
175
|
})
|
|
@@ -172,7 +182,7 @@ export class TCPListener extends EventEmitter<ListenerEvents> implements Listene
|
|
|
172
182
|
attemptClose(maConn)
|
|
173
183
|
.catch(err => {
|
|
174
184
|
log.error('closing inbound connection failed', err)
|
|
175
|
-
this.metrics?.errors.increment({ inbound_closing_failed: true })
|
|
185
|
+
this.metrics?.errors.increment({ [`${this.addr} inbound_closing_failed`]: true })
|
|
176
186
|
})
|
|
177
187
|
}
|
|
178
188
|
}
|
package/src/socket-to-conn.ts
CHANGED
|
@@ -21,6 +21,7 @@ interface ToConnectionOptions {
|
|
|
21
21
|
socketInactivityTimeout?: number
|
|
22
22
|
socketCloseTimeout?: number
|
|
23
23
|
metrics?: CounterGroup
|
|
24
|
+
metricPrefix?: string
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
/**
|
|
@@ -29,6 +30,7 @@ interface ToConnectionOptions {
|
|
|
29
30
|
*/
|
|
30
31
|
export const toMultiaddrConnection = (socket: Socket, options: ToConnectionOptions) => {
|
|
31
32
|
const metrics = options.metrics
|
|
33
|
+
const metricPrefix = options.metricPrefix ?? ''
|
|
32
34
|
const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT
|
|
33
35
|
const closeTimeout = options.socketCloseTimeout ?? CLOSE_TIMEOUT
|
|
34
36
|
|
|
@@ -63,7 +65,7 @@ export const toMultiaddrConnection = (socket: Socket, options: ToConnectionOptio
|
|
|
63
65
|
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#socketsettimeouttimeout-callback
|
|
64
66
|
socket.setTimeout(inactivityTimeout, () => {
|
|
65
67
|
log('%s socket read timeout', lOptsStr)
|
|
66
|
-
metrics?.increment({ timeout: true })
|
|
68
|
+
metrics?.increment({ [`${metricPrefix}timeout`]: true })
|
|
67
69
|
|
|
68
70
|
// only destroy with an error if the remote has not sent the FIN message
|
|
69
71
|
let err: Error | undefined
|
|
@@ -78,7 +80,7 @@ export const toMultiaddrConnection = (socket: Socket, options: ToConnectionOptio
|
|
|
78
80
|
|
|
79
81
|
socket.once('close', () => {
|
|
80
82
|
log('%s socket read timeout', lOptsStr)
|
|
81
|
-
metrics?.increment({ close: true })
|
|
83
|
+
metrics?.increment({ [`${metricPrefix}close`]: true })
|
|
82
84
|
|
|
83
85
|
// In instances where `close` was not explicitly called,
|
|
84
86
|
// such as an iterable stream ending, ensure we have set the close
|
|
@@ -92,7 +94,7 @@ export const toMultiaddrConnection = (socket: Socket, options: ToConnectionOptio
|
|
|
92
94
|
// the remote sent a FIN packet which means no more data will be sent
|
|
93
95
|
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-end
|
|
94
96
|
log('socket ended', maConn.remoteAddr.toString())
|
|
95
|
-
metrics?.increment({ end: true })
|
|
97
|
+
metrics?.increment({ [`${metricPrefix}end`]: true })
|
|
96
98
|
})
|
|
97
99
|
|
|
98
100
|
const maConn: MultiaddrConnection = {
|