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 th...@apache.org on 2015/08/14 15:00:56 UTC
svn commit: r1695887 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/cache/
main/java/org/apache/jackrabbit/oak/plugins/blob/
main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/
main/java/org/apache/jackrabbit/oak/p...
Author: thomasm
Date: Fri Aug 14 13:00:55 2015
New Revision: 1695887
URL: http://svn.apache.org/r1695887
Log:
OAK-3229 Log initialization of the cache and the persistent cache
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/PersistentCache.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/cache/CacheLIRS.java Fri Aug 14 13:00:55 2015
@@ -27,6 +27,7 @@ import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -73,6 +74,7 @@ import org.slf4j.LoggerFactory;
public class CacheLIRS<K, V> implements LoadingCache<K, V> {
private static final Logger LOG = LoggerFactory.getLogger(CacheLIRS.class);
+ private static final AtomicInteger NEXT_CACHE_ID = new AtomicInteger();
/**
* Listener for items that are evicted from the cache. The listener
@@ -98,6 +100,8 @@ public class CacheLIRS<K, V> implements
*/
void evicted(@Nonnull K key, @Nullable V value);
}
+
+ private final int cacheId = NEXT_CACHE_ID.getAndIncrement();
/**
* The maximum memory this cache should use.
@@ -142,7 +146,7 @@ public class CacheLIRS<K, V> implements
* @param maxEntries the maximum number of entries
*/
public CacheLIRS(int maxEntries) {
- this(null, maxEntries, 1, 16, maxEntries / 100, null, null);
+ this(null, maxEntries, 1, 16, maxEntries / 100, null, null, null);
}
/**
@@ -158,7 +162,9 @@ public class CacheLIRS<K, V> implements
@SuppressWarnings("unchecked")
CacheLIRS(Weigher<K, V> weigher, long maxMemory, int averageMemory,
int segmentCount, int stackMoveDistance, final CacheLoader<K, V> loader,
- EvictionCallback<K, V> evicted) {
+ EvictionCallback<K, V> evicted, String module) {
+ LOG.debug("Init #{}, module={}, maxMemory={}, segmentCount={}, stackMoveDistance={}",
+ cacheId, module, maxMemory, segmentCount, segmentCount);
this.weigher = weigher;
setMaxMemory(maxMemory);
setAverageMemory(averageMemory);
@@ -846,6 +852,9 @@ public class CacheLIRS<K, V> implements
* @return the value, or null if there is no resident entry
*/
V get(Object key, int hash) {
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("#{} get hash {} key {}", cache.cacheId, hash, key);
+ }
Entry<K, V> e = find(key, hash);
if (e == null) {
// the entry was not found
@@ -1474,6 +1483,7 @@ public class CacheLIRS<K, V> implements
*/
public static class Builder<K, V> {
+ private String module;
private Weigher<K, V> weigher;
private long maxWeight;
private int averageWeight = 100;
@@ -1484,6 +1494,11 @@ public class CacheLIRS<K, V> implements
public Builder<K, V> recordStats() {
return this;
}
+
+ public Builder<K, V> module(String module) {
+ this.module = module;
+ return this;
+ }
public Builder<K, V> weigher(Weigher<K, V> weigher) {
this.weigher = weigher;
@@ -1535,7 +1550,7 @@ public class CacheLIRS<K, V> implements
public CacheLIRS<K, V> build(CacheLoader<K, V> cacheLoader) {
return new CacheLIRS<K, V>(weigher, maxWeight, averageWeight,
- segmentCount, stackMoveDistance, cacheLoader, evicted);
+ segmentCount, stackMoveDistance, cacheLoader, evicted, module);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/CachingBlobStore.java Fri Aug 14 13:00:55 2015
@@ -35,6 +35,7 @@ public abstract class CachingBlobStore e
public CachingBlobStore(long cacheSize) {
this.blobCacheSize = cacheSize;
cache = CacheLIRS.<String, byte[]>newBuilder().
+ module("CachingBlobStore").
maximumWeight(cacheSize).
averageWeight(getBlockSize() / 2).
weigher(new Weigher<String, byte[]>() {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java Fri Aug 14 13:00:55 2015
@@ -107,6 +107,7 @@ public class DataStoreBlobStore implemen
this.encodeLengthInId = encodeLengthInId;
this.cache = CacheLIRS.<String, byte[]>newBuilder()
+ .module("DataStoreBlobStore")
.maximumWeight(cacheSizeInMB * FileUtils.ONE_MB)
.weigher(new Weigher<String, byte[]>() {
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java Fri Aug 14 13:00:55 2015
@@ -868,7 +868,7 @@ public class DocumentMK {
DocumentNodeStore docNodeStore,
DocumentStore docStore
) {
- Cache<K, V> cache = buildCache(maxWeight);
+ Cache<K, V> cache = buildCache(cacheType.name(), maxWeight);
PersistentCache p = getPersistentCache();
if (p != null) {
if (docNodeStore != null) {
@@ -895,6 +895,7 @@ public class DocumentMK {
}
private <K extends CacheValue, V extends CacheValue> Cache<K, V> buildCache(
+ String module,
long maxWeight) {
// by default, use the LIRS cache when using the persistent cache,
// but don't use it otherwise
@@ -905,6 +906,7 @@ public class DocumentMK {
}
if (useLirs) {
return CacheLIRS.<K, V>newBuilder().
+ module(module).
weigher(new Weigher<K, V>() {
@Override
public int weigh(K key, V value) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/PersistentCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/PersistentCache.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/PersistentCache.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/PersistentCache.java Fri Aug 14 13:00:55 2015
@@ -71,7 +71,7 @@ public class PersistentCache {
private int exceptionCount;
public PersistentCache(String url) {
- LOG.info("start version 1");
+ LOG.info("start, url={}", url);
String[] parts = url.split(",");
String dir = parts[0];
for (String p : parts) {
@@ -299,6 +299,9 @@ public class PersistentCache {
public synchronized GarbageCollectableBlobStore wrapBlobStore(
GarbageCollectableBlobStore base) {
+ if (maxBinaryEntry == 0) {
+ return base;
+ }
BlobCache c = new BlobCache(this, base);
initGenerationCache(c);
return c;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java Fri Aug 14 13:00:55 2015
@@ -125,6 +125,7 @@ public class SegmentTracker {
}
stringCache = c;
segmentCache = CacheLIRS.<SegmentId, Segment>newBuilder()
+ .module("SegmentTracker")
.maximumSize((int) Math.min(Integer.MAX_VALUE, cacheSizeMB * MB))
.averageWeight(Segment.MAX_SEGMENT_SIZE/2)
.evictionCallback(new EvictionCallback<SegmentId, Segment>() {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/StringCache.java Fri Aug 14 13:00:55 2015
@@ -50,6 +50,7 @@ public class StringCache {
*/
StringCache(int maxSize) {
cache = CacheLIRS.<StringCacheEntry, String>newBuilder()
+ .module("StringCache")
.maximumSize(maxSize)
.averageWeight(100)
.build();
@@ -207,6 +208,15 @@ public class StringCache {
return o.hash == hash && o.msb == msb && o.lsb == lsb &&
o.offset == offset;
}
+
+ @Override
+ public String toString() {
+ StringBuilder buff = new StringBuilder();
+ buff.append(Long.toHexString(msb)).
+ append(':').append(Long.toHexString(lsb)).
+ append('+').append(Integer.toHexString(offset));
+ return buff.toString();
+ }
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java?rev=1695887&r1=1695886&r2=1695887&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/cache/CacheTest.java Fri Aug 14 13:00:55 2015
@@ -577,7 +577,7 @@ public class CacheTest {
}
private static <K, V> CacheLIRS<K, V> createCache(int maxSize, int averageSize) {
- return new CacheLIRS<K, V>(null, maxSize, averageSize, 1, 0, null, null);
+ return new CacheLIRS<K, V>(null, maxSize, averageSize, 1, 0, null, null, null);
}
@Test