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/17 09:18:07 UTC

svn commit: r1744222 - /jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java

Author: mduerig
Date: Tue May 17 09:18:06 2016
New Revision: 1744222

URL: http://svn.apache.org/viewvc?rev=1744222&view=rev
Log:
OAK-4277: Finalise de-duplication caches
Comments clarifying writing of node states, its generations and usage of the deduplication cache

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java

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=1744222&r1=1744221&r2=1744222&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 Tue May 17 09:18:06 2016
@@ -844,11 +844,15 @@ public class SegmentWriter {
                 SegmentNodeState sns = ((SegmentNodeState) state);
                 if (hasSegment(sns)) {
                     if (isOldGen(sns.getRecordId())) {
+                        // This is a segment node state from an old generation. Check whether
+                        // an equivalent one of the current generation is in the cache
                         RecordId cachedId = nodeCache.generation(generation()).get(sns.getStableId());
                         if (cachedId != null) {
                             return cachedId;
                         }
                     } else {
+                        // This segment node state is already in this store,
+                        // no need to write it again,
                         return sns.getRecordId();
                     }
                 }
@@ -856,6 +860,9 @@ public class SegmentWriter {
 
             RecordId recordId = writeNodeUncached(state, depth);
             if (state instanceof SegmentNodeState) {
+                // This node state has been rewritten because it is from an older
+                // generation (e.g. due to compaction). Put it into the cache for
+                // deduplication of hard links to it (e.g. checkpoints).
                 SegmentNodeState sns = (SegmentNodeState) state;
                 nodeCache.generation(generation()).put(sns.getStableId(), recordId, depth);
             }