From e1f2fe75f8420e122580135fc6b523a6f8cbb159 Mon Sep 17 00:00:00 2001 From: Jeromy <jeromyj@gmail.com> Date: Sat, 25 Oct 2014 03:36:00 -0700 Subject: [PATCH] add in dag removal --- blockservice/blockservice.go | 4 ++++ exchange/bitswap/bitswap.go | 2 +- merkledag/merkledag.go | 13 +++++++++++++ routing/dht/dht.go | 6 +++++- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/blockservice/blockservice.go b/blockservice/blockservice.go index 51e9ad7d6..0ca533b19 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 64dcf96a8..9d3abccc2 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 a6dbc6ebf..7834677a8 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 52ae1f76c..b3ca010b7 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) } -- GitLab