OAK-4287: Disable / remove SegmentBufferWriter#checkGCGen
Add feature flag disable-generation-check to disable the gc generation check

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/oak/trunk/oak-segment-tar@1753387 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java b/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
index c39cae3..f1d6335 100644
--- a/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
+++ b/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
@@ -70,6 +70,8 @@
 public class SegmentBufferWriter implements WriteOperationHandler {
     private static final Logger LOG = LoggerFactory.getLogger(SegmentBufferWriter.class);
 
+    private static final boolean DISABLE_GENERATION_CHECK = Boolean.getBoolean("disable-generation-check");
+
     /**
      * The set of root records (i.e. ones not referenced by other records)
      * in this segment.
@@ -239,16 +241,18 @@
     // FIXME OAK-4287: Disable / remove SegmentBufferWriter#checkGCGeneration
     // Disable/remove this in production
     private void checkGCGeneration(SegmentId id) {
-        try {
-            if (isDataSegmentId(id.getLeastSignificantBits())) {
-                if (id.getSegment().getGcGeneration() < generation) {
-                    LOG.warn("Detected reference from {} to segment {} from a previous gc generation.",
-                        info(this.segment), info(id.getSegment()), new Exception());
+        if (!DISABLE_GENERATION_CHECK) {
+            try {
+                if (isDataSegmentId(id.getLeastSignificantBits())) {
+                    if (id.getSegment().getGcGeneration() < generation) {
+                        LOG.warn("Detected reference from {} to segment {} from a previous gc generation.",
+                                info(this.segment), info(id.getSegment()), new Exception());
+                    }
                 }
+            } catch (SegmentNotFoundException snfe) {
+                LOG.warn("Detected reference from {} to non existing segment {}",
+                        info(this.segment), id, snfe);
             }
-        } catch (SegmentNotFoundException snfe) {
-            LOG.warn("Detected reference from {} to non existing segment {}",
-                info(this.segment), id, snfe);
         }
     }