tracking down a bug dhthell found, added asserts and better logging.
Jeromy committed
Nov 21, 2014 at 18:14 UTC
ed4509923cd80bd0b5cc98a32e61d77270fc1d62
4 files changed
+17
-7
blockservice/blockservice.go
+1
-1
@@ -101,7 +101,6 @@ func (s *BlockService) GetBlock(ctx context.Context, k u.Key) (*blocks.Block, er
101
func (s *BlockService) GetBlocks(ctx context.Context, ks []u.Key) <-chan *blocks.Block {
102
out := make(chan *blocks.Block, 32)
103
go func() {
104
- defer close(out)
104
var toFetch []u.Key
105
for _, k := range ks {
106
block, err := s.Blockstore.Get(k)
@@ -121,6 +120,7 @@ func (s *BlockService) GetBlocks(ctx context.Context, ks []u.Key) <-chan *blocks
120
for blk := range nblocks {
121
out <- blk
122
}
123
+ close(out)
124
}()
125
return out
126
}
exchange/bitswap/bitswap.go
+11
-5
@@ -197,13 +197,19 @@ func (bs *bitswap) loop(parent context.Context) {
197
}
198
}
199
case ks := <-bs.batchRequests:
200
+ // TODO: implement batching on len(ks) > X for some X
201
+ if len(ks) == 0 {
202
+ log.Warning("Received batch request for zero blocks")
203
+ continue
204
+ }
205
for _, k := range ks {
206
bs.wantlist.Add(k)
202
- providers := bs.routing.FindProvidersAsync(ctx, k, maxProvidersPerRequest)
203
- err := bs.sendWantListTo(ctx, providers)
204
- if err != nil {
205
- log.Errorf("error sending wantlist: %s", err)
206
- }
207
+ }
208
+ providers := bs.routing.FindProvidersAsync(ctx, ks[0], maxProvidersPerRequest)
209
+
210
+ err := bs.sendWantListTo(ctx, providers)
211
+ if err != nil {
212
+ log.Errorf("error sending wantlist: %s", err)
213
}
214
case <-parent.Done():
215
return
net/swarm/conn.go
+1
-1
@@ -182,7 +182,7 @@ func (s *Swarm) fanOut() {
182
return
183
}
184
if len(msg.Data()) >= conn.MaxMessageSize {
185
- log.Critical("Attempted to send message bigger than max size.")
185
+ log.Criticalf("Attempted to send message bigger than max size. (%d)", len(msg.Data()))
186
}
187
188
s.connsLock.RLock()
unixfs/io/dagreader.go
+4
@@ -68,6 +68,7 @@ func (dr *DagReader) precalcNextBuf() error {
68
// TODO: this logic is hard to follow, do it better.
69
// NOTE: the only time this code is used, is during the
70
// importer tests, consider just changing those tests
71
+ log.Warning("Running DAGReader with nil DAGService!")
72
if dr.linkPosition >= len(dr.node.Links) {
73
return io.EOF
74
}
@@ -78,6 +79,9 @@ func (dr *DagReader) precalcNextBuf() error {
79
dr.linkPosition++
80
81
} else {
82
+ if dr.fetchChan == nil {
83
+ panic("this is wrong.")
84
+ }
85
select {
86
case nxt, ok = <-dr.fetchChan:
87
if !ok {