diff --git a/weed/filer/filer.go b/weed/filer/filer.go index 49f730370..8e52caf15 100644 --- a/weed/filer/filer.go +++ b/weed/filer/filer.go @@ -363,7 +363,14 @@ var ( ) func (f *Filer) FindEntry(ctx context.Context, p util.FullPath) (entry *Entry, err error) { + return f.findEntry(ctx, p, true) +} + +func (f *Filer) FindEntryLocal(ctx context.Context, p util.FullPath) (entry *Entry, err error) { + return f.findEntry(ctx, p, false) +} +func (f *Filer) findEntry(ctx context.Context, p util.FullPath, allowLazyFetch bool) (entry *Entry, err error) { if string(p) == "/" { return Root, nil } @@ -382,7 +389,7 @@ func (f *Filer) FindEntry(ctx context.Context, p util.FullPath) (entry *Entry, e } } - if entry == nil && (err == nil || errors.Is(err, filer_pb.ErrNotFound)) { + if allowLazyFetch && entry == nil && (err == nil || errors.Is(err, filer_pb.ErrNotFound)) { if lazy, lazyErr := f.maybeLazyFetchFromRemote(ctx, p); lazyErr != nil { glog.V(1).InfofCtx(ctx, "FindEntry lazy fetch %s: %v", p, lazyErr) } else if lazy != nil { diff --git a/weed/filer/filer_delete_entry.go b/weed/filer/filer_delete_entry.go index e592efcc0..0aba250cb 100644 --- a/weed/filer/filer_delete_entry.go +++ b/weed/filer/filer_delete_entry.go @@ -227,7 +227,7 @@ func (f *Filer) reconcilePendingRemoteMetadataDeletions(ctx context.Context) err } for _, pendingPath := range pendingPaths { - entry, findErr := f.FindEntry(ctx, pendingPath) + entry, findErr := f.FindEntryLocal(ctx, pendingPath) if errors.Is(findErr, filer_pb.ErrNotFound) || entry == nil { if clearErr := f.clearRemoteMetadataDeletionPending(ctx, pendingPath); clearErr != nil { glog.Warningf("clear remote metadata deletion pending %s: %v", pendingPath, clearErr)