You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2011/09/07 15:35:56 UTC
svn commit: r1166171 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk:
store/PersistenceManager.java util/SimpleLRUCache.java
util/SmallLRUCache.java
Author: stefan
Date: Wed Sep 7 13:35:55 2011
New Revision: 1166171
URL: http://svn.apache.org/viewvc?rev=1166171&view=rev
Log:
some refactoring: extracting blob handling interface from loose object store interface
oops...
Added:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SimpleLRUCache.java
- copied, changed from r1165228, jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SmallLRUCache.java
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistenceManager.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SmallLRUCache.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistenceManager.java?rev=1166171&r1=1166170&r2=1166171&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/PersistenceManager.java Wed Sep 7 13:35:55 2011
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.mk.store;
import org.apache.jackrabbit.mk.blobs.BlobStore;
+import org.apache.jackrabbit.mk.util.SimpleLRUCache;
import java.io.InputStream;
import java.util.concurrent.locks.ReentrantLock;
@@ -31,6 +32,8 @@ public class PersistenceManager {
RevisionStore revStore;
BlobStore blobStore;
+ SimpleLRUCache cache;
+
public void initialize(RevisionStore revs, BlobStore blobs) throws Exception {
if (initialized) {
throw new IllegalStateException("already initialized");
@@ -39,6 +42,8 @@ public class PersistenceManager {
revStore = revs;
blobStore = blobs;
+ cache = SimpleLRUCache.newInstance(10000);
+
// make sure we've got a HEAD commit
String head = revStore.getHeadId();
if (head == null || head.length() == 0) {
@@ -58,6 +63,9 @@ public class PersistenceManager {
}
revStore.close();
revStore = null;
+
+ cache.clear();
+
initialized = false;
}
@@ -66,7 +74,15 @@ public class PersistenceManager {
throw new IllegalStateException("not initialized");
}
- return Node.fromBytes(id, revStore.get(id));
+ Node node = (Node) cache.get(id);
+ if (node != null) {
+ return node;
+ }
+
+ node = Node.fromBytes(id, revStore.get(id));
+ cache.put(id, node);
+
+ return node;
}
public String putNode(MutableNode node) throws Exception {
@@ -82,7 +98,15 @@ public class PersistenceManager {
throw new IllegalStateException("not initialized");
}
- return Commit.fromBytes(id, revStore.get(id));
+ Commit commit = (Commit) cache.get(id);
+ if (commit != null) {
+ return commit;
+ }
+
+ commit = Commit.fromBytes(id, revStore.get(id));
+ cache.put(id, commit);
+
+ return commit;
}
public String putCommit(MutableCommit commit) throws Exception {
Copied: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SimpleLRUCache.java (from r1165228, jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SmallLRUCache.java)
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SimpleLRUCache.java?p2=jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SimpleLRUCache.java&p1=jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SmallLRUCache.java&r1=1165228&r2=1166171&rev=1166171&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SmallLRUCache.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/SimpleLRUCache.java Wed Sep 7 13:35:55 2011
@@ -25,12 +25,12 @@ import java.util.Map;
* @param <K> the key
* @param <V> the value
*/
-public class SmallLRUCache<K, V> extends LinkedHashMap<K, V> {
+public class SimpleLRUCache<K, V> extends LinkedHashMap<K, V> {
private static final long serialVersionUID = 1L;
private int size;
- private SmallLRUCache(int size) {
+ private SimpleLRUCache(int size) {
super(size, (float) 0.75, true);
this.size = size;
}
@@ -43,8 +43,8 @@ public class SmallLRUCache<K, V> extends
* @param size the number of elements
* @return the object
*/
- public static <K, V> SmallLRUCache<K, V> newInstance(int size) {
- return new SmallLRUCache<K, V>(size);
+ public static <K, V> SimpleLRUCache<K, V> newInstance(int size) {
+ return new SimpleLRUCache<K, V>(size);
}
public void setMaxSize(int size) {