@@ -30,6 +30,7 @@ public enum OTPFeature {
3030 CostlyAssertions (
3131 true ,
3232 false ,
33+ true ,
3334 "Enable some resource consuming assertions which are typically not meant to be run in production."
3435 ),
3536 DebugUi (
@@ -171,14 +172,19 @@ public enum OTPFeature {
171172
172173 private final boolean enabledByDefault ;
173174 private final boolean sandbox ;
174-
175+ private final boolean severeWarningWhenOn ;
175176 private boolean enabled ;
176177 private final String doc ;
177178
178179 OTPFeature (boolean defaultEnabled , boolean sandbox , String doc ) {
180+ this (defaultEnabled , sandbox , false , doc );
181+ }
182+
183+ OTPFeature (boolean defaultEnabled , boolean sandbox , boolean severeWarningWhenOn , String doc ) {
179184 this .enabledByDefault = defaultEnabled ;
180185 this .enabled = defaultEnabled ;
181186 this .sandbox = sandbox ;
187+ this .severeWarningWhenOn = severeWarningWhenOn ;
182188 this .doc = doc ;
183189 }
184190
@@ -195,6 +201,13 @@ public static void enableFeatures(Map<OTPFeature, Boolean> map) {
195201 public static void logFeatureSetup () {
196202 LOG .info ("Features turned on: \n \t {}" , valuesAsString (true ));
197203 LOG .info ("Features turned off: \n \t {}" , valuesAsString (false ));
204+ var featureWarnings = enabledValuesWithSevereWarningAsString ();
205+ if (!featureWarnings .isBlank ()) {
206+ LOG .warn (
207+ "FEATURES THAT SHOULD BE TURNED OFF IN PRODUCTION: \n \t {}" ,
208+ enabledValuesWithSevereWarningAsString ()
209+ );
210+ }
198211 }
199212
200213 /**
@@ -287,4 +300,11 @@ private static String valuesAsString(boolean enabled) {
287300 .map (Enum ::name )
288301 .collect (Collectors .joining ("\n \t " ));
289302 }
303+
304+ private static String enabledValuesWithSevereWarningAsString () {
305+ return Arrays .stream (values ())
306+ .filter (it -> it .enabled && it .severeWarningWhenOn )
307+ .map (Enum ::name )
308+ .collect (Collectors .joining ("\n \t " ));
309+ }
290310}
0 commit comments