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 ju...@apache.org on 2013/02/11 09:07:50 UTC

svn commit: r1444675 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment: CacheStore.java MemoryStore.java SegmentStore.java

Author: jukka
Date: Mon Feb 11 08:07:50 2013
New Revision: 1444675

URL: http://svn.apache.org/r1444675
Log:
OAK-593: Segment-based MK

Add basic journal functionality

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CacheStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MemoryStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CacheStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CacheStore.java?rev=1444675&r1=1444674&r2=1444675&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CacheStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/CacheStore.java Mon Feb 11 08:07:50 2013
@@ -43,6 +43,16 @@ public class CacheStore implements Segme
     }
 
     @Override
+    public RecordId getJournalHead() {
+        return store.getJournalHead();
+    }
+
+    @Override
+    public boolean setJournalHead(RecordId head, RecordId base) {
+        return store.setJournalHead(head, base);
+    }
+
+    @Override
     public int getMaxSegmentSize() {
         return store.getMaxSegmentSize();
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MemoryStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MemoryStore.java?rev=1444675&r1=1444674&r2=1444675&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MemoryStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MemoryStore.java Mon Feb 11 08:07:50 2013
@@ -21,6 +21,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeState;
+
 public class MemoryStore implements SegmentStore {
 
     private static final int MAX_SEGMENT_SIZE = 1 << 20; // 1MB
@@ -28,6 +30,29 @@ public class MemoryStore implements Segm
     private final Map<UUID, Segment> segments =
         Collections.synchronizedMap(new HashMap<UUID, Segment>());
 
+    private RecordId head;
+
+    public MemoryStore() {
+        SegmentWriter writer = new SegmentWriter(this);
+        this.head = writer.writeNode(MemoryNodeState.EMPTY_NODE);
+        writer.flush();
+    }
+
+    @Override
+    public synchronized RecordId getJournalHead() {
+        return head;
+    }
+
+    @Override
+    public synchronized boolean setJournalHead(RecordId head, RecordId base) {
+        if (this.head.equals(base)) {
+            this.head = head;
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     @Override
     public int getMaxSegmentSize() {
         return MAX_SEGMENT_SIZE;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java?rev=1444675&r1=1444674&r2=1444675&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java Mon Feb 11 08:07:50 2013
@@ -20,6 +20,10 @@ import java.util.UUID;
 
 public interface SegmentStore {
 
+    RecordId getJournalHead();
+
+    boolean setJournalHead(RecordId head, RecordId base);
+
     int getMaxSegmentSize();
 
     Segment readSegment(UUID segmentId);