Github user PepperJo commented on a diff in the pull request:
https://github.com/apache/incubator-crail/pull/25#discussion_r196755299
--- Diff:
client/src/main/java/org/apache/crail/memory/MappedBufferCache.java ---
@@ -53,13 +53,17 @@ public MappedBufferCache() throws IOException {
id = "" + System.currentTimeMillis();
directory = CrailUtils.getCacheDirectory(id);
dir = new File(directory);
- if (!dir.exists()){
- if (!dir.mkdirs()) {
- throw new IOException("Cannot create
cache directory [crail.cachepath] set to path " + directory + ", check if
crail.cachepath exists and has write permissions");
+ try {
+ if (!dir.exists()){
+ if (!dir.mkdirs()) {
+ throw new IOException("Cannot
create cache directory [crail.cachepath] set to path " + directory + ", check
if crail.cachepath exists and has write permissions");
+ }
}
- }
- for (File child : dir.listFiles()) {
- child.delete();
+ for (File child : dir.listFiles()) {
+ child.delete();
+ }
+ } catch(SecurityException e) {
+ throw new IOException("Security exception when
trying to access " + directory + ", please check the directory permissions", e);
--- End diff --
If the dir is not accessable but it exists and has no children this runs
through but the creation of the RandomAccessFile will fail. We should also
check if the creation was successful in allocateRegion and print a meaningful
error message. Or check here if dir is accessible and if it is a dir in the
first place, e.g. dir.isDirectory() and dir.canWrite() (I have not tested this).
---