diff --git a/libnetwork/internal/kvstore/boltdb/boltdb.go b/libnetwork/internal/kvstore/boltdb/boltdb.go index 6f6e5a28b9..ddfa2087d7 100644 --- a/libnetwork/internal/kvstore/boltdb/boltdb.go +++ b/libnetwork/internal/kvstore/boltdb/boltdb.go @@ -230,20 +230,16 @@ func (b *BoltDB) Exists(key string) (bool, error) { // List returns the range of keys starting with the passed in prefix func (b *BoltDB) List(keyPrefix string) ([]*store.KVPair, error) { - var ( - db *bolt.DB - err error - ) b.Lock() defer b.Unlock() - kv := []*store.KVPair{} - - if db, err = b.getDBhandle(); err != nil { + db, err := b.getDBhandle() + if err != nil { return nil, err } defer b.releaseDBhandle() + var kv []*store.KVPair err = db.View(func(tx *bolt.Tx) error { bucket := tx.Bucket(b.boltBucket) if bucket == nil { @@ -254,7 +250,6 @@ func (b *BoltDB) List(keyPrefix string) ([]*store.KVPair, error) { prefix := []byte(keyPrefix) for key, v := cursor.Seek(prefix); bytes.HasPrefix(key, prefix); key, v = cursor.Next() { - dbIndex := binary.LittleEndian.Uint64(v[:libkvmetadatalen]) v = v[libkvmetadatalen:] val := make([]byte, len(v)) @@ -268,10 +263,13 @@ func (b *BoltDB) List(keyPrefix string) ([]*store.KVPair, error) { } return nil }) + if err != nil { + return nil, err + } if len(kv) == 0 { return nil, store.ErrKeyNotFound } - return kv, err + return kv, nil } // AtomicDelete deletes a value at "key" if the key