Commit 83d58acd authored by acud's avatar acud Committed by GitHub

netstore, retrieval: wrap errors (#231)

parent 35e9e468
...@@ -7,6 +7,7 @@ package netstore ...@@ -7,6 +7,7 @@ package netstore
import ( import (
"context" "context"
"errors" "errors"
"fmt"
"github.com/ethersphere/bee/pkg/retrieval" "github.com/ethersphere/bee/pkg/retrieval"
"github.com/ethersphere/bee/pkg/storage" "github.com/ethersphere/bee/pkg/storage"
...@@ -34,25 +35,21 @@ func (s *store) Get(ctx context.Context, mode storage.ModeGet, addr swarm.Addres ...@@ -34,25 +35,21 @@ func (s *store) Get(ctx context.Context, mode storage.ModeGet, addr swarm.Addres
// request from network // request from network
data, err := s.retrieval.RetrieveChunk(ctx, addr) data, err := s.retrieval.RetrieveChunk(ctx, addr)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("netstore retrieve chunk: %w", err)
} }
ch = swarm.NewChunk(addr, data) ch = swarm.NewChunk(addr, data)
if err != nil {
return nil, err
}
if !s.valid(ch) { if !s.valid(ch) {
return nil, storage.ErrInvalidChunk return nil, storage.ErrInvalidChunk
} }
_, err = s.Storer.Put(ctx, storage.ModePutRequest, ch) _, err = s.Storer.Put(ctx, storage.ModePutRequest, ch)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("netstore retrieve put: %w", err)
} }
return ch, nil return ch, nil
} }
return nil, err return nil, fmt.Errorf("netstore get: %w", err)
} }
return ch, nil return ch, nil
} }
......
...@@ -66,11 +66,11 @@ func (s *Service) Protocol() p2p.ProtocolSpec { ...@@ -66,11 +66,11 @@ func (s *Service) Protocol() p2p.ProtocolSpec {
} }
func (s *Service) RetrieveChunk(ctx context.Context, addr swarm.Address) (data []byte, err error) { func (s *Service) RetrieveChunk(ctx context.Context, addr swarm.Address) (data []byte, err error) {
peerID, err := s.peerSuggester.ClosestPeer(addr) peer, err := s.peerSuggester.ClosestPeer(addr)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("get closest: %w", err)
} }
stream, err := s.streamer.NewStream(ctx, peerID, nil, protocolName, protocolVersion, streamName) stream, err := s.streamer.NewStream(ctx, peer, nil, protocolName, protocolVersion, streamName)
if err != nil { if err != nil {
return nil, fmt.Errorf("new stream: %w", err) return nil, fmt.Errorf("new stream: %w", err)
} }
...@@ -81,12 +81,12 @@ func (s *Service) RetrieveChunk(ctx context.Context, addr swarm.Address) (data [ ...@@ -81,12 +81,12 @@ func (s *Service) RetrieveChunk(ctx context.Context, addr swarm.Address) (data [
if err := w.WriteMsg(&pb.Request{ if err := w.WriteMsg(&pb.Request{
Addr: addr.Bytes(), Addr: addr.Bytes(),
}); err != nil { }); err != nil {
return nil, fmt.Errorf("stream write: %w", err) return nil, fmt.Errorf("write request: %w peer %s", err, peer.String())
} }
var d pb.Delivery var d pb.Delivery
if err := r.ReadMsg(&d); err != nil { if err := r.ReadMsg(&d); err != nil {
return nil, err return nil, fmt.Errorf("read delivery: %w peer %s", err, peer.String())
} }
return d.Data, nil return d.Data, nil
...@@ -97,18 +97,18 @@ func (s *Service) handler(ctx context.Context, p p2p.Peer, stream p2p.Stream) er ...@@ -97,18 +97,18 @@ func (s *Service) handler(ctx context.Context, p p2p.Peer, stream p2p.Stream) er
defer stream.Close() defer stream.Close()
var req pb.Request var req pb.Request
if err := r.ReadMsg(&req); err != nil { if err := r.ReadMsg(&req); err != nil {
return err return fmt.Errorf("read request: %w peer %s", err, p.Address.String())
} }
chunk, err := s.storer.Get(ctx, storage.ModeGetRequest, swarm.NewAddress(req.Addr)) chunk, err := s.storer.Get(ctx, storage.ModeGetRequest, swarm.NewAddress(req.Addr))
if err != nil { if err != nil {
return err return fmt.Errorf("get from store: %w peer %s", err, p.Address.String())
} }
if err := w.WriteMsgWithContext(ctx, &pb.Delivery{ if err := w.WriteMsgWithContext(ctx, &pb.Delivery{
Data: chunk.Data(), Data: chunk.Data(),
}); err != nil { }); err != nil {
return err return fmt.Errorf("write delivery: %w peer %s", err, p.Address.String())
} }
return nil return nil
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment