From ba88f55d1f18f5d3a93aaf9d030a75c2d640316a Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Thu, 27 Aug 2009 17:22:03 +0000 Subject: [PATCH] fix getUsedDiskSpace to look at data directories recursively. Patch by Sammy Yu; reviewed by jbellis for CASSANDRA-394 git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@808546 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/cassandra/utils/FileUtils.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/java/org/apache/cassandra/utils/FileUtils.java b/src/java/org/apache/cassandra/utils/FileUtils.java index 04681321c0..9fc3178bb7 100644 --- a/src/java/org/apache/cassandra/utils/FileUtils.java +++ b/src/java/org/apache/cassandra/utils/FileUtils.java @@ -209,26 +209,42 @@ public class FileUtils return d; } + /** + * calculate the total space used by a file or directory + * + * @param path the path + * @return total space used. + */ + public static long getUsedDiskSpaceForPath(String path) + { + File file = new File(path); + + if (file.isFile()) + { + return file.length(); + } + + long diskSpace = 0; + for (File childFile: file.listFiles()) + { + diskSpace += getUsedDiskSpaceForPath(childFile.getPath()); + } + return diskSpace; + } + public static long getUsedDiskSpace() { long diskSpace = 0L; String[] directories = DatabaseDescriptor.getAllDataFileLocations(); for ( String directory : directories ) { - File f = new File(directory); - File[] files = f.listFiles(); - for ( File file : files ) - { - diskSpace += file.length(); - } + diskSpace += getUsedDiskSpaceForPath(directory); } String value = df_.format(diskSpace); return Long.parseLong(value); } - - /** * Deletes all files and subdirectories under "dir". * @param dir Directory to be deleted