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);
         }
     }
 
