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 md...@apache.org on 2016/05/10 15:05:10 UTC

svn commit: r1743209 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/segment/ test/java/org/apache/jackrabbit/oak/segment/

Author: mduerig
Date: Tue May 10 15:05:10 2016
New Revision: 1743209

URL: http://svn.apache.org/viewvc?rev=1743209&view=rev
Log:
OAK-4289: Remove the gc generation from the segment meta data
Retrieve the gc generation through the segment API and remove it from the segment meta data

Modified:
    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/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java

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=1743209&r1=1743208&r2=1743209&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 Tue May 10 15:05:10 2016
@@ -169,13 +169,9 @@ public class SegmentBufferWriter impleme
         roots.clear();
         blobrefs.clear();
 
-        // FIXME OAK-4289: Remove the gc generation from the segment meta data
-        // Don't write the GC generation into the segment info
-        // as it is now available from the segment header. Update the tooling
-        // accordingly (SegmentGraph).
-        String metaInfo = "{\"wid\":\"" + wid + '"' +
+        String metaInfo =
+            "{\"wid\":\"" + wid + '"' +
             ",\"sno\":" + tracker.getNextSegmentNo() +
-            ",\"gc\":" + generation +
             ",\"t\":" + currentTimeMillis() + "}";
         try {
             segment = new Segment(tracker, buffer, metaInfo);

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=1743209&r1=1743208&r2=1743209&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 Tue May 10 15:05:10 2016
@@ -291,18 +291,12 @@ public final class SegmentGraph {
         return parseSegmentGraph(fileStore, roots, Predicates.<UUID>alwaysTrue(), new Function<UUID, String>() {
             @Override @Nullable
             public String apply(UUID segmentId) {
-                Map<String, String> info = getSegmentInfoMap(segmentId, fileStore.getTracker());
-                if (info != null) {
-                    String error = info.get("error");
-                    if (error != null) {
-                        return "Error";
-                    } else {
-                        return info.get("gc");
-                    }
-                } else if (!isDataSegmentId(segmentId.getLeastSignificantBits())) {
-                    return "bulk";
+                Map<String, String> info = new SegmentInfo(segmentId, fileStore.getTracker()).getInfoMap();
+                String error = info.get("error");
+                if (error != null) {
+                    return "Error";
                 } else {
-                    return "null";
+                    return info.get("gc");
                 }
             }
         });
@@ -451,10 +445,11 @@ public final class SegmentGraph {
     }
 
     private static void writeNode(UUID node, PrintWriter writer, boolean inHead, Date epoch, SegmentTracker tracker) {
-        Map<String, String> sInfo = getSegmentInfoMap(node, tracker);
-        if (!sInfo.containsKey("t")) {
+        SegmentInfo segmentInfo = new SegmentInfo(node, tracker);
+        if (!segmentInfo.isData()) {
             writer.write(node + ",b,bulk,b,-1,-1," + inHead + "\n");
         } else {
+            Map<String, String> sInfo = segmentInfo.getInfoMap();
             String error = sInfo.get("error");
             if (error != null) {
                 writer.write(node +
@@ -494,10 +489,6 @@ public final class SegmentGraph {
         return Long.valueOf(string);
     }
 
-    private static Map<String, String> getSegmentInfoMap(UUID segment, SegmentTracker tracker) {
-        return new SegmentInfo(segment, tracker).getInfoMap();
-    }
-
     private static String getSegmentInfo(UUID segment, SegmentTracker tracker) {
         return new SegmentInfo(segment, tracker).getInfo();
     }
@@ -525,10 +516,6 @@ public final class SegmentGraph {
             return id;
         }
 
-        int getSize() {
-            return getSegmentId().getSegment().size();
-        }
-
         String getInfo() {
             if (isData()) {
                 return getSegmentId().getSegment().getSegmentInfo();
@@ -546,7 +533,9 @@ public final class SegmentGraph {
                     tokenizer.read('{');
                     infoMap.putAll(JsonObject.create(tokenizer).getProperties());
                 }
-                infoMap.put("size", valueOf(getSize()));
+                Segment segment = getSegmentId().getSegment();
+                infoMap.put("size", valueOf(segment.size()));
+                infoMap.put("gc", valueOf(segment.getGcGen()));
                 return infoMap;
             } catch (SegmentNotFoundException e) {
                 return singletonMap("error", getStackTraceAsString(e));

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java?rev=1743209&r1=1743208&r2=1743209&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentSizeTest.java Tue May 10 15:05:10 2016
@@ -48,7 +48,7 @@ public class SegmentSizeTest {
 
         builder = EMPTY_NODE.builder();
         builder.setProperty("foo", "bar");
-        expectSize(112, builder);
+        expectSize(96, builder);
         expectAmortizedSize(12, builder);
 
         builder = EMPTY_NODE.builder();
@@ -137,7 +137,7 @@ public class SegmentSizeTest {
         allow.setProperty("rep:principalName", "administrators");
         allow.setProperty(PropertyStates.createProperty(
                 "rep:privileges", ImmutableList.of("jcr:all"), Type.NAMES));
-        expectSize(384, builder);
+        expectSize(368, builder);
         expectAmortizedSize(96, builder);
 
         NodeBuilder deny0 = builder.child("deny0");