@helia/bitswap 0.0.0-b67ac5f → 0.0.0-ba4b7ba
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/index.min.js +1 -1
- package/dist/src/bitswap.d.ts.map +1 -1
- package/dist/src/bitswap.js +1 -4
- package/dist/src/bitswap.js.map +1 -1
- package/dist/src/network.d.ts +4 -3
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +27 -19
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-want-lists/index.d.ts +2 -2
- package/dist/src/peer-want-lists/index.d.ts.map +1 -1
- package/dist/src/peer-want-lists/index.js +1 -1
- package/dist/src/peer-want-lists/index.js.map +1 -1
- package/dist/src/session.d.ts.map +1 -1
- package/dist/src/session.js +0 -4
- package/dist/src/session.js.map +1 -1
- package/dist/src/stats.d.ts +2 -2
- package/dist/src/stats.d.ts.map +1 -1
- package/dist/src/stats.js +4 -4
- package/dist/src/stats.js.map +1 -1
- package/dist/src/want-list.d.ts +13 -15
- package/dist/src/want-list.d.ts.map +1 -1
- package/dist/src/want-list.js +102 -106
- package/dist/src/want-list.js.map +1 -1
- package/package.json +2 -2
- package/src/bitswap.ts +1 -4
- package/src/network.ts +33 -23
- package/src/peer-want-lists/index.ts +3 -3
- package/src/session.ts +0 -5
- package/src/stats.ts +6 -6
- package/src/want-list.ts +167 -173
package/dist/src/want-list.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbortError } from '@libp2p/interface';
|
|
2
2
|
import { trackedPeerMap, PeerSet } from '@libp2p/peer-collections';
|
|
3
3
|
import { trackedMap } from '@libp2p/utils/tracked-map';
|
|
4
4
|
import all from 'it-all';
|
|
@@ -8,13 +8,11 @@ import { pipe } from 'it-pipe';
|
|
|
8
8
|
import { CID } from 'multiformats/cid';
|
|
9
9
|
import { sha256 } from 'multiformats/hashes/sha2';
|
|
10
10
|
import pDefer from 'p-defer';
|
|
11
|
-
import { raceEvent } from 'race-event';
|
|
12
|
-
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
13
11
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
14
12
|
import { DEFAULT_MESSAGE_SEND_DELAY } from './constants.js';
|
|
15
13
|
import { BlockPresenceType, WantType } from './pb/message.js';
|
|
16
14
|
import vd from './utils/varint-decoder.js';
|
|
17
|
-
export class WantList
|
|
15
|
+
export class WantList {
|
|
18
16
|
/**
|
|
19
17
|
* Tracks what CIDs we've previously sent to which peers
|
|
20
18
|
*/
|
|
@@ -25,17 +23,14 @@ export class WantList extends TypedEventEmitter {
|
|
|
25
23
|
sendMessagesDelay;
|
|
26
24
|
sendMessagesTimeout;
|
|
27
25
|
hashLoader;
|
|
28
|
-
sendingMessages;
|
|
29
26
|
constructor(components, init = {}) {
|
|
30
|
-
super();
|
|
31
|
-
setMaxListeners(Infinity, this);
|
|
32
27
|
this.peers = trackedPeerMap({
|
|
33
28
|
name: 'ipfs_bitswap_peers',
|
|
34
|
-
metrics: components.
|
|
29
|
+
metrics: components.metrics
|
|
35
30
|
});
|
|
36
31
|
this.wants = trackedMap({
|
|
37
32
|
name: 'ipfs_bitswap_wantlist',
|
|
38
|
-
metrics: components.
|
|
33
|
+
metrics: components.metrics
|
|
39
34
|
});
|
|
40
35
|
this.network = components.network;
|
|
41
36
|
this.sendMessagesDelay = init.sendMessagesDelay ?? DEFAULT_MESSAGE_SEND_DELAY;
|
|
@@ -67,7 +62,9 @@ export class WantList extends TypedEventEmitter {
|
|
|
67
62
|
priority: options.priority ?? 1,
|
|
68
63
|
wantType: options.wantType ?? WantType.WantBlock,
|
|
69
64
|
cancel: false,
|
|
70
|
-
sendDontHave: true
|
|
65
|
+
sendDontHave: true,
|
|
66
|
+
blockWantListeners: [],
|
|
67
|
+
blockPresenceListeners: []
|
|
71
68
|
};
|
|
72
69
|
if (options.peerId != null) {
|
|
73
70
|
entry.session.add(options.peerId);
|
|
@@ -93,37 +90,25 @@ export class WantList extends TypedEventEmitter {
|
|
|
93
90
|
entry.session.clear();
|
|
94
91
|
}
|
|
95
92
|
}
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
filter: (event) => {
|
|
102
|
-
return uint8ArrayEquals(cid.multihash.digest, event.detail.cid.multihash.digest);
|
|
103
|
-
},
|
|
104
|
-
errorMessage: 'Want was aborted'
|
|
105
|
-
});
|
|
106
|
-
return event.detail;
|
|
107
|
-
}
|
|
108
|
-
const event = await raceEvent(this, 'presence', options?.signal, {
|
|
109
|
-
filter: (event) => {
|
|
110
|
-
return uint8ArrayEquals(cid.multihash.digest, event.detail.cid.multihash.digest);
|
|
111
|
-
},
|
|
112
|
-
errorMessage: 'Want was aborted'
|
|
113
|
-
});
|
|
114
|
-
return event.detail;
|
|
93
|
+
// add a promise that will be resolved or rejected when the response arrives
|
|
94
|
+
let deferred;
|
|
95
|
+
if (options.wantType === WantType.WantBlock) {
|
|
96
|
+
const p = deferred = pDefer();
|
|
97
|
+
entry.blockWantListeners.push(p);
|
|
115
98
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
99
|
+
else {
|
|
100
|
+
const p = deferred = pDefer();
|
|
101
|
+
entry.blockPresenceListeners.push(p);
|
|
102
|
+
}
|
|
103
|
+
// reject the promise if the want is rejected
|
|
104
|
+
const abortListener = () => {
|
|
105
|
+
this.log('want for %c was aborted, cancelling want', cid);
|
|
106
|
+
if (entry != null) {
|
|
119
107
|
entry.cancel = true;
|
|
120
|
-
// broadcast changes
|
|
121
|
-
await this.sendMessagesDebounced();
|
|
122
108
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
await this.sendingMessages?.promise;
|
|
109
|
+
deferred.reject(new AbortError('Want was aborted'));
|
|
110
|
+
};
|
|
111
|
+
options.signal?.addEventListener('abort', abortListener);
|
|
127
112
|
// broadcast changes
|
|
128
113
|
clearTimeout(this.sendMessagesTimeout);
|
|
129
114
|
this.sendMessagesTimeout = setTimeout(() => {
|
|
@@ -132,10 +117,23 @@ export class WantList extends TypedEventEmitter {
|
|
|
132
117
|
this.log('error sending messages to peers', err);
|
|
133
118
|
});
|
|
134
119
|
}, this.sendMessagesDelay);
|
|
120
|
+
try {
|
|
121
|
+
return await deferred.promise;
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
// remove listener
|
|
125
|
+
options.signal?.removeEventListener('abort', abortListener);
|
|
126
|
+
// remove deferred promise
|
|
127
|
+
if (options.wantType === WantType.WantBlock) {
|
|
128
|
+
entry.blockWantListeners = entry.blockWantListeners.filter(recipient => recipient !== deferred);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
entry.blockPresenceListeners = entry.blockPresenceListeners.filter(recipient => recipient !== deferred);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
135
134
|
}
|
|
136
135
|
async sendMessages() {
|
|
137
|
-
this.
|
|
138
|
-
await Promise.all([...this.peers.entries()].map(async ([peerId, sentWants]) => {
|
|
136
|
+
for (const [peerId, sentWants] of this.peers) {
|
|
139
137
|
const sent = new Set();
|
|
140
138
|
const message = {
|
|
141
139
|
wantlist: {
|
|
@@ -178,9 +176,7 @@ export class WantList extends TypedEventEmitter {
|
|
|
178
176
|
catch (err) {
|
|
179
177
|
this.log.error('error sending full wantlist to new peer', err);
|
|
180
178
|
}
|
|
181
|
-
}
|
|
182
|
-
this.log.error('error sending messages', err);
|
|
183
|
-
});
|
|
179
|
+
}
|
|
184
180
|
// queued all message sends, remove cancelled wants from wantlist and sent
|
|
185
181
|
// wants
|
|
186
182
|
for (const [key, entry] of this.wants) {
|
|
@@ -191,7 +187,6 @@ export class WantList extends TypedEventEmitter {
|
|
|
191
187
|
}
|
|
192
188
|
}
|
|
193
189
|
}
|
|
194
|
-
this.sendingMessages.resolve();
|
|
195
190
|
}
|
|
196
191
|
has(cid) {
|
|
197
192
|
const cidStr = uint8ArrayToString(cid.multihash.bytes, 'base64');
|
|
@@ -201,27 +196,29 @@ export class WantList extends TypedEventEmitter {
|
|
|
201
196
|
* Add a CID to the wantlist
|
|
202
197
|
*/
|
|
203
198
|
async wantPresence(cid, options = {}) {
|
|
204
|
-
if (options.peerId != null) {
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
199
|
+
if (options.peerId != null && this.peers.get(options.peerId) == null) {
|
|
200
|
+
const cidStr = uint8ArrayToString(cid.multihash.bytes, 'base64');
|
|
201
|
+
try {
|
|
202
|
+
// if we don't have them as a peer, add them
|
|
203
|
+
this.peers.set(options.peerId, new Set([cidStr]));
|
|
204
|
+
// sending WantHave directly to peer
|
|
205
|
+
await this.network.sendMessage(options.peerId, {
|
|
206
|
+
wantlist: {
|
|
207
|
+
full: false,
|
|
208
|
+
entries: [{
|
|
209
|
+
cid: cid.bytes,
|
|
210
|
+
sendDontHave: true,
|
|
211
|
+
wantType: WantType.WantHave,
|
|
212
|
+
priority: 1
|
|
213
|
+
}]
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
// sending failed, remove them as a peer
|
|
219
|
+
this.peers.delete(options.peerId);
|
|
220
|
+
throw err;
|
|
221
|
+
}
|
|
225
222
|
}
|
|
226
223
|
return this.addEntry(cid, {
|
|
227
224
|
...options,
|
|
@@ -237,29 +234,20 @@ export class WantList extends TypedEventEmitter {
|
|
|
237
234
|
wantType: WantType.WantBlock
|
|
238
235
|
});
|
|
239
236
|
}
|
|
240
|
-
/**
|
|
241
|
-
* Invoked when a block has been received from an external source
|
|
242
|
-
*/
|
|
243
|
-
async receivedBlock(cid, options) {
|
|
244
|
-
const cidStr = uint8ArrayToString(cid.multihash.bytes, 'base64');
|
|
245
|
-
const entry = this.wants.get(cidStr);
|
|
246
|
-
if (entry == null) {
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
entry.cancel = true;
|
|
250
|
-
await this.sendMessagesDebounced();
|
|
251
|
-
}
|
|
252
237
|
/**
|
|
253
238
|
* Invoked when a message is received from a bitswap peer
|
|
254
239
|
*/
|
|
255
240
|
async receiveMessage(sender, message) {
|
|
256
241
|
this.log('received message from %p', sender);
|
|
257
|
-
|
|
242
|
+
// blocks received
|
|
243
|
+
const blockResults = [];
|
|
244
|
+
const presenceResults = [];
|
|
258
245
|
// process blocks
|
|
259
246
|
for (const block of message.blocks) {
|
|
260
247
|
if (block.prefix == null || block.data == null) {
|
|
261
248
|
continue;
|
|
262
249
|
}
|
|
250
|
+
this.log('received block');
|
|
263
251
|
const values = vd(block.prefix);
|
|
264
252
|
const cidVersion = values[0];
|
|
265
253
|
const multicodec = values[1];
|
|
@@ -273,47 +261,55 @@ export class WantList extends TypedEventEmitter {
|
|
|
273
261
|
const hash = await hasher.digest(block.data);
|
|
274
262
|
const cid = CID.create(cidVersion === 0 ? 0 : 1, multicodec, hash);
|
|
275
263
|
this.log('received block from %p for %c', sender, cid);
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
block: block.data
|
|
281
|
-
}
|
|
264
|
+
blockResults.push({
|
|
265
|
+
sender,
|
|
266
|
+
cid,
|
|
267
|
+
block: block.data
|
|
282
268
|
});
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
has: true,
|
|
288
|
-
block: block.data
|
|
289
|
-
}
|
|
269
|
+
presenceResults.push({
|
|
270
|
+
sender,
|
|
271
|
+
cid,
|
|
272
|
+
has: true
|
|
290
273
|
});
|
|
291
|
-
|
|
274
|
+
}
|
|
275
|
+
// process block presences
|
|
276
|
+
for (const { cid: cidBytes, type } of message.blockPresences) {
|
|
277
|
+
const cid = CID.decode(cidBytes);
|
|
278
|
+
this.log('received %s from %p for %c', type, sender, cid);
|
|
279
|
+
presenceResults.push({
|
|
280
|
+
sender,
|
|
281
|
+
cid,
|
|
282
|
+
has: type === BlockPresenceType.HaveBlock
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
for (const result of blockResults) {
|
|
286
|
+
const cidStr = uint8ArrayToString(result.cid.multihash.bytes, 'base64');
|
|
292
287
|
const entry = this.wants.get(cidStr);
|
|
293
288
|
if (entry == null) {
|
|
294
289
|
return;
|
|
295
290
|
}
|
|
291
|
+
const recipients = entry.blockWantListeners;
|
|
292
|
+
entry.blockWantListeners = [];
|
|
293
|
+
recipients.forEach((p) => {
|
|
294
|
+
p.resolve(result);
|
|
295
|
+
});
|
|
296
296
|
// since we received the block, flip the cancel flag to send cancels to
|
|
297
297
|
// any peers on the next message sending iteration, this will remove it
|
|
298
298
|
// from the internal want list
|
|
299
299
|
entry.cancel = true;
|
|
300
|
-
blocksCancelled = true;
|
|
301
300
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
301
|
+
for (const result of presenceResults) {
|
|
302
|
+
const cidStr = uint8ArrayToString(result.cid.multihash.bytes, 'base64');
|
|
303
|
+
const entry = this.wants.get(cidStr);
|
|
304
|
+
if (entry == null) {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
const recipients = entry.blockPresenceListeners;
|
|
308
|
+
entry.blockPresenceListeners = [];
|
|
309
|
+
recipients.forEach((p) => {
|
|
310
|
+
p.resolve(result);
|
|
312
311
|
});
|
|
313
312
|
}
|
|
314
|
-
if (blocksCancelled) {
|
|
315
|
-
await this.sendMessagesDebounced();
|
|
316
|
-
}
|
|
317
313
|
}
|
|
318
314
|
/**
|
|
319
315
|
* Invoked when the network topology notices a new peer that supports Bitswap
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"want-list.js","sourceRoot":"","sources":["../../src/want-list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"want-list.js","sourceRoot":"","sources":["../../src/want-list.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/bitswap",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-ba4b7ba",
|
|
4
4
|
"description": "JavaScript implementation of the Bitswap data exchange protocol used by Helia",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/main/packages/bitswap#readme",
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"docs": "aegir docs"
|
|
149
149
|
},
|
|
150
150
|
"dependencies": {
|
|
151
|
-
"@helia/interface": "4.1.0-
|
|
151
|
+
"@helia/interface": "4.1.0-ba4b7ba",
|
|
152
152
|
"@libp2p/interface": "^1.1.2",
|
|
153
153
|
"@libp2p/logger": "^4.0.5",
|
|
154
154
|
"@libp2p/peer-collections": "^5.1.6",
|
package/src/bitswap.ts
CHANGED
|
@@ -117,10 +117,7 @@ export class Bitswap implements BitswapInterface {
|
|
|
117
117
|
* Sends notifications about the arrival of a block
|
|
118
118
|
*/
|
|
119
119
|
async notify (cid: CID, block: Uint8Array, options: ProgressOptions<BitswapNotifyProgressEvents> & AbortOptions = {}): Promise<void> {
|
|
120
|
-
await
|
|
121
|
-
this.peerWantLists.receivedBlock(cid, options),
|
|
122
|
-
this.wantList.receivedBlock(cid, options)
|
|
123
|
-
])
|
|
120
|
+
await this.peerWantLists.receivedBlock(cid, options)
|
|
124
121
|
}
|
|
125
122
|
|
|
126
123
|
getWantlist (): WantListEntry[] {
|
package/src/network.ts
CHANGED
|
@@ -14,13 +14,13 @@ import { CID } from 'multiformats/cid'
|
|
|
14
14
|
import { CustomProgressEvent } from 'progress-events'
|
|
15
15
|
import { raceEvent } from 'race-event'
|
|
16
16
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
|
17
|
-
import { BITSWAP_120, DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_OUTBOUND_STREAMS, DEFAULT_MAX_PROVIDERS_PER_REQUEST, DEFAULT_MESSAGE_RECEIVE_TIMEOUT,
|
|
17
|
+
import { BITSWAP_120, DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_OUTBOUND_STREAMS, DEFAULT_MAX_PROVIDERS_PER_REQUEST, DEFAULT_MESSAGE_RECEIVE_TIMEOUT, DEFAULT_MESSAGE_SEND_TIMEOUT, DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS } from './constants.js'
|
|
18
18
|
import { BitswapMessage } from './pb/message.js'
|
|
19
19
|
import type { WantOptions } from './bitswap.js'
|
|
20
20
|
import type { MultihashHasherLoader } from './index.js'
|
|
21
21
|
import type { Block, BlockPresence, WantlistEntry } from './pb/message.js'
|
|
22
22
|
import type { Provider, Routing } from '@helia/interface/routing'
|
|
23
|
-
import type { Libp2p, AbortOptions, Connection, PeerId, IncomingStreamData, Topology, ComponentLogger,
|
|
23
|
+
import type { Libp2p, AbortOptions, Connection, PeerId, IncomingStreamData, Topology, MetricGroup, ComponentLogger, Metrics, IdentifyResult } from '@libp2p/interface'
|
|
24
24
|
import type { Logger } from '@libp2p/logger'
|
|
25
25
|
import type { ProgressEvent, ProgressOptions } from 'progress-events'
|
|
26
26
|
|
|
@@ -79,6 +79,7 @@ export interface NetworkComponents {
|
|
|
79
79
|
routing: Routing
|
|
80
80
|
logger: ComponentLogger
|
|
81
81
|
libp2p: Libp2p
|
|
82
|
+
metrics?: Metrics
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
export interface BitswapMessageEventDetail {
|
|
@@ -106,7 +107,7 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
106
107
|
private readonly maxOutboundStreams: number
|
|
107
108
|
private readonly messageReceiveTimeout: number
|
|
108
109
|
private registrarIds: string[]
|
|
109
|
-
private readonly metrics
|
|
110
|
+
private readonly metrics?: { blocksSent: MetricGroup, dataSent: MetricGroup }
|
|
110
111
|
private readonly sendQueue: PeerQueue<void, SendMessageJobOptions>
|
|
111
112
|
private readonly messageSendTimeout: number
|
|
112
113
|
private readonly runOnTransientConnections: boolean
|
|
@@ -128,14 +129,17 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
128
129
|
this.messageReceiveTimeout = init.messageReceiveTimeout ?? DEFAULT_MESSAGE_RECEIVE_TIMEOUT
|
|
129
130
|
this.messageSendTimeout = init.messageSendTimeout ?? DEFAULT_MESSAGE_SEND_TIMEOUT
|
|
130
131
|
this.runOnTransientConnections = init.runOnTransientConnections ?? DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
|
|
133
|
+
if (components.metrics != null) {
|
|
134
|
+
this.metrics = {
|
|
135
|
+
blocksSent: components.metrics?.registerMetricGroup('ipfs_bitswap_sent_blocks'),
|
|
136
|
+
dataSent: components.metrics?.registerMetricGroup('ipfs_bitswap_sent_data_bytes')
|
|
137
|
+
}
|
|
134
138
|
}
|
|
135
139
|
|
|
136
140
|
this.sendQueue = new PeerQueue({
|
|
137
|
-
concurrency: init.messageSendConcurrency
|
|
138
|
-
metrics: components.
|
|
141
|
+
concurrency: init.messageSendConcurrency,
|
|
142
|
+
metrics: components.metrics,
|
|
139
143
|
metricName: 'ipfs_bitswap_message_send_queue'
|
|
140
144
|
})
|
|
141
145
|
this.sendQueue.addEventListener('error', (evt) => {
|
|
@@ -298,9 +302,9 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
298
302
|
*/
|
|
299
303
|
async findAndConnect (cid: CID, options?: WantOptions): Promise<void> {
|
|
300
304
|
await drain(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
305
|
+
take(
|
|
306
|
+
map(this.findProviders(cid, options), async provider => this.connectTo(provider.id, options)),
|
|
307
|
+
options?.maxProviders ?? DEFAULT_MAX_PROVIDERS_PER_REQUEST
|
|
304
308
|
)
|
|
305
309
|
)
|
|
306
310
|
.catch(err => {
|
|
@@ -331,11 +335,9 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
331
335
|
setMaxListeners(Infinity, signal)
|
|
332
336
|
|
|
333
337
|
try {
|
|
334
|
-
const existingJob = this.sendQueue.
|
|
335
|
-
return peerId.equals(job.options.peerId) && job.status === 'queued'
|
|
336
|
-
})
|
|
338
|
+
const existingJob = this.sendQueue.find(peerId)
|
|
337
339
|
|
|
338
|
-
if (existingJob
|
|
340
|
+
if (existingJob?.status === 'queued') {
|
|
339
341
|
// merge messages instead of adding new job
|
|
340
342
|
existingJob.options.message = mergeMessages(existingJob.options.message, message)
|
|
341
343
|
|
|
@@ -369,7 +371,7 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
369
371
|
stream.abort(err)
|
|
370
372
|
}
|
|
371
373
|
|
|
372
|
-
this._updateSentStats(message.blocks)
|
|
374
|
+
this._updateSentStats(peerId, message.blocks)
|
|
373
375
|
}, {
|
|
374
376
|
peerId,
|
|
375
377
|
signal,
|
|
@@ -415,15 +417,23 @@ export class Network extends TypedEventEmitter<NetworkEvents> {
|
|
|
415
417
|
return connection
|
|
416
418
|
}
|
|
417
419
|
|
|
418
|
-
_updateSentStats (blocks: Block[] = []): void {
|
|
419
|
-
|
|
420
|
+
_updateSentStats (peerId: PeerId, blocks: Block[] = []): void {
|
|
421
|
+
if (this.metrics != null) {
|
|
422
|
+
let bytes = 0
|
|
420
423
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
+
for (const block of blocks.values()) {
|
|
425
|
+
bytes += block.data.byteLength
|
|
426
|
+
}
|
|
424
427
|
|
|
425
|
-
|
|
426
|
-
|
|
428
|
+
this.metrics.dataSent.increment({
|
|
429
|
+
global: bytes,
|
|
430
|
+
[peerId.toString()]: bytes
|
|
431
|
+
})
|
|
432
|
+
this.metrics.blocksSent.increment({
|
|
433
|
+
global: blocks.length,
|
|
434
|
+
[peerId.toString()]: blocks.length
|
|
435
|
+
})
|
|
436
|
+
}
|
|
427
437
|
}
|
|
428
438
|
}
|
|
429
439
|
|
|
@@ -6,7 +6,7 @@ import { Ledger } from './ledger.js'
|
|
|
6
6
|
import type { BitswapNotifyProgressEvents, WantListEntry } from '../index.js'
|
|
7
7
|
import type { Network } from '../network.js'
|
|
8
8
|
import type { BitswapMessage } from '../pb/message.js'
|
|
9
|
-
import type { ComponentLogger,
|
|
9
|
+
import type { ComponentLogger, Logger, Metrics, PeerId } from '@libp2p/interface'
|
|
10
10
|
import type { PeerMap } from '@libp2p/peer-collections'
|
|
11
11
|
import type { Blockstore } from 'interface-blockstore'
|
|
12
12
|
import type { AbortOptions } from 'it-length-prefixed-stream'
|
|
@@ -19,7 +19,7 @@ export interface PeerWantListsInit {
|
|
|
19
19
|
export interface PeerWantListsComponents {
|
|
20
20
|
blockstore: Blockstore
|
|
21
21
|
network: Network
|
|
22
|
-
|
|
22
|
+
metrics?: Metrics
|
|
23
23
|
logger: ComponentLogger
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -46,7 +46,7 @@ export class PeerWantLists {
|
|
|
46
46
|
|
|
47
47
|
this.ledgerMap = trackedPeerMap({
|
|
48
48
|
name: 'ipfs_bitswap_ledger_map',
|
|
49
|
-
metrics: components.
|
|
49
|
+
metrics: components.metrics
|
|
50
50
|
})
|
|
51
51
|
|
|
52
52
|
this.network.addEventListener('bitswap:message', (evt) => {
|
package/src/session.ts
CHANGED
|
@@ -89,11 +89,6 @@ class BitswapSession implements BitswapSessionInterface {
|
|
|
89
89
|
void Promise.resolve()
|
|
90
90
|
.then(async () => {
|
|
91
91
|
for await (const peerId of source) {
|
|
92
|
-
if (found === this.maxProviders) {
|
|
93
|
-
this.queue.clear()
|
|
94
|
-
break
|
|
95
|
-
}
|
|
96
|
-
|
|
97
92
|
// eslint-disable-next-line no-loop-func
|
|
98
93
|
await this.queue.add(async () => {
|
|
99
94
|
try {
|
package/src/stats.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MetricGroup, Metrics, PeerId } from '@libp2p/interface'
|
|
2
2
|
|
|
3
3
|
export interface StatsComponents {
|
|
4
|
-
|
|
4
|
+
metrics?: Metrics
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
export class Stats {
|
|
@@ -11,10 +11,10 @@ export class Stats {
|
|
|
11
11
|
private readonly duplicateDataReceived?: MetricGroup
|
|
12
12
|
|
|
13
13
|
constructor (components: StatsComponents) {
|
|
14
|
-
this.blocksReceived = components.
|
|
15
|
-
this.duplicateBlocksReceived = components.
|
|
16
|
-
this.dataReceived = components.
|
|
17
|
-
this.duplicateDataReceived = components.
|
|
14
|
+
this.blocksReceived = components.metrics?.registerMetricGroup('ipfs_bitswap_received_blocks')
|
|
15
|
+
this.duplicateBlocksReceived = components.metrics?.registerMetricGroup('ipfs_bitswap_duplicate_received_blocks')
|
|
16
|
+
this.dataReceived = components.metrics?.registerMetricGroup('ipfs_bitswap_data_received_bytes')
|
|
17
|
+
this.duplicateDataReceived = components.metrics?.registerMetricGroup('ipfs_bitswap_duplicate_data_received_bytes')
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
updateBlocksReceived (count: number = 1, peerId?: PeerId): void {
|