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