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;