Class DirectoryCleaner


  • public class DirectoryCleaner
    extends Object
    Provide methods to help Logviewer to clean up files in directories and to get a list of files without worrying about excessive memory usage.
    • Field Detail

      • MAX_NUMBER_OF_FILES_FOR_DIR

        public static final int MAX_NUMBER_OF_FILES_FOR_DIR
        See Also:
        Constant Field Values
    • Method Detail

      • getStreamForDirectory

        public DirectoryStream<Path> getStreamForDirectory​(Path dir)
                                                    throws IOException
        Creates DirectoryStream for give directory.
        Parameters:
        dir - File instance representing specific directory
        Returns:
        DirectoryStream
        Throws:
        IOException
      • deleteOldestWhileTooLarge

        public org.apache.storm.daemon.logviewer.utils.DeletionMeta deleteOldestWhileTooLarge​(List<Path> dirs,
                                                                                              long quota,
                                                                                              boolean forPerDir,
                                                                                              Set<Path> activeDirs)
                                                                                       throws IOException
        If totalSize of files exceeds the either the per-worker quota or global quota, Logviewer deletes oldest inactive log files in a worker directory or in all worker dirs. We use the parameter forPerDir to switch between the two deletion modes.
        Parameters:
        dirs - the list of directories to be scanned for deletion
        quota - the per-dir quota or the total quota for the all directories
        forPerDir - if true, deletion happens for a single dir; otherwise, for all directories globally
        activeDirs - only for global deletion, we want to skip the active logs in activeDirs
        Returns:
        number of files deleted
        Throws:
        IOException
      • getFilesForDir

        public List<Path> getFilesForDir​(Path dir)
                                  throws IOException
        Lists files in directory. Note that to avoid memory problem, we only return the first 1024 files in a directory.
        Parameters:
        dir - directory to get file list
        Returns:
        files in directory
        Throws:
        IOException