From 5aff310b80e2b4bd7ae6febdc328d89cc370af32 Mon Sep 17 00:00:00 2001 From: Anis Elleuch Date: Mon, 9 Aug 2021 14:58:34 +0100 Subject: [PATCH] Always deduplicate folders in listing (#12909) When a prefix with a trailing slash is found, always deduplicate it. Co-authored-by: Anis Elleuch --- cmd/erasure-server-sets.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cmd/erasure-server-sets.go b/cmd/erasure-server-sets.go index 6d510b3a6..b8da52d45 100644 --- a/cmd/erasure-server-sets.go +++ b/cmd/erasure-server-sets.go @@ -1008,6 +1008,12 @@ func lexicallySortedEntryZone(zoneEntryChs [][]FileInfoCh, zoneEntries [][]FileI continue } + // Always deduplicate prefixes + if lentry.Name == zoneEntries[i][j].Name && strings.HasSuffix(lentry.Name, slashSeparator) { + lexicallySortedEntryCount++ + continue + } + // Entries are duplicated across disks, // we should simply skip such entries. if lentry.Name == zoneEntries[i][j].Name && lentry.ModTime.Equal(zoneEntries[i][j].ModTime) && setIndex == zoneEntryChs[i][j].SetIndex { @@ -1102,6 +1108,12 @@ func lexicallySortedEntryZoneVersions(zoneEntryChs [][]FileInfoVersionsCh, zoneE continue } + // Always deduplicate prefixes + if lentry.Name == zoneEntries[i][j].Name && strings.HasSuffix(lentry.Name, slashSeparator) { + lexicallySortedEntryCount++ + continue + } + // Entries are duplicated across disks, // we should simply skip such entries. if lentry.Name == zoneEntries[i][j].Name && lentry.LatestModTime.Equal(zoneEntries[i][j].LatestModTime) && setIndex == zoneEntryChs[i][j].SetIndex {