[
https://issues.apache.org/jira/browse/OAK-9132?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17150836#comment-17150836
]
Marcel Reutegger edited comment on OAK-9132 at 7/7/20, 3:38 PM:
----------------------------------------------------------------
A very simple default implementation in Oak could then read from a system
property when the toggle is registered with the Whiteboard:
{noformat}
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (revision
1879558)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (working copy)
@@ -125,6 +125,7 @@
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.spi.toggle.FeatureToggle;
import org.apache.jackrabbit.oak.spi.whiteboard.CompositeRegistration;
import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
@@ -301,6 +302,11 @@
}
} else if (type == Observer.class && store instanceof Observable) {
observerSubscription.register(((Observable)
store).addObserver((Observer) service));
+ } else if (type == FeatureToggle.class) {
+ // initialize the feature toggle with the value of
+ // the corresponding system property
+ FeatureToggle ft = (FeatureToggle) service;
+ ft.setEnabled(Boolean.getBoolean(ft.getName()));
}
ObjectName objectName = null;
{noformat}
was (Author: mreutegg):
A very simple default implementation in Oak could then read from a system
property when the toggle is registered with the Whiteboard:
{noformat}
Index: oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
===================================================================
--- oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (revision
1879464)
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (working copy)
@@ -125,6 +125,7 @@
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.spi.toggle.FeatureToggleAdapter;
import org.apache.jackrabbit.oak.spi.whiteboard.CompositeRegistration;
import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
@@ -301,6 +302,11 @@
}
} else if (type == Observer.class && store instanceof Observable) {
observerSubscription.register(((Observable)
store).addObserver((Observer) service));
+ } else if (type == FeatureToggleAdapter.class) {
+ // initialize the feature toggle with the value of
+ // the corresponding system property
+ FeatureToggleAdapter ft = (FeatureToggleAdapter) service;
+ ft.setEnabled(Boolean.getBoolean(ft.getName()));
}
ObjectName objectName = null;
{noformat}
> Feature toggles
> ---------------
>
> Key: OAK-9132
> URL: https://issues.apache.org/jira/browse/OAK-9132
> Project: Jackrabbit Oak
> Issue Type: New Feature
> Components: core-spi
> Reporter: Marcel Reutegger
> Assignee: Marcel Reutegger
> Priority: Minor
>
> Introduce the concept of [feature
> toggles|https://martinfowler.com/articles/feature-toggles.html]. Oak already
> has various system properties that control configuration or runtime behaviour
> of the repository. With Oak moving to a more frequent release cycle there is
> an increased need for control over new features. Some features should not be
> enabled by default, for other features we may want to have a way to disable
> if they introduce unexpected side effects for some users. Preferably, feature
> toggles can be changed at runtime and no restart is required.
> It should also be possible to integrate third party systems that manage
> feature toggles centrally.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)