diff --git a/blockservice/blockservice.go b/blockservice/blockservice.go index 51e9ad7d618bedc7ff365977415346bbab2e585c..0ca533b196cc7f553e16af8ade89e2290c8f9c6b 100644 --- a/blockservice/blockservice.go +++ b/blockservice/blockservice.go @@ -76,3 +76,7 @@ func (s *BlockService) GetBlock(ctx context.Context, k u.Key) (*blocks.Block, er return nil, u.ErrNotFound } } + +func (s *BlockService) DeleteBlock(k u.Key) error { + return s.Datastore.Delete(k.DsKey()) +} diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go index 64dcf96a857898eb316c3a62afcc9ebeebb136fe..9d3abccc2fcfe5169884c95cec4a2de207f8f407 100644 --- a/exchange/bitswap/bitswap.go +++ b/exchange/bitswap/bitswap.go @@ -94,7 +94,7 @@ func (bs *bitswap) Block(parent context.Context, k u.Key) (*blocks.Block, error) response, err := bs.sender.SendRequest(ctx, p, message) if err != nil { - log.Errorf("Error sender.SendRequest(%s)", p) + log.Error("Error sender.SendRequest(%s) = %s", p, err) return } // FIXME ensure accounting is handled correctly when diff --git a/merkledag/merkledag.go b/merkledag/merkledag.go index a6dbc6ebf848e390b73485c128476ebc84d5c88e..7834677a8f86eb29937e3d304c58c000277e9fe1 100644 --- a/merkledag/merkledag.go +++ b/merkledag/merkledag.go @@ -215,3 +215,16 @@ func (n *DAGService) Get(k u.Key) (*Node, error) { return Decoded(b.Data) } + +func (n *DAGService) Remove(nd *Node) error { + for _, l := range nd.Links { + if l.Node != nil { + n.Remove(l.Node) + } + } + k, err := nd.Key() + if err != nil { + return err + } + return n.Blocks.DeleteBlock(k) +} diff --git a/routing/dht/dht.go b/routing/dht/dht.go index 52ae1f76c4b550debd4627f9d68dea405f89bbb5..b3ca010b76a5da69905783032373ab8b3d1869fc 100644 --- a/routing/dht/dht.go +++ b/routing/dht/dht.go @@ -540,7 +540,11 @@ func (dht *IpfsDHT) PingRoutine(t time.Duration) { func (dht *IpfsDHT) Bootstrap(ctx context.Context) { id := make([]byte, 16) rand.Read(id) - _, err := dht.FindPeer(ctx, peer.ID(id)) + p, err := dht.FindPeer(ctx, peer.ID(id)) + if err != nil { + log.Error("Bootstrap peer error: %s", err) + } + err = dht.dialer.DialPeer(p) if err != nil { log.Errorf("Bootstrap peer error: %s", err) }