public static void checkDiskFreeSpace()

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);
        }
    }