You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Marcel Reutegger (Jira)" <ji...@apache.org> on 2020/07/07 15:39:00 UTC
[jira] [Comment Edited] (OAK-9132) Feature toggles
[ 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)