@libp2p/kad-dht 5.0.2 → 6.0.1
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/query/manager.d.ts +1 -0
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +12 -13
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +1 -0
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +12 -33
- package/dist/src/routing-table/index.js.map +1 -1
- package/package.json +11 -6
- package/src/query/manager.ts +19 -15
- package/src/routing-table/index.ts +19 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEhE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IACtB,aAAa,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAC,CAGf;gBAEY,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAYvE,SAAS;IAIT;;OAEG;IACG,KAAK;IAWX;;OAEG;IACG,IAAI;IAUF,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB;CA+GhG"}
|
|
@@ -8,7 +8,6 @@ import { setMaxListeners } from 'events';
|
|
|
8
8
|
import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events';
|
|
9
9
|
import { logger } from '@libp2p/logger';
|
|
10
10
|
import { PeerSet } from '@libp2p/peer-collections';
|
|
11
|
-
const METRIC_RUNNING_QUERIES = 'running-queries';
|
|
12
11
|
/**
|
|
13
12
|
* Keeps track of all running queries
|
|
14
13
|
*/
|
|
@@ -31,6 +30,12 @@ export class QueryManager {
|
|
|
31
30
|
*/
|
|
32
31
|
async start() {
|
|
33
32
|
this.running = true;
|
|
33
|
+
if (this.components.metrics != null && this.metrics == null) {
|
|
34
|
+
this.metrics = {
|
|
35
|
+
runningQueries: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_running_queries`),
|
|
36
|
+
queryTime: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_query_time_seconds`)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
34
39
|
}
|
|
35
40
|
/**
|
|
36
41
|
* Stops all queries
|
|
@@ -46,6 +51,7 @@ export class QueryManager {
|
|
|
46
51
|
if (!this.running) {
|
|
47
52
|
throw new Error('QueryManager not started');
|
|
48
53
|
}
|
|
54
|
+
const stopQueryTimer = this.metrics?.queryTime.timer();
|
|
49
55
|
let timeoutController;
|
|
50
56
|
if (options.signal == null) {
|
|
51
57
|
// don't let queries run forever
|
|
@@ -84,12 +90,7 @@ export class QueryManager {
|
|
|
84
90
|
try {
|
|
85
91
|
log('query:start');
|
|
86
92
|
this.queries++;
|
|
87
|
-
this.
|
|
88
|
-
system: 'libp2p',
|
|
89
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
90
|
-
metric: METRIC_RUNNING_QUERIES,
|
|
91
|
-
value: this.queries
|
|
92
|
-
});
|
|
93
|
+
this.metrics?.runningQueries.update(this.queries);
|
|
93
94
|
if (peers.length === 0) {
|
|
94
95
|
log.error('Running query with no peers');
|
|
95
96
|
return;
|
|
@@ -135,12 +136,10 @@ export class QueryManager {
|
|
|
135
136
|
timeoutController.clear();
|
|
136
137
|
}
|
|
137
138
|
this.queries--;
|
|
138
|
-
this.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
value: this.queries
|
|
143
|
-
});
|
|
139
|
+
this.metrics?.runningQueries.update(this.queries);
|
|
140
|
+
if (stopQueryTimer != null) {
|
|
141
|
+
stopQueryTimer();
|
|
142
|
+
}
|
|
144
143
|
cleanUp.dispatchEvent(new CustomEvent('cleanup'));
|
|
145
144
|
log('query:done in %dms', Date.now() - startTime);
|
|
146
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EACL,KAAK,EAAE,CAAC,EAAE,qBAAqB,EAChC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAKvC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,7 @@ export declare class RoutingTable implements Startable {
|
|
|
69
69
|
private readonly protocol;
|
|
70
70
|
private readonly tagName;
|
|
71
71
|
private readonly tagValue;
|
|
72
|
+
private metrics?;
|
|
72
73
|
constructor(components: RoutingTableComponents, init: RoutingTableInit);
|
|
73
74
|
isStarted(): boolean;
|
|
74
75
|
start(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,SAAS,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,SAAS,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAE7E,eAAO,MAAM,kBAAkB,cAAc,CAAA;AAC7C,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,eAAO,MAAM,YAAY,KAAK,CAAA;AAC9B,eAAO,MAAM,YAAY,QAAQ,CAAA;AACjC,eAAO,MAAM,gBAAgB,KAAK,CAAA;AAElC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,UAAU,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,UAAU,CAAA;IACd,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACf;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW,KAAK,IAAI,CAAA;IACrE,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IACvC,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,UAAU,CAAA;IAEvB,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACpC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,KACrC,IAAI,CAAA;IAET,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAA;IAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,WAAW,CAAA;IAC7C,MAAM,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IAChC,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,UAAU,CAAA;IACpC,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,SAAS;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,WAAW,CAAA;IAChB,SAAS,EAAE,KAAK,CAAA;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAC,CAIf;gBAEY,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IA0BvE,SAAS;IAIH,KAAK;IAyBL,IAAI;IAMV;;;;OAIG;IACH,SAAS,CAAE,KAAK,EAAE,WAAW;IAqC7B;;;;;;;;;OASG;IACH,OAAO,CAAE,WAAW,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW;IA6D5D;;OAEG;IACH,IAAI,IAAI,WAMP;IAED;;OAEG;IACG,IAAI,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAWtD;;OAEG;IACH,WAAW,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS;IAUjD;;OAEG;IACH,YAAY,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,SAAmB,GAAG,MAAM,EAAE;IAUlE;;OAEG;IACG,GAAG,CAAE,IAAI,EAAE,MAAM;IAcvB;;OAEG;IACG,MAAM,CAAE,IAAI,EAAE,MAAM;CAW3B"}
|
|
@@ -10,9 +10,6 @@ export const KAD_CLOSE_TAG_VALUE = 50;
|
|
|
10
10
|
export const KBUCKET_SIZE = 20;
|
|
11
11
|
export const PING_TIMEOUT = 10000;
|
|
12
12
|
export const PING_CONCURRENCY = 10;
|
|
13
|
-
const METRIC_ROUTING_TABLE_SIZE = 'routing-table-size';
|
|
14
|
-
const METRIC_PING_QUEUE_SIZE = 'ping-queue-size';
|
|
15
|
-
const METRIC_PING_RUNNING = 'ping-running';
|
|
16
13
|
/**
|
|
17
14
|
* A wrapper around `k-bucket`, to provide easy store and
|
|
18
15
|
* retrieval for peers.
|
|
@@ -31,18 +28,8 @@ export class RoutingTable {
|
|
|
31
28
|
this.tagName = tagName ?? KAD_CLOSE_TAG_NAME;
|
|
32
29
|
this.tagValue = tagValue ?? KAD_CLOSE_TAG_VALUE;
|
|
33
30
|
const updatePingQueueSizeMetric = () => {
|
|
34
|
-
this.
|
|
35
|
-
|
|
36
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
37
|
-
metric: METRIC_PING_QUEUE_SIZE,
|
|
38
|
-
value: this.pingQueue.size
|
|
39
|
-
});
|
|
40
|
-
this.components.metrics?.updateComponentMetric({
|
|
41
|
-
system: 'libp2p',
|
|
42
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
43
|
-
metric: METRIC_PING_RUNNING,
|
|
44
|
-
value: this.pingQueue.pending
|
|
45
|
-
});
|
|
31
|
+
this.metrics?.pingQueueSize.update(this.pingQueue.size);
|
|
32
|
+
this.metrics?.pingRunning.update(this.pingQueue.pending);
|
|
46
33
|
};
|
|
47
34
|
this.pingQueue = new Queue({ concurrency: this.pingConcurrency });
|
|
48
35
|
this.pingQueue.addListener('add', updatePingQueueSizeMetric);
|
|
@@ -54,6 +41,13 @@ export class RoutingTable {
|
|
|
54
41
|
}
|
|
55
42
|
async start() {
|
|
56
43
|
this.running = true;
|
|
44
|
+
if (this.components.metrics != null) {
|
|
45
|
+
this.metrics = {
|
|
46
|
+
routingTableSize: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_routing_table_size`),
|
|
47
|
+
pingQueueSize: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_ping_queue_size`),
|
|
48
|
+
pingRunning: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_ping_running`)
|
|
49
|
+
};
|
|
50
|
+
}
|
|
57
51
|
const kBuck = new KBuck({
|
|
58
52
|
localNodeId: await utils.convertPeerId(this.components.peerId),
|
|
59
53
|
numberOfNodesPerKBucket: this.kBucketSize,
|
|
@@ -150,12 +144,7 @@ export class RoutingTable {
|
|
|
150
144
|
if (timeoutController != null) {
|
|
151
145
|
timeoutController.clear();
|
|
152
146
|
}
|
|
153
|
-
this.
|
|
154
|
-
system: 'libp2p',
|
|
155
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
156
|
-
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
157
|
-
value: this.size
|
|
158
|
-
});
|
|
147
|
+
this.metrics?.routingTableSize.update(this.size);
|
|
159
148
|
}
|
|
160
149
|
}));
|
|
161
150
|
if (this.running && responded < oldContacts.length && this.kb != null) {
|
|
@@ -222,12 +211,7 @@ export class RoutingTable {
|
|
|
222
211
|
const id = await utils.convertPeerId(peer);
|
|
223
212
|
this.kb.add({ id: id, peer: peer });
|
|
224
213
|
this.log('added %p with kad id %b', peer, id);
|
|
225
|
-
this.
|
|
226
|
-
system: 'libp2p',
|
|
227
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
228
|
-
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
229
|
-
value: this.size
|
|
230
|
-
});
|
|
214
|
+
this.metrics?.routingTableSize.update(this.size);
|
|
231
215
|
}
|
|
232
216
|
/**
|
|
233
217
|
* Remove a given peer from the table
|
|
@@ -238,12 +222,7 @@ export class RoutingTable {
|
|
|
238
222
|
}
|
|
239
223
|
const id = await utils.convertPeerId(peer);
|
|
240
224
|
this.kb.remove(id);
|
|
241
|
-
this.
|
|
242
|
-
system: 'libp2p',
|
|
243
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
244
|
-
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
245
|
-
value: this.size
|
|
246
|
-
});
|
|
225
|
+
this.metrics?.routingTableSize.update(this.size);
|
|
247
226
|
}
|
|
248
227
|
}
|
|
249
228
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAKlD,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAA;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAA;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAA;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAA;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routing-table/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/kad-dht",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"description": "JavaScript implementation of the Kad-DHT for libp2p",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-kad-dht#readme",
|
|
@@ -131,8 +131,12 @@
|
|
|
131
131
|
"lint": "aegir lint",
|
|
132
132
|
"build": "aegir build",
|
|
133
133
|
"generate": "protons ./src/message/dht.proto",
|
|
134
|
-
"test": "aegir test
|
|
135
|
-
"test:node": "aegir test -t node",
|
|
134
|
+
"test": "aegir test",
|
|
135
|
+
"test:node": "aegir test -t node --cov",
|
|
136
|
+
"test:chrome": "aegir test -t browser --cov",
|
|
137
|
+
"test:chrome-webworker": "aegir test -t webworker",
|
|
138
|
+
"test:firefox": "aegir test -t browser -- --browser firefox",
|
|
139
|
+
"test:firefox-webworker": "aegir test -t webworker -- --browser firefox",
|
|
136
140
|
"dep-check": "aegir dep-check",
|
|
137
141
|
"release": "aegir release"
|
|
138
142
|
},
|
|
@@ -142,7 +146,7 @@
|
|
|
142
146
|
"@libp2p/interface-connection": "^3.0.2",
|
|
143
147
|
"@libp2p/interface-connection-manager": "^1.1.1",
|
|
144
148
|
"@libp2p/interface-dht": "^1.0.1",
|
|
145
|
-
"@libp2p/interface-metrics": "^
|
|
149
|
+
"@libp2p/interface-metrics": "^4.0.0",
|
|
146
150
|
"@libp2p/interface-peer-discovery": "^1.0.1",
|
|
147
151
|
"@libp2p/interface-peer-id": "^1.0.4",
|
|
148
152
|
"@libp2p/interface-peer-info": "^1.0.3",
|
|
@@ -159,6 +163,7 @@
|
|
|
159
163
|
"any-signal": "^3.0.0",
|
|
160
164
|
"datastore-core": "^8.0.1",
|
|
161
165
|
"err-code": "^3.0.1",
|
|
166
|
+
"events": "^3.3.0",
|
|
162
167
|
"hashlru": "^2.3.0",
|
|
163
168
|
"interface-datastore": "^7.0.0",
|
|
164
169
|
"it-all": "^2.0.0",
|
|
@@ -191,7 +196,7 @@
|
|
|
191
196
|
"@types/lodash.range": "^3.2.6",
|
|
192
197
|
"@types/varint": "^6.0.0",
|
|
193
198
|
"@types/which": "^2.0.1",
|
|
194
|
-
"aegir": "^37.0
|
|
199
|
+
"aegir": "^37.3.0",
|
|
195
200
|
"datastore-level": "^9.0.0",
|
|
196
201
|
"delay": "^5.0.0",
|
|
197
202
|
"execa": "^6.0.0",
|
|
@@ -205,7 +210,7 @@
|
|
|
205
210
|
"protons": "^6.0.0",
|
|
206
211
|
"sinon": "^14.0.0",
|
|
207
212
|
"ts-sinon": "^2.0.2",
|
|
208
|
-
"which": "^
|
|
213
|
+
"which": "^3.0.0"
|
|
209
214
|
},
|
|
210
215
|
"browser": {
|
|
211
216
|
"./dist/src/routing-table/generated-prefix-list.js": "./dist/src/routing-table/generated-prefix-list-browser.js"
|
package/src/query/manager.ts
CHANGED
|
@@ -14,9 +14,7 @@ import type { Startable } from '@libp2p/interfaces/startable'
|
|
|
14
14
|
import type { QueryFunc } from './types.js'
|
|
15
15
|
import type { QueryOptions } from '@libp2p/interface-dht'
|
|
16
16
|
import { PeerSet } from '@libp2p/peer-collections'
|
|
17
|
-
import type { Metrics } from '@libp2p/interface-metrics'
|
|
18
|
-
|
|
19
|
-
const METRIC_RUNNING_QUERIES = 'running-queries'
|
|
17
|
+
import type { Metric, Metrics } from '@libp2p/interface-metrics'
|
|
20
18
|
|
|
21
19
|
export interface CleanUpEvents {
|
|
22
20
|
'cleanup': CustomEvent
|
|
@@ -44,6 +42,10 @@ export class QueryManager implements Startable {
|
|
|
44
42
|
private readonly controllers: Set<AbortController>
|
|
45
43
|
private running: boolean
|
|
46
44
|
private queries: number
|
|
45
|
+
private metrics?: {
|
|
46
|
+
runningQueries: Metric
|
|
47
|
+
queryTime: Metric
|
|
48
|
+
}
|
|
47
49
|
|
|
48
50
|
constructor (components: QueryManagerComponents, init: QueryManagerInit) {
|
|
49
51
|
const { lan = false, disjointPaths = K, alpha = ALPHA } = init
|
|
@@ -66,6 +68,13 @@ export class QueryManager implements Startable {
|
|
|
66
68
|
*/
|
|
67
69
|
async start () {
|
|
68
70
|
this.running = true
|
|
71
|
+
|
|
72
|
+
if (this.components.metrics != null && this.metrics == null) {
|
|
73
|
+
this.metrics = {
|
|
74
|
+
runningQueries: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_running_queries`),
|
|
75
|
+
queryTime: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_query_time_seconds`)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
69
78
|
}
|
|
70
79
|
|
|
71
80
|
/**
|
|
@@ -86,6 +95,7 @@ export class QueryManager implements Startable {
|
|
|
86
95
|
throw new Error('QueryManager not started')
|
|
87
96
|
}
|
|
88
97
|
|
|
98
|
+
const stopQueryTimer = this.metrics?.queryTime.timer()
|
|
89
99
|
let timeoutController
|
|
90
100
|
|
|
91
101
|
if (options.signal == null) {
|
|
@@ -131,12 +141,7 @@ export class QueryManager implements Startable {
|
|
|
131
141
|
try {
|
|
132
142
|
log('query:start')
|
|
133
143
|
this.queries++
|
|
134
|
-
this.
|
|
135
|
-
system: 'libp2p',
|
|
136
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
137
|
-
metric: METRIC_RUNNING_QUERIES,
|
|
138
|
-
value: this.queries
|
|
139
|
-
})
|
|
144
|
+
this.metrics?.runningQueries.update(this.queries)
|
|
140
145
|
|
|
141
146
|
if (peers.length === 0) {
|
|
142
147
|
log.error('Running query with no peers')
|
|
@@ -186,12 +191,11 @@ export class QueryManager implements Startable {
|
|
|
186
191
|
}
|
|
187
192
|
|
|
188
193
|
this.queries--
|
|
189
|
-
this.
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
})
|
|
194
|
+
this.metrics?.runningQueries.update(this.queries)
|
|
195
|
+
|
|
196
|
+
if (stopQueryTimer != null) {
|
|
197
|
+
stopQueryTimer()
|
|
198
|
+
}
|
|
195
199
|
|
|
196
200
|
cleanUp.dispatchEvent(new CustomEvent('cleanup'))
|
|
197
201
|
log('query:done in %dms', Date.now() - startTime)
|
|
@@ -8,7 +8,7 @@ import type { PeerId } from '@libp2p/interface-peer-id'
|
|
|
8
8
|
import type { Startable } from '@libp2p/interfaces/startable'
|
|
9
9
|
import type { Logger } from '@libp2p/logger'
|
|
10
10
|
import { PeerSet } from '@libp2p/peer-collections'
|
|
11
|
-
import type { Metrics } from '@libp2p/interface-metrics'
|
|
11
|
+
import type { Metric, Metrics } from '@libp2p/interface-metrics'
|
|
12
12
|
import type { PeerStore } from '@libp2p/interface-peer-store'
|
|
13
13
|
import type { ConnectionManager } from '@libp2p/interface-connection-manager'
|
|
14
14
|
|
|
@@ -54,10 +54,6 @@ export interface KBucketTree {
|
|
|
54
54
|
toIterable: () => Iterable<KBucket>
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
const METRIC_ROUTING_TABLE_SIZE = 'routing-table-size'
|
|
58
|
-
const METRIC_PING_QUEUE_SIZE = 'ping-queue-size'
|
|
59
|
-
const METRIC_PING_RUNNING = 'ping-running'
|
|
60
|
-
|
|
61
57
|
export interface RoutingTableInit {
|
|
62
58
|
lan: boolean
|
|
63
59
|
protocol: string
|
|
@@ -93,6 +89,11 @@ export class RoutingTable implements Startable {
|
|
|
93
89
|
private readonly protocol: string
|
|
94
90
|
private readonly tagName: string
|
|
95
91
|
private readonly tagValue: number
|
|
92
|
+
private metrics?: {
|
|
93
|
+
routingTableSize: Metric
|
|
94
|
+
pingQueueSize: Metric
|
|
95
|
+
pingRunning: Metric
|
|
96
|
+
}
|
|
96
97
|
|
|
97
98
|
constructor (components: RoutingTableComponents, init: RoutingTableInit) {
|
|
98
99
|
const { kBucketSize, pingTimeout, lan, pingConcurrency, protocol, tagName, tagValue } = init
|
|
@@ -109,18 +110,8 @@ export class RoutingTable implements Startable {
|
|
|
109
110
|
this.tagValue = tagValue ?? KAD_CLOSE_TAG_VALUE
|
|
110
111
|
|
|
111
112
|
const updatePingQueueSizeMetric = () => {
|
|
112
|
-
this.
|
|
113
|
-
|
|
114
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
115
|
-
metric: METRIC_PING_QUEUE_SIZE,
|
|
116
|
-
value: this.pingQueue.size
|
|
117
|
-
})
|
|
118
|
-
this.components.metrics?.updateComponentMetric({
|
|
119
|
-
system: 'libp2p',
|
|
120
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
121
|
-
metric: METRIC_PING_RUNNING,
|
|
122
|
-
value: this.pingQueue.pending
|
|
123
|
-
})
|
|
113
|
+
this.metrics?.pingQueueSize.update(this.pingQueue.size)
|
|
114
|
+
this.metrics?.pingRunning.update(this.pingQueue.pending)
|
|
124
115
|
}
|
|
125
116
|
|
|
126
117
|
this.pingQueue = new Queue({ concurrency: this.pingConcurrency })
|
|
@@ -137,6 +128,14 @@ export class RoutingTable implements Startable {
|
|
|
137
128
|
async start () {
|
|
138
129
|
this.running = true
|
|
139
130
|
|
|
131
|
+
if (this.components.metrics != null) {
|
|
132
|
+
this.metrics = {
|
|
133
|
+
routingTableSize: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_routing_table_size`),
|
|
134
|
+
pingQueueSize: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_ping_queue_size`),
|
|
135
|
+
pingRunning: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_ping_running`)
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
140
139
|
const kBuck: KBucketTree = new KBuck({
|
|
141
140
|
localNodeId: await utils.convertPeerId(this.components.peerId),
|
|
142
141
|
numberOfNodesPerKBucket: this.kBucketSize,
|
|
@@ -250,12 +249,7 @@ export class RoutingTable implements Startable {
|
|
|
250
249
|
timeoutController.clear()
|
|
251
250
|
}
|
|
252
251
|
|
|
253
|
-
this.
|
|
254
|
-
system: 'libp2p',
|
|
255
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
256
|
-
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
257
|
-
value: this.size
|
|
258
|
-
})
|
|
252
|
+
this.metrics?.routingTableSize.update(this.size)
|
|
259
253
|
}
|
|
260
254
|
})
|
|
261
255
|
)
|
|
@@ -340,12 +334,7 @@ export class RoutingTable implements Startable {
|
|
|
340
334
|
|
|
341
335
|
this.log('added %p with kad id %b', peer, id)
|
|
342
336
|
|
|
343
|
-
this.
|
|
344
|
-
system: 'libp2p',
|
|
345
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
346
|
-
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
347
|
-
value: this.size
|
|
348
|
-
})
|
|
337
|
+
this.metrics?.routingTableSize.update(this.size)
|
|
349
338
|
}
|
|
350
339
|
|
|
351
340
|
/**
|
|
@@ -360,11 +349,6 @@ export class RoutingTable implements Startable {
|
|
|
360
349
|
|
|
361
350
|
this.kb.remove(id)
|
|
362
351
|
|
|
363
|
-
this.
|
|
364
|
-
system: 'libp2p',
|
|
365
|
-
component: `kad-dht-${this.lan ? 'lan' : 'wan'}`,
|
|
366
|
-
metric: METRIC_ROUTING_TABLE_SIZE,
|
|
367
|
-
value: this.size
|
|
368
|
-
})
|
|
352
|
+
this.metrics?.routingTableSize.update(this.size)
|
|
369
353
|
}
|
|
370
354
|
}
|