@cryptotaxi247 / kubo / commits / 17ce192af

dht: some provider debug logging

Juan Batiz-Benet committed Jan 3, 2015 at 00:56 UTC 17ce192af532ccdd1e9be9c6b74159d957a1795c
2 files changed +22 -4
routing/dht/handlers.go
+11 -4
@@ -167,25 +167,31 @@ func (dht *IpfsDHT) handleFindPeer(ctx context.Context, p peer.ID, pmes *pb.Mess
167
168 func (dht *IpfsDHT) handleGetProviders(ctx context.Context, p peer.ID, pmes *pb.Message) (*pb.Message, error) {
169 resp := pb.NewMessage(pmes.GetType(), pmes.GetKey(), pmes.GetClusterLevel())
170 + key := u.Key(pmes.GetKey())
171 +
172 + // debug logging niceness.
173 + reqDesc := fmt.Sprintf("%s handleGetProviders(%s, %s): ", dht.self, p, key)
174 + log.Debugf("%s begin", reqDesc)
175 + defer log.Debugf("%s end", reqDesc)
176
177 // check if we have this value, to add ourselves as provider.
172 - log.Debugf("handling GetProviders: '%s'", u.Key(pmes.GetKey()))
173 - dsk := u.Key(pmes.GetKey()).DsKey()
174 - has, err := dht.datastore.Has(dsk)
178 + has, err := dht.datastore.Has(key.DsKey())
179 if err != nil && err != ds.ErrNotFound {
180 log.Errorf("unexpected datastore error: %v\n", err)
181 has = false
182 }
183
184 // setup providers
181 - providers := dht.providers.GetProviders(ctx, u.Key(pmes.GetKey()))
185 + providers := dht.providers.GetProviders(ctx, key)
186 if has {
187 providers = append(providers, dht.self)
188 + log.Debugf("%s have the value. added self as provider", reqDesc)
189 }
190
191 if providers != nil && len(providers) > 0 {
192 infos := peer.PeerInfos(dht.peerstore, providers)
193 resp.ProviderPeers = pb.PeerInfosToPBPeers(dht.host.Network(), infos)
194 + log.Debugf("%s have %d providers: %s", reqDesc, len(providers), infos)
195 }
196
197 // Also send closer peers.
@@ -193,6 +199,7 @@ func (dht *IpfsDHT) handleGetProviders(ctx context.Context, p peer.ID, pmes *pb.
199 if closer != nil {
200 infos := peer.PeerInfos(dht.peerstore, providers)
201 resp.CloserPeers = pb.PeerInfosToPBPeers(dht.host.Network(), infos)
202 + log.Debugf("%s have %d closer peers: %s", reqDesc, len(closer), infos)
203 }
204
205 return resp, nil
routing/dht/routing.go
+11
@@ -1,6 +1,7 @@
1 package dht
2
3 import (
4 + "fmt"
5 "math"
6 "sync"
7
@@ -255,16 +256,24 @@ func (dht *IpfsDHT) findProvidersAsyncRoutine(ctx context.Context, key u.Key, co
256 // setup the Query
257 query := dht.newQuery(key, func(ctx context.Context, p peer.ID) (*dhtQueryResult, error) {
258
259 + reqDesc := fmt.Sprintf("%s findProviders(%s).Query(%s): ", dht.self, key, p)
260 + log.Debugf("%s begin", reqDesc)
261 + defer log.Debugf("%s end", reqDesc)
262 +
263 pmes, err := dht.findProvidersSingle(ctx, p, key)
264 if err != nil {
265 return nil, err
266 }
267
268 + log.Debugf("%s got %d provider entries", reqDesc, len(pmes.GetProviderPeers()))
269 provs := pb.PBPeersToPeerInfos(pmes.GetProviderPeers())
270 + log.Debugf("%s got %d provider entries decoded", reqDesc, len(provs))
271
272 // Add unique providers from request, up to 'count'
273 for _, prov := range provs {
274 + log.Debugf("%s got provider: %s", reqDesc, prov)
275 if ps.TryAdd(prov.ID) {
276 + log.Debugf("%s using provider: %s", reqDesc, prov)
277 select {
278 case peerOut <- prov:
279 case <-ctx.Done():
@@ -273,6 +282,7 @@ func (dht *IpfsDHT) findProvidersAsyncRoutine(ctx context.Context, key u.Key, co
282 }
283 }
284 if ps.Size() >= count {
285 + log.Debugf("%s got enough providers (%d/%d)", reqDesc, ps.Size(), count)
286 return &dhtQueryResult{success: true}, nil
287 }
288 }
@@ -280,6 +290,7 @@ func (dht *IpfsDHT) findProvidersAsyncRoutine(ctx context.Context, key u.Key, co
290 // Give closer peers back to the query to be queried
291 closer := pmes.GetCloserPeers()
292 clpeers := pb.PBPeersToPeerInfos(closer)
293 + log.Debugf("%s got closer peers: %s", reqDesc, clpeers)
294 return &dhtQueryResult{closerPeers: clpeers}, nil
295 })
296