You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2014/04/23 20:36:13 UTC
svn commit: r1589488 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java
Author: jukka
Date: Wed Apr 23 18:36:13 2014
New Revision: 1589488
URL: http://svn.apache.org/r1589488
Log:
OAK-1762: TarMK: Fall back to normal IO when mmap fails
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java?rev=1589488&r1=1589487&r2=1589488&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/TarReader.java Wed Apr 23 18:36:13 2014
@@ -194,20 +194,26 @@ class TarReader {
}
if (memoryMapping) {
- FileAccess mapped = new FileAccess.Mapped(access);
- // re-read the index, now with memory mapping
- int indexSize = index.remaining();
- index = mapped.read(
- mapped.length() - indexSize - 16 - 1024,
- indexSize);
- return new TarReader(file, mapped, index);
- } else {
- FileAccess random = new FileAccess.Random(access);
- // prevent the finally block from closing the file
- // as the returned TarReader will take care of that
- access = null;
- return new TarReader(file, random, index);
+ try {
+ FileAccess mapped = new FileAccess.Mapped(access);
+ // re-read the index, now with memory mapping
+ int indexSize = index.remaining();
+ index = mapped.read(
+ mapped.length() - indexSize - 16 - 1024,
+ indexSize);
+ return new TarReader(file, mapped, index);
+ } catch (IOException e) {
+ log.warn("Failed to mmap tar file " + file
+ + ", falling back to normal file IO",
+ e);
+ }
}
+
+ FileAccess random = new FileAccess.Random(access);
+ // prevent the finally block from closing the file
+ // as the returned TarReader will take care of that
+ access = null;
+ return new TarReader(file, random, index);
}
} finally {
if (access != null) {