This commit is contained in:
Chris Lu
2026-01-14 18:20:58 -08:00
parent 457cb7d98a
commit 712648bc35
2 changed files with 8 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"sync"
"sync/atomic"
"time"
"github.com/seaweedfs/seaweedfs/weed/glog"
@@ -23,7 +24,7 @@ func TraverseBfs(ctx context.Context, filerClient FilerClient, parentPath util.F
pending.Add(1)
queue.Enqueue(parentPath)
var once sync.Once
var hasError int32
var firstErr error
enqueue := func(p util.FullPath) bool {
@@ -64,10 +65,10 @@ func TraverseBfs(ctx context.Context, filerClient FilerClient, parentPath util.F
if ctx.Err() == nil {
processErr := processOneDirectory(ctx, filerClient, dir, enqueue, fn)
if processErr != nil {
once.Do(func() {
if atomic.CompareAndSwapInt32(&hasError, 0, 1) {
firstErr = processErr
cancel()
})
}
}
}
pending.Done()

View File

@@ -155,7 +155,6 @@ func doTraverseBfsAndSaving(filerClient filer_pb.FilerClient, writer io.Writer,
}()
var dirCount, fileCount uint64
var once sync.Once
var firstErr error
var hasErr atomic.Bool
@@ -176,10 +175,8 @@ func doTraverseBfsAndSaving(filerClient filer_pb.FilerClient, writer io.Writer,
return firstErr
}
if genErr := genFn(protoMessage, outputChan); genErr != nil {
once.Do(func() {
firstErr = genErr
hasErr.Store(true)
})
firstErr = genErr
hasErr.Store(true)
return genErr
} else {
if e.IsDirectory {
@@ -208,11 +205,10 @@ func doTraverseBfsAndSaving(filerClient filer_pb.FilerClient, writer io.Writer,
return firstErr
}
if genErr := genFn(protoMessage, outputChan); genErr != nil {
once.Do(func() {
if hasErr.CompareAndSwap(false, true) {
firstErr = genErr
hasErr.Store(true)
cancel()
})
}
return genErr
}