Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
Reviewed
Description
getValidQuotaLocations want to filter duplicate subfolders, but it used wrong method to determine the parent folder. In this logic, if we have 2 mountpoint like /miui and /miuiads, then /miuiads will be ignored.
private List<RemoteLocation> getValidQuotaLocations(String path) throws IOException { final List<RemoteLocation> locations = getQuotaRemoteLocations(path); // NameService -> Locations ListMultimap<String, RemoteLocation> validLocations = ArrayListMultimap.create(); for (RemoteLocation loc : locations) { final String nsId = loc.getNameserviceId(); final Collection<RemoteLocation> dests = validLocations.get(nsId); // Ensure the paths in the same nameservice is different. // Do not include parent-child paths. boolean isChildPath = false; for (RemoteLocation d : dests) { if (StringUtils.startsWith(loc.getDest(), d.getDest())) { isChildPath = true; break; } } if (!isChildPath) { validLocations.put(nsId, loc); } } return Collections .unmodifiableList(new ArrayList<>(validLocations.values())); }