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

Commit 194c701

Browse files
authored
chore: use new peer store api (#179)
BREAKING CHANGE: uses new peer-store api
1 parent 6456cc8 commit 194c701

15 files changed

+51
-60
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,14 @@
7676
"delay": "^4.3.0",
7777
"dirty-chai": "^2.0.1",
7878
"it-pair": "^1.0.0",
79+
"libp2p": "libp2p/js-libp2p#chore/deprecate-old-peer-store-api",
7980
"lodash": "^4.17.11",
8081
"lodash.random": "^3.2.0",
8182
"lodash.range": "^3.2.0",
8283
"p-defer": "^3.0.0",
8384
"p-each-series": "^2.1.0",
8485
"p-map-series": "^2.1.0",
8586
"p-retry": "^4.2.0",
86-
"peer-book": "~0.9.2",
8787
"sinon": "^9.0.0"
8888
},
8989
"contributors": [

src/content-routing/index.js

+2-7
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,7 @@ module.exports = (dht) => {
8080
const provs = await dht.providers.getProviders(key)
8181

8282
provs.forEach((id) => {
83-
let info
84-
if (dht.peerStore.has(id)) {
85-
info = dht.peerStore.get(id)
86-
} else {
87-
info = dht.peerStore.put(new PeerInfo(id))
88-
}
83+
const info = dht.peerStore.get(id) || new PeerInfo(id)
8984
out.push(info)
9085
})
9186

@@ -113,7 +108,7 @@ module.exports = (dht) => {
113108
dht._log('(%s) found %s provider entries', dht.peerInfo.id.toB58String(), provs.length)
114109

115110
provs.forEach((prov) => {
116-
pathProviders.push(dht.peerStore.put(prov))
111+
pathProviders.push(prov)
117112
})
118113

119114
// hooray we have all that we want

src/index.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -321,14 +321,18 @@ class KadDHT extends EventEmitter {
321321
*/
322322
async _nearestPeersToQuery (msg) {
323323
const key = await utils.convertBuffer(msg.key)
324-
325324
const ids = this.routingTable.closestPeers(key, this.kBucketSize)
326325

327326
return ids.map((p) => {
328-
if (this.peerStore.has(p)) {
329-
return this.peerStore.get(p)
327+
const peer = this.peerStore.get(p)
328+
const peerInfo = new PeerInfo(p)
329+
330+
if (peer) {
331+
peer.protocols.forEach((p) => peerInfo.protocols.add(p))
332+
peer.multiaddrInfos.forEach((mi) => peerInfo.multiaddrs.add(mi.multiaddr))
330333
}
331-
return this.peerStore.put(new PeerInfo(p))
334+
335+
return peerInfo
332336
})
333337
}
334338

src/peer-routing/index.js

+20-22
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const errcode = require('err-code')
44
const pTimeout = require('p-timeout')
55

66
const PeerId = require('peer-id')
7-
const PeerInfo = require('peer-info')
87
const crypto = require('libp2p-crypto')
98

109
const c = require('../constants')
@@ -24,11 +23,7 @@ module.exports = (dht) => {
2423
dht._log('findPeerLocal %s', peer.toB58String())
2524
const p = await dht.routingTable.find(peer)
2625

27-
if (!p || !dht.peerStore.has(p)) {
28-
return
29-
}
30-
31-
return dht.peerStore.get(p)
26+
return p && dht.peerStore.get(p)
3227
}
3328

3429
/**
@@ -57,7 +52,12 @@ module.exports = (dht) => {
5752

5853
return msg.closerPeers
5954
.filter((pInfo) => !dht._isSelf(pInfo.id))
60-
.map((pInfo) => dht.peerStore.put(pInfo))
55+
.map((pInfo) => {
56+
// Add known address to peer store
57+
dht.peerStore.addressBook.add(pInfo.id, pInfo.multiaddrs.toArray())
58+
59+
return pInfo
60+
})
6161
}
6262

6363
/**
@@ -128,9 +128,13 @@ module.exports = (dht) => {
128128

129129
// sanity check
130130
const match = peers.find((p) => p.isEqual(id))
131-
if (match && dht.peerStore.has(id)) {
132-
dht._log('found in peerStore')
133-
return dht.peerStore.get(id)
131+
if (match) {
132+
const peer = dht.peerStore.get(id)
133+
134+
if (peer) {
135+
dht._log('found in peerStore')
136+
return peer
137+
}
134138
}
135139

136140
// query the network
@@ -169,7 +173,7 @@ module.exports = (dht) => {
169173
result.paths.forEach((result) => {
170174
if (result.success) {
171175
success = true
172-
dht.peerStore.put(result.peer)
176+
dht.peerStore.addressBook.add(result.peer.id, result.peer.multiaddrs.toArray())
173177
}
174178
})
175179
dht._log('findPeer %s: %s', id.toB58String(), success)
@@ -228,16 +232,10 @@ module.exports = (dht) => {
228232
dht._log('getPublicKey %s', peer.toB58String())
229233

230234
// local check
231-
let info
232-
if (dht.peerStore.has(peer)) {
233-
info = dht.peerStore.get(peer)
234-
235-
if (info && info.id.pubKey) {
236-
dht._log('getPublicKey: found local copy')
237-
return info.id.pubKey
238-
}
239-
} else {
240-
info = dht.peerStore.put(new PeerInfo(peer))
235+
const info = dht.peerStore.get(peer)
236+
if (info && info.id.pubKey) {
237+
dht._log('getPublicKey: found local copy')
238+
return info.id.pubKey
241239
}
242240

243241
// try the node directly
@@ -252,7 +250,7 @@ module.exports = (dht) => {
252250
}
253251

254252
info.id = new PeerId(peer.id, null, pk)
255-
dht.peerStore.put(info)
253+
dht.peerStore.addressBook.add(info.id, info.multiaddrs.toArray())
256254

257255
return pk
258256
}

src/query/workerQueue.js

-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ class WorkerQueue {
244244
if (this.dht._isSelf(closer.id)) {
245245
return
246246
}
247-
closer = this.dht.peerStore.put(closer)
248247
this.dht._peerDiscovered(closer)
249248
await this.path.addPeerToQuery(closer.id)
250249
}))

src/rpc/handlers/add-provider.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ module.exports = (dht) => {
4444
log('received provider %s for %s (addrs %s)', peer.id.toB58String(), cid.toBaseEncodedString(), pi.multiaddrs.toArray().map((m) => m.toString()))
4545

4646
if (!dht._isSelf(pi.id)) {
47-
dht.peerStore.put(pi)
47+
// Add known address to peer store
48+
dht.peerStore.addressBook.add(pi.id, pi.multiaddrs.toArray())
4849
return dht.providers.addProvider(cid, pi.id)
4950
}
5051
})

src/rpc/handlers/get-providers.js

+1-7
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,7 @@ module.exports = (dht) => {
3434
dht._betterPeersToQuery(msg, peer)
3535
])
3636

37-
const providers = peers.map((p) => {
38-
if (dht.peerStore.has(p)) {
39-
return dht.peerStore.get(p)
40-
}
41-
42-
return dht.peerStore.put(new PeerInfo(p))
43-
})
37+
const providers = peers.map((p) => new PeerInfo(p))
4438

4539
if (has) {
4640
providers.push(dht.peerInfo)

src/rpc/handlers/get-value.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ module.exports = (dht) => {
3535

3636
if (dht._isSelf(id)) {
3737
info = dht.peerInfo
38-
} else if (dht.peerStore.has(id)) {
38+
} else {
3939
info = dht.peerStore.get(id)
4040
}
4141

test/kad-dht.spec.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ describe('KadDHT', () => {
648648
const dhts = await tdht.spawn(2)
649649

650650
const ids = dhts.map((d) => d.peerInfo.id)
651-
dhts[0].peerStore.put(dhts[1].peerInfo)
651+
dhts[0].peerStore.addressBook.add(dhts[1].peerInfo.id, dhts[1].peerInfo.multiaddrs.toArray())
652652

653653
const key = await dhts[0].getPublicKey(ids[1])
654654
expect(key).to.eql(dhts[1].peerInfo.id.pubKey)
@@ -671,7 +671,7 @@ describe('KadDHT', () => {
671671
await tdht.connect(dhts[0], dhts[1])
672672

673673
// remove the pub key to be sure it is fetched
674-
dhts[0].peerStore.put(dhts[1].peerInfo, true)
674+
dhts[0].peerStore.addressBook.add(dhts[1].peerInfo.id, dhts[1].peerInfo.multiaddrs.toArray())
675675

676676
const key = await dhts[0].getPublicKey(ids[1])
677677
expect(key.equals(dhts[1].peerInfo.id.pubKey)).to.eql(true)
@@ -694,7 +694,7 @@ describe('KadDHT', () => {
694694
it('_nearestPeersToQuery', async () => {
695695
const [dht] = await tdht.spawn(1)
696696

697-
dht.peerStore.put(peerInfos[1])
697+
dht.peerStore.addressBook.add(peerInfos[1].id, peerInfos[1].multiaddrs.toArray())
698698
await dht._add(peerInfos[1])
699699
const res = await dht._nearestPeersToQuery({ key: 'hello' })
700700
expect(res).to.be.eql([peerInfos[1]])
@@ -703,8 +703,8 @@ describe('KadDHT', () => {
703703
it('_betterPeersToQuery', async () => {
704704
const [dht] = await tdht.spawn(1)
705705

706-
dht.peerStore.put(peerInfos[1])
707-
dht.peerStore.put(peerInfos[2])
706+
dht.peerStore.addressBook.add(peerInfos[1].id, peerInfos[1].multiaddrs.toArray())
707+
dht.peerStore.addressBook.add(peerInfos[2].id, peerInfos[2].multiaddrs.toArray())
708708

709709
await dht._add(peerInfos[1])
710710
await dht._add(peerInfos[2])
@@ -769,7 +769,7 @@ describe('KadDHT', () => {
769769
it('_verifyRecordLocally', async () => {
770770
const [dht] = await tdht.spawn(1)
771771

772-
dht.peerStore.put(peerInfos[1])
772+
dht.peerStore.addressBook.add(peerInfos[1].id, peerInfos[1].multiaddrs.toArray())
773773

774774
const record = new Record(
775775
Buffer.from('hello'),

test/query/index.spec.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ chai.use(require('chai-checkmark'))
88
const expect = chai.expect
99
const sinon = require('sinon')
1010
const delay = require('delay')
11-
const PeerBook = require('peer-book')
11+
const PeerStore = require('libp2p/src/peer-store')
1212

1313
const Query = require('../../src/query')
1414
const Path = require('../../src/query/path')
@@ -46,7 +46,7 @@ describe('Query', () => {
4646
})
4747

4848
before('create a dht', () => {
49-
const peerStore = new PeerBook()
49+
const peerStore = new PeerStore()
5050
dht = new DHT({
5151
dialer: {},
5252
peerStore,

test/rpc/handlers/add-provider.spec.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ describe('rpc - handlers - AddProvider', () => {
8383
const bookEntry = dht.peerStore.get(provider.id)
8484

8585
// Favour peerInfo from payload over peerInfo from sender
86-
expect(bookEntry.multiaddrs.toArray()).to.eql(
86+
expect(bookEntry.multiaddrInfos.map((mi) => mi.multiaddr)).to.eql(
8787
provider.multiaddrs.toArray()
8888
)
8989
})
@@ -100,7 +100,7 @@ describe('rpc - handlers - AddProvider', () => {
100100

101101
const provs = await dht.providers.getProviders(cid)
102102

103-
expect(dht.peerStore.has(provider.id)).to.equal(false)
103+
expect(dht.peerStore.get(provider.id)).to.equal(undefined)
104104
expect(provs).to.have.length(1)
105105
expect(provs[0].id).to.eql(provider.id.id)
106106
})

test/rpc/handlers/get-value.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ describe('rpc - handlers - GetValue', () => {
8787

8888
const msg = new Message(T, key, 0)
8989

90-
dht.peerStore.put(other)
90+
dht.peerStore.addressBook.add(other.id, other.multiaddrs.toArray())
9191
await dht._add(other)
9292
const response = await handler(dht)(peers[0], msg)
9393
expect(response.record).to.exist()

test/rpc/index.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ describe('rpc', () => {
2929
const defer = pDefer()
3030
const [dht] = await tdht.spawn(1)
3131

32-
dht.peerStore.put(peerInfos[1])
32+
dht.peerStore.addressBook.set(peerInfos[1].id, peerInfos[1].multiaddrs.toArray())
3333

3434
const msg = new Message(Message.TYPES.GET_VALUE, Buffer.from('hello'), 5)
3535

test/simulation/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/* eslint-disable no-console */
44

55
'use strict'
6-
const PeerBook = require('peer-book')
6+
const PeerStore = require('libp2p/src/peer-store')
77
const PeerId = require('peer-id')
88
const PeerInfo = require('peer-info')
99
const multihashes = require('multihashes')
@@ -85,7 +85,7 @@ async function setup () {
8585
async function GetClosestPeersSimulation () {
8686
const dht = new DHT({
8787
_peerInfo: ourPeerInfo,
88-
_peerBook: new PeerBook(),
88+
_peerBook: new PeerStore(),
8989
handle: () => {},
9090
on: () => {}
9191
}, {

test/utils/test-dht.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict'
22

3-
const PeerBook = require('peer-book')
3+
const PeerStore = require('libp2p/src/peer-store')
44
const pRetry = require('p-retry')
55
const delay = require('delay')
66

@@ -27,7 +27,7 @@ class TestDHT {
2727

2828
async _spawnOne (index, options = {}) {
2929
const regRecord = {}
30-
const peerStore = new PeerBook()
30+
const peerStore = new PeerStore()
3131

3232
// Disable random walk by default for more controlled testing
3333
options = {

0 commit comments

Comments
 (0)