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 ad...@apache.org on 2020/10/05 09:47:44 UTC

svn commit: r1882250 - in /jackrabbit/oak/trunk/oak-segment-remote/src: main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/ test/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/

Author: adulceanu
Date: Mon Oct  5 09:47:44 2020
New Revision: 1882250

URL: http://svn.apache.org/viewvc?rev=1882250&view=rev
Log:
OAK-9250 - 3rd level segment cache: perform direct memory allocation based on the value of the system property
Contribution by Miroslav Smiljanic

Modified:
    jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java
    jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java
    jackrabbit/oak/trunk/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/AbstractPersistentCacheTest.java

Modified: jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java?rev=1882250&r1=1882249&r2=1882250&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java (original)
+++ jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentDiskCache.java Mon Oct  5 09:47:44 2020
@@ -48,6 +48,8 @@ import java.util.concurrent.atomic.Atomi
 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
                 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();
                     }

Modified: jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java?rev=1882250&r1=1882249&r2=1882250&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java (original)
+++ jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/PersistentRedisCache.java Mon Oct  5 09:47:44 2020
@@ -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 extend
                 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;

Modified: jackrabbit/oak/trunk/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/AbstractPersistentCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/AbstractPersistentCacheTest.java?rev=1882250&r1=1882249&r2=1882250&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/AbstractPersistentCacheTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-remote/src/test/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/AbstractPersistentCacheTest.java Mon Oct  5 09:47:44 2020
@@ -33,7 +33,7 @@ import static org.junit.Assert.*;
 
 public abstract class AbstractPersistentCacheTest {
 
-    protected static final int SEGMENTS = 1000;
+    protected static final int SEGMENTS = 750;
     protected static final int THREADS = 50;
     protected static final int SEGMENTS_PER_THREAD = SEGMENTS / THREADS;
     protected static final int TIMEOUT_COUNT = 50;