Author: alexparvulescu
Date: Thu Sep  8 12:59:00 2016
New Revision: 1759807

URL: http://svn.apache.org/viewvc?rev=1759807&view=rev
Log:
OAK-4777 Use gc generation from SegmentId instead of the Segment itself


Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java?rev=1759807&r1=1759806&r2=1759807&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreBackup.java
 Thu Sep  8 12:59:00 2016
@@ -69,7 +69,7 @@ public class FileStoreBackup {
         SegmentNodeState current = reader.readHeadState(revisions);
         try {
             int gen = 0;
-            gen = current.getRecordId().getSegment().getGcGeneration();
+            gen = current.getRecordId().getSegmentId().getGcGeneration();
             SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
                     backup,
                     backup.getTracker(),

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java?rev=1759807&r1=1759806&r2=1759807&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/backup/FileStoreRestore.java
 Thu Sep  8 12:59:00 2016
@@ -61,7 +61,7 @@ public class FileStoreRestore {
         SegmentNodeState current = store.getHead();
         try {
             SegmentNodeState head = restore.getHead();
-            int gen = head.getRecordId().getSegment().getGcGeneration();
+            int gen = head.getRecordId().getSegmentId().getGcGeneration();
             SegmentBufferWriter bufferWriter = new SegmentBufferWriter(
                     store,
                     store.getTracker(),

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java?rev=1759807&r1=1759806&r2=1759807&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
 Thu Sep  8 12:59:00 2016
@@ -302,7 +302,7 @@ public class SegmentBufferWriter impleme
         if (!DISABLE_GENERATION_CHECK) {
             try {
                 if (isDataSegmentId(id.getLeastSignificantBits())) {
-                    if (id.getSegment().getGcGeneration() < generation) {
+                    if (id.getGcGeneration() < generation) {
                         LOG.warn("Detected reference from {} to segment {} 
from a previous gc generation.",
                                 info(this.segment), info(id.getSegment()), new 
Exception());
                     }

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java?rev=1759807&r1=1759806&r2=1759807&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentGraph.java
 Thu Sep  8 12:59:00 2016
@@ -538,9 +538,10 @@ public final class SegmentGraph {
                     tokenizer.read('{');
                     
infoMap.putAll(JsonObject.create(tokenizer).getProperties());
                 }
-                Segment segment = getSegmentId().getSegment();
+                SegmentId segmentId = getSegmentId();
+                Segment segment = segmentId.getSegment();
                 infoMap.put("size", valueOf(segment.size()));
-                infoMap.put("gc", valueOf(segment.getGcGeneration()));
+                infoMap.put("gc", valueOf(segmentId.getGcGeneration()));
                 return infoMap;
             } catch (SegmentNotFoundException e) {
                 return singletonMap("error", getStackTraceAsString(e));

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java?rev=1759807&r1=1759806&r2=1759807&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
 Thu Sep  8 12:59:00 2016
@@ -172,6 +172,7 @@ public class SegmentId implements Compar
      */
     void loaded(@Nonnull Segment segment) {
         this.segment = segment;
+        this.gcGeneration = segment.getGcGeneration();
     }
 
     /**
@@ -204,6 +205,18 @@ public class SegmentId implements Compar
         return new UUID(msb, lsb);
     }
 
+    /**
+     * Get the underlying segment's gc generation. Might cause the segment to
+     * get loaded if the generation info is missing
+     * @return the segment's gc generation
+     */
+    public int getGcGeneration() {
+        if (gcGeneration < 0) {
+            getSegment();
+        }
+        return gcGeneration;
+    }
+
     // --------------------------------------------------------< Comparable >--
 
     @Override

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java?rev=1759807&r1=1759806&r2=1759807&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
 Thu Sep  8 12:59:00 2016
@@ -1196,7 +1196,7 @@ public class SegmentWriter {
 
         private boolean isOldGeneration(RecordId id) {
             try {
-                int thatGen = id.getSegment().getGcGeneration();
+                int thatGen = id.getSegmentId().getGcGeneration();
                 int thisGen = writer.getGeneration();
                 return thatGen < thisGen;
             } catch (SegmentNotFoundException snfe) {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1759807&r1=1759806&r2=1759807&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
 Thu Sep  8 12:59:00 2016
@@ -466,7 +466,7 @@ public class FileStore implements Segmen
     }
 
     private int getGcGeneration() {
-        return revisions.getHead().getSegment().getGcGeneration();
+        return revisions.getHead().getSegmentId().getGcGeneration();
     }
 
     @Nonnull


Reply via email to