swarm/storage: add comparison towards leveldb.ErrNotFound (#19243)

* swarm/storage: add comparison towards leveldb.ErrNotFound

* swarm/storage: wrap leveldb ErrNotFound
This commit is contained in:
Anton Evangelatov 2019-03-08 17:28:57 +01:00 committed by Viktor Trón
parent 2cfe0bed9f
commit bb55b0fb53
2 changed files with 7 additions and 2 deletions

@ -1005,7 +1005,10 @@ func (s *LDBStore) get(addr Address) (chunk Chunk, err error) {
if err != nil {
log.Trace("ldbstore.get chunk found but could not be accessed", "key", addr, "err", err)
s.deleteNow(index, getIndexKey(addr), s.po(addr))
return
if err == leveldb.ErrNotFound {
return nil, ErrChunkNotFound
}
return nil, err
}
}

@ -29,6 +29,7 @@ import (
"github.com/ethereum/go-ethereum/swarm/spancontext"
"github.com/opentracing/opentracing-go"
olog "github.com/opentracing/opentracing-go/log"
"github.com/syndtr/goleveldb/leveldb"
lru "github.com/hashicorp/golang-lru"
)
@ -167,7 +168,8 @@ func (n *NetStore) get(ctx context.Context, ref Address) (Chunk, func(context.Co
chunk, err := n.store.Get(ctx, ref)
if err != nil {
if err != ErrChunkNotFound {
// TODO: Fix comparison - we should be comparing against leveldb.ErrNotFound, this error should be wrapped.
if err != ErrChunkNotFound && err != leveldb.ErrNotFound {
log.Debug("Received error from LocalStore other than ErrNotFound", "err", err)
}
// The chunk is not available in the LocalStore, let's get the fetcher for it, or create a new one