Added a method to refresh an NFS mount point (necessary to prevent NFS flakiness when running on the LSF farm.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@774 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
324ef9cbd1
commit
a687c6bc03
|
|
@ -89,4 +89,31 @@ public class PathUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refreshes the volume associated with a given file or directory by attempting to access it
|
||||||
|
* a few times before giving up. The file need not exist, though the parent directory must.
|
||||||
|
* This method is particularly useful when your job has been dispatched to LSF and you need to
|
||||||
|
* ensure an NSF-mounted volume is actually accessible (many times it isn't for a few seconds,
|
||||||
|
* just enough to cause your program to come crashing down).
|
||||||
|
*
|
||||||
|
* @param file the file or directory that resides in the volume to be refreshed.
|
||||||
|
*/
|
||||||
|
public static void refreshVolume(File file) {
|
||||||
|
File dir = file.isDirectory() ? file : file.getParentFile();
|
||||||
|
|
||||||
|
int sleepCount = 0;
|
||||||
|
while (sleepCount < 3 && dir.listFiles() == null) {
|
||||||
|
try {
|
||||||
|
Thread.sleep((sleepCount + 1)*3000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
sleepCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dir.listFiles() == null) {
|
||||||
|
throw new StingException("The volume '" + dir.getAbsolutePath() + "' could not be accessed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue