in src/main/java/com/uber/rss/util/FileUtils.java [66:105]
public static void checkDiskFreeSpace(long minTotalDiskSpace, long minFreeDiskSpace) {
FileStore largestFileStore = null;
for (Path root: FileSystems.getDefault().getRootDirectories()) {
try {
FileStore store = Files.getFileStore(root);
if (largestFileStore == null) {
largestFileStore = store;
} else if (largestFileStore.getTotalSpace() < store.getTotalSpace()){
largestFileStore = store;
}
} catch (Throwable e) {
logger.warn(String.format("Failed to check file store size for %s", root), e);
}
}
if (largestFileStore == null) {
throw new RssDiskSpaceException("Failed to get file store");
}
try {
logger.info(String.format("Checking file store (%s) space, total: %s, usable: %s", largestFileStore, largestFileStore.getTotalSpace(), largestFileStore.getUsableSpace()));
if (largestFileStore.getTotalSpace() < minTotalDiskSpace) {
throw new RssDiskSpaceException(String.format(
"File store (%s) has less total space (%s) than expected (%s)",
largestFileStore,
largestFileStore.getTotalSpace(),
minTotalDiskSpace));
}
if (largestFileStore.getUsableSpace() < minFreeDiskSpace) {
throw new RssDiskSpaceException(String.format(
"File store (%s) has less free space (%s) than expected (%s)",
largestFileStore,
largestFileStore.getUsableSpace(),
minFreeDiskSpace));
}
} catch (IOException e) {
throw new RssDiskSpaceException(String.format("Failed to check file store %s", largestFileStore), e);
}
}