Victoria Agafonova
Victoria Agafonova

Reputation: 2178

File getFreeSpace acts strange

I have an application, which runs on Tomcat 6, and uses JDK 1.6.0_34.

Periodically (for about every 1-5 minutes) it checks a shared folder, and do some actions (no content delete, note) if there is no free space on a hard drive. So, usually everything is ok, but for about once a day File getFreeSpace method return 0, even while there is a lot of free space on a hard drive.

In my code I have this:

public void toDo() {
    File file = new File(FOLDER_PATH);
    long space = file.getFreeSpace();
    long minDiskSize = settings.getMinDiskSize();
    String absolutePath = file.getAbsolutePath();
    if (space < minDiskSize) {
        log.debug("NOT_OK:\n" +
                "Folder path: [" + absolutePath + "]\n" +
                "Min free space from config: [" + minDiskSize + "]\n" +
                "Free space on server: [" + space + "]");
        //Do some actions
    } else {
        log.debug("OK:\n" +
                "Folder path: [" + absolutePath + "]\n" +
                "Min free space from config: [" + minDiskSize + "]\n" +
                "Free space on server: [" + space + "]");
    }
}

Here is logs:

2016-03-02 13:35:22,810 <- note, time from a log file.
NOT_OK:
Folder path: [\\server\FOLDER$\input]
Free space from config: [104857600]
Free space on server: [0]

2016-03-02 13:36:24,029 <- note, just a minute latter everything is OK again.
OK:
Folder path: [\\server\FOLDER$\input]
Min free space from config: [104857600]
Free space on server: [402494513152]

So, what can be a cause of such strange behavior?

Upvotes: 0

Views: 131

Answers (1)

Paul
Paul

Reputation: 670

It might just be a glitch so, I would suggest double checking the space when it is less than minDiskSize . By this I mean something like this:

public void toDo() {
File file = new File(FOLDER_PATH);
long space = file.getFreeSpace();
long minDiskSize = settings.getMinDiskSize();
String absolutePath = file.getAbsolutePath();
if (space < minDiskSize) {
Thread.sleep(62000);
space = file.getFreeSpace();
 if(space < minDiskSize){
    log.debug("NOT_OK:\n" +
            "Folder path: [" + absolutePath + "]\n" +
            "Min free space from config: [" + minDiskSize + "]\n" +
            "Free space on server: [" + space + "]");
    //Do some actions
   }else{log.debug("OK:\n" +
            "Folder path: [" + absolutePath + "]\n" +
            "Min free space from config: [" + minDiskSize + "]\n" +
            "Free space on server: [" + space + "]");}
} else {
    log.debug("OK:\n" +
            "Folder path: [" + absolutePath + "]\n" +
            "Min free space from config: [" + minDiskSize + "]\n" +
            "Free space on server: [" + space + "]");
}
}

Hope this helped.

Upvotes: 1

Related Questions