Author: jukka
Date: Wed Jul 17 13:54:19 2013
New Revision: 1504139
URL: http://svn.apache.org/r1504139
Log:
OAK-788L File backend for the SegmentMK
Increase concurrency by avoiding too aggressive synchronization
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1504139&r1=1504138&r2=1504139&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
Wed Jul 17 13:54:19 2013
@@ -21,6 +21,7 @@ import static com.google.common.base.Pre
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.collect.Lists.newArrayListWithCapacity;
import static com.google.common.collect.Lists.newLinkedList;
+import static com.google.common.collect.Maps.newConcurrentMap;
import static com.google.common.collect.Maps.newHashMap;
import static java.nio.channels.FileChannel.MapMode.READ_WRITE;
import static
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
@@ -124,7 +125,7 @@ public class FileStore implements Segmen
private final Map<String, Journal> journals = newHashMap();
- private final Map<UUID, SegmentReference> references = newHashMap();
+ private final Map<UUID, SegmentReference> references = newConcurrentMap();
private final Cache<UUID, Segment> segments =
CacheBuilder.newBuilder().maximumSize(1000).build();
@@ -237,7 +238,7 @@ public class FileStore implements Segmen
}
@Override
- public synchronized Segment readSegment(final UUID id) {
+ public Segment readSegment(final UUID id) {
try {
return segments.get(id, new Callable<Segment>() {
@Override
@@ -294,7 +295,7 @@ public class FileStore implements Segmen
}
@Override
- public synchronized void deleteSegment(UUID segmentId) {
+ public void deleteSegment(UUID segmentId) {
if (references.remove(segmentId) == null) {
throw new IllegalStateException("Missing segment: " + segmentId);
}