Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1903,6 +1903,8 @@ private ContentSummary aggregateContentSummary(
long quota = 0;
long spaceConsumed = 0;
long spaceQuota = 0;
long snapshotDirectoryCount = 0;
long snapshotFileCount = 0;
String ecPolicy = "";

for (ContentSummary summary : summaries) {
Expand All @@ -1912,6 +1914,8 @@ private ContentSummary aggregateContentSummary(
quota = summary.getQuota();
spaceConsumed += summary.getSpaceConsumed();
spaceQuota = summary.getSpaceQuota();
snapshotDirectoryCount += summary.getSnapshotDirectoryCount();
snapshotFileCount += summary.getSnapshotFileCount();
// We return from the first response as we assume that the EC policy
// of each sub-cluster is same.
if (ecPolicy.isEmpty()) {
Expand All @@ -1927,6 +1931,8 @@ private ContentSummary aggregateContentSummary(
.spaceConsumed(spaceConsumed)
.spaceQuota(spaceQuota)
.erasureCodingPolicy(ecPolicy)
.snapshotDirectoryCount(snapshotDirectoryCount)
.snapshotFileCount(snapshotFileCount)
.build();
return ret;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.crypto.CryptoProtocolVersion;
import org.apache.hadoop.fs.ContentSummary;
import org.apache.hadoop.fs.CreateFlag;
import org.apache.hadoop.fs.FileContext;
import org.apache.hadoop.fs.FileStatus;
Expand Down Expand Up @@ -2004,4 +2005,46 @@ public void testAddClientIpPortToCallerContext() throws IOException {
assertFalse(auditLog.getOutput().contains("clientIp:1.1.1.1"));
assertFalse(auditLog.getOutput().contains("clientPort:1234"));
}

@Test
public void testContentSummaryWithSnapshot() throws Exception {
DistributedFileSystem routerDFS = (DistributedFileSystem) routerFS;
Path dirPath = new Path("/testdir");
Path subdirPath = new Path(dirPath, "subdir");
Path filePath1 = new Path(dirPath, "file");
Path filePath2 = new Path(subdirPath, "file2");

// Create directories.
routerDFS.mkdirs(dirPath);
routerDFS.mkdirs(subdirPath);

// Create files.
createFile(routerDFS, filePath1.toString(), 32);
createFile(routerDFS, filePath2.toString(), 16);

// Allow & Create snapshot.
routerDFS.allowSnapshot(dirPath);
routerDFS.createSnapshot(dirPath, "s1");

try {
// Check content summary, snapshot count should be 0
ContentSummary contentSummary = routerDFS.getContentSummary(dirPath);
assertEquals(0, contentSummary.getSnapshotDirectoryCount());
assertEquals(0, contentSummary.getSnapshotFileCount());

// Delete the file & subdir(Total 2 files deleted & 1 directory)
routerDFS.delete(filePath1, true);
routerDFS.delete(subdirPath, true);

// Get the Content Summary
contentSummary = routerDFS.getContentSummary(dirPath);
assertEquals(1, contentSummary.getSnapshotDirectoryCount());
assertEquals(2, contentSummary.getSnapshotFileCount());
} finally {
// Cleanup
routerDFS.deleteSnapshot(dirPath, "s1");
routerDFS.disallowSnapshot(dirPath);
routerDFS.delete(dirPath, true);
}
}
}