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 re...@apache.org on 2026/06/10 13:28:37 UTC
(jackrabbit-oak) 01/01: OAK-12253: add a mechanism to override FT defaults via system property
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch OAK-12253
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 1e210a2eed71b3a214dd72103aed0fef737be3e0
Author: Julian Reschke <re...@apache.org>
AuthorDate: Wed Jun 10 14:28:11 2026 +0100
OAK-12253: add a mechanism to override FT defaults via system property
---
.../java/org/apache/jackrabbit/oak/spi/toggle/Feature.java | 8 +++++++-
.../apache/jackrabbit/oak/spi/toggle/FeatureToggleTest.java | 11 +++++++++++
oak-core-spi/src/test/resources/logback-test.xml | 2 +-
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/toggle/Feature.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/toggle/Feature.java
index afad73f2e6..7fe362365a 100644
--- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/toggle/Feature.java
+++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/toggle/Feature.java
@@ -22,8 +22,11 @@ import java.io.Closeable;
import java.util.Collections;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.jackrabbit.oak.commons.properties.SystemPropertySupplier;
import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* A feature toggle to control new functionality. The default state of a feature
@@ -40,6 +43,7 @@ import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
*/
public final class Feature implements Closeable {
+ private static final Logger log = LoggerFactory.getLogger(Feature.class);
private final AtomicBoolean value;
private final Registration registration;
@@ -60,7 +64,9 @@ public final class Feature implements Closeable {
* @return the feature toggle.
*/
public static Feature newFeature(String name, Whiteboard whiteboard) {
- AtomicBoolean value = new AtomicBoolean();
+ // by default the initial value is false, but it can be overridden by a system property
+ AtomicBoolean value = new AtomicBoolean(
+ SystemPropertySupplier.create("oak-feature." + name, false).logSuccessAs("INFO").get());
FeatureToggle adapter = new FeatureToggle(name, value);
return new Feature(value, whiteboard.register(
FeatureToggle.class, adapter, Collections.emptyMap()));
diff --git a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/spi/toggle/FeatureToggleTest.java b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/spi/toggle/FeatureToggleTest.java
index 7999b04f52..803b1c13a5 100644
--- a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/spi/toggle/FeatureToggleTest.java
+++ b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/spi/toggle/FeatureToggleTest.java
@@ -50,6 +50,17 @@ public class FeatureToggleTest {
}
}
+ @Test
+ public void defaultOverridden() {
+ String sysPropName = "oak-feature.my.toggle";
+ System.setProperty(sysPropName, "true");
+ try (Feature feature = newFeature("my.toggle", whiteboard)) {
+ assertTrue(feature.isEnabled());
+ } finally {
+ System.clearProperty(sysPropName);
+ }
+ }
+
@Test
public void register() {
try (Feature feature = newFeature("my.toggle", whiteboard)) {
diff --git a/oak-core-spi/src/test/resources/logback-test.xml b/oak-core-spi/src/test/resources/logback-test.xml
index 042856c27b..efce63c418 100644
--- a/oak-core-spi/src/test/resources/logback-test.xml
+++ b/oak-core-spi/src/test/resources/logback-test.xml
@@ -27,7 +27,7 @@
</encoder>
</appender>
-<root level="ERROR">
+<root level="INFO">
<!--
<appender-ref ref="console"/>
-->