Przeglądaj źródła

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

* swarm/storage: add comparison towards leveldb.ErrNotFound

* swarm/storage: wrap leveldb ErrNotFound
Anton Evangelatov 6 lat temu
rodzic
commit
bb55b0fb53
2 zmienionych plików z 7 dodań i 2 usunięć
  1. 4 1
      swarm/storage/ldbstore.go
  2. 3 1
      swarm/storage/netstore.go

+ 4 - 1
swarm/storage/ldbstore.go

@@ -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
 			}
 		}
 

+ 3 - 1
swarm/storage/netstore.go

@@ -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