From a6c5ea68ccfa3a8399739cf02e4b03aa19cd4461 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sat, 17 Oct 2026 21:42:36 -0700 Subject: [PATCH] filerstore: return real errors from KvGet on MongoDB, ArangoDB, Elastic These stores mapped every lookup failure to ErrKvNotFound, so a database error looked identical to a missing key: hard-link records could appear gone while links still owned their chunks, and path timestamp reads could treat committed state as absent. Return the underlying error and keep ErrKvNotFound for genuinely missing keys. --- weed/filer/arangodb/arangodb_store_kv.go | 2 +- weed/filer/elastic/v7/elastic_store_kv.go | 5 ++++- weed/filer/mongodb/mongodb_store_kv.go | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/weed/filer/arangodb/arangodb_store_kv.go b/weed/filer/arangodb/arangodb_store_kv.go index ae768c7fb8..e9add46446 100644 --- a/weed/filer/arangodb/arangodb_store_kv.go +++ b/weed/filer/arangodb/arangodb_store_kv.go @@ -39,7 +39,7 @@ func (store *ArangodbStore) KvGet(ctx context.Context, key []byte) (value []byte } if err != nil { glog.ErrorfCtx(ctx, "kv get: %s %v", string(key), err) - return nil, filer.ErrKvNotFound + return nil, err } return arrayToBytes(model.Meta), nil } diff --git a/weed/filer/elastic/v7/elastic_store_kv.go b/weed/filer/elastic/v7/elastic_store_kv.go index f662639ff9..d6b9c844a4 100644 --- a/weed/filer/elastic/v7/elastic_store_kv.go +++ b/weed/filer/elastic/v7/elastic_store_kv.go @@ -37,13 +37,16 @@ func (store *ElasticStore) KvGet(ctx context.Context, key []byte) (value []byte, if elastic.IsNotFound(err) { return value, filer.ErrKvNotFound } + if err != nil { + glog.ErrorfCtx(ctx, "find key(%s),%v.", string(key), err) + return value, err + } if searchResult != nil && searchResult.Found { esEntry := &ESKVEntry{} if err := jsoniter.Unmarshal(searchResult.Source, esEntry); err == nil { return esEntry.Value, nil } } - glog.ErrorfCtx(ctx, "find key(%s),%v.", string(key), err) return value, filer.ErrKvNotFound } diff --git a/weed/filer/mongodb/mongodb_store_kv.go b/weed/filer/mongodb/mongodb_store_kv.go index 193bb247b5..ce7ac8fedd 100644 --- a/weed/filer/mongodb/mongodb_store_kv.go +++ b/weed/filer/mongodb/mongodb_store_kv.go @@ -46,7 +46,7 @@ func (store *MongodbStore) KvGet(ctx context.Context, key []byte) (value []byte, err = store.connect.Database(store.database).Collection(store.collectionName).FindOne(ctx, where).Decode(&data) if err != mongo.ErrNoDocuments && err != nil { glog.ErrorfCtx(ctx, "kv get: %v", err) - return nil, filer.ErrKvNotFound + return nil, err } if len(data.Meta) == 0 {