diff --git a/cmd/tree-walk_test.go b/cmd/tree-walk_test.go index 211630d05..c44e50a9e 100644 --- a/cmd/tree-walk_test.go +++ b/cmd/tree-walk_test.go @@ -348,10 +348,12 @@ func TestListDir(t *testing.T) { if err != nil { t.Error(err) } - // None of the disks are available, should get errDiskNotFound. + // None of the disks are available, should get + // errDiskNotFound. Since errDiskNotFound is an ignored error, + // we should get nil. _, _, err = listDir(volume, "", "") - if errorCause(err) != errDiskNotFound { - t.Error("expected errDiskNotFound error.") + if err != nil { + t.Errorf("expected nil error but found %v.", err) } } diff --git a/cmd/xl-v1-list-objects-heal.go b/cmd/xl-v1-list-objects-heal.go index 94362d75c..5905c503e 100644 --- a/cmd/xl-v1-list-objects-heal.go +++ b/cmd/xl-v1-list-objects-heal.go @@ -107,10 +107,6 @@ func (xl xlObjects) listObjectsHeal(bucket, prefix, marker, delimiter string, ma } // For any walk error return right away. if walkResult.err != nil { - // File not found is a valid case. - if walkResult.err == errFileNotFound { - return ListObjectsInfo{}, nil - } return ListObjectsInfo{}, toObjectErr(walkResult.err, bucket, prefix) } entry := walkResult.entry @@ -325,12 +321,6 @@ func (xl xlObjects) listMultipartUploadsHeal(bucket, prefix, keyMarker, } // Collect uploads until maxUploads limit is reached. for walkResult := range walkerCh { - // Ignore errors like errDiskNotFound - // and errFileNotFound. - if isErrIgnored(walkResult.err, - xlTreeWalkIgnoredErrs...) { - continue - } // For any error during tree walk we should // return right away. if walkResult.err != nil { diff --git a/cmd/xl-v1-list-objects.go b/cmd/xl-v1-list-objects.go index 480f5359c..fb03fbe26 100644 --- a/cmd/xl-v1-list-objects.go +++ b/cmd/xl-v1-list-objects.go @@ -27,19 +27,20 @@ func listDirFactory(isLeaf isLeafFunc, treeWalkIgnoredErrs []error, disks ...Sto continue } entries, err = disk.ListDir(bucket, prefixDir) - if err == nil { - entries, delayIsLeaf = filterListEntries(bucket, prefixDir, entries, prefixEntry, isLeaf) - return entries, delayIsLeaf, nil - } - // For any reason disk was deleted or goes offline, continue - // and list from other disks if possible. - if isErrIgnored(err, treeWalkIgnoredErrs...) { - continue + if err != nil { + // For any reason disk was deleted or goes offline, continue + // and list from other disks if possible. + if isErrIgnored(err, treeWalkIgnoredErrs...) { + continue + } + return nil, false, traceError(err) } - break + + entries, delayIsLeaf = filterListEntries(bucket, prefixDir, entries, prefixEntry, isLeaf) + return entries, delayIsLeaf, nil } - // Return error at the end. - return nil, false, traceError(err) + // Nothing found in all disks + return nil, false, nil } return listDir } @@ -73,10 +74,6 @@ func (xl xlObjects) listObjects(bucket, prefix, marker, delimiter string, maxKey } // For any walk error return right away. if walkResult.err != nil { - // File not found is a valid case. - if errorCause(walkResult.err) == errFileNotFound { - return ListObjectsInfo{}, nil - } return ListObjectsInfo{}, toObjectErr(walkResult.err, bucket, prefix) } entry := walkResult.entry diff --git a/cmd/xl-v1-multipart.go b/cmd/xl-v1-multipart.go index 0af02bac7..ac49df875 100644 --- a/cmd/xl-v1-multipart.go +++ b/cmd/xl-v1-multipart.go @@ -349,10 +349,6 @@ func (xl xlObjects) listMultipartUploads(bucket, prefix, keyMarker, uploadIDMark } // For any walk error return right away. if walkResult.err != nil { - // File not found or Disk not found is a valid case. - if isErrIgnored(walkResult.err, xlTreeWalkIgnoredErrs...) { - continue - } return ListMultipartsInfo{}, err } entry := strings.TrimPrefix(walkResult.entry, retainSlash(bucket))