diff --git a/oak-segment-remote/pom.xml b/oak-segment-remote/pom.xml index ea6135eb43..dd12eefa65 100644 --- a/oak-segment-remote/pom.xml +++ b/oak-segment-remote/pom.xml @@ -30,6 +30,13 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + -Xmx768m + + org.apache.felix maven-bundle-plugin diff --git a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java index 3cc42875f1..731884339a 100644 --- a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java +++ b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java @@ -48,6 +48,8 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.function.BiConsumer; import java.util.stream.Stream; +import static org.apache.jackrabbit.oak.segment.remote.RemoteUtilities.OFF_HEAP; + public class PersistentDiskCache extends AbstractPersistentCache { private static final Logger logger = LoggerFactory.getLogger(PersistentDiskCache.class); public static final int DEFAULT_MAX_CACHE_SIZE_MB = 512; @@ -100,7 +102,12 @@ public class PersistentDiskCache extends AbstractPersistentCache { try (FileInputStream fis = new FileInputStream(segmentFile); FileChannel channel = fis.getChannel()) { int length = (int) channel.size(); - Buffer buffer = Buffer.allocateDirect(length); + Buffer buffer; + if (OFF_HEAP) { + buffer = Buffer.allocateDirect(length); + } else { + buffer = Buffer.allocate(length); + } if (buffer.readFully(channel, 0) < length) { throw new EOFException(); } diff --git a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java index ee2f7687cf..659b21e48f 100644 --- a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java +++ b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java @@ -40,6 +40,8 @@ import java.util.Properties; import java.util.UUID; import java.util.concurrent.TimeUnit; +import static org.apache.jackrabbit.oak.segment.remote.RemoteUtilities.OFF_HEAP; + public class PersistentRedisCache extends AbstractPersistentCache { private static final Logger logger = LoggerFactory.getLogger(PersistentRedisCache.class); public static final int DEFAULT_REDIS_CACHE_EXPIRE_SECONDS = 3600 * 24 * 2; @@ -133,8 +135,12 @@ public class PersistentRedisCache extends AbstractPersistentCache { long elapsed = stopwatch.elapsed(TimeUnit.NANOSECONDS); redisCacheIOMonitor.afterSegmentRead(null, msb, lsb, bytes.length, elapsed); - Buffer buffer = Buffer.allocateDirect(bytes.length); - + Buffer buffer; + if (OFF_HEAP) { + buffer = Buffer.allocateDirect(bytes.length); + } else { + buffer = Buffer.allocate(bytes.length); + } buffer.put(bytes); buffer.flip(); return buffer;