瀏覽代碼

Remove logging of trusted system classes to not risk causing ClassCircularityError. (#134431)

We've seen this previously (and predictably) in #131539 due to logging Exceptions
in isTriviallyAllowed. #133269 shows exactly the same symptoms.

Fixes #133269
Fixes #133267
Fixes #133268
Moritz Mack 1 月之前
父節點
當前提交
1b92516ead

+ 3 - 3
libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PolicyManager.java

@@ -369,15 +369,15 @@ public class PolicyManager {
     boolean isTriviallyAllowed(Class<?> requestingClass) {
         // note: do not log exceptions in here, this could interfere with loading of additionally necessary classes such as ThrowableProxy
         if (requestingClass == null) {
-            generalLogger.debug("Entitlement trivially allowed: no caller frames outside the entitlement library");
+            generalLogger.trace("Entitlement trivially allowed: no caller frames outside the entitlement library");
             return true;
         }
         if (requestingClass == NO_CLASS) {
-            generalLogger.debug("Entitlement trivially allowed from outermost frame");
+            generalLogger.trace("Entitlement trivially allowed from outermost frame");
             return true;
         }
         if (isTrustedSystemClass(requestingClass)) {
-            generalLogger.debug("Entitlement trivially allowed from system module [{}]", requestingClass.getModule().getName());
+            // note: no logging here, this has caused ClassCircularityErrors in certain cases
             return true;
         }
         generalLogger.trace("Entitlement not trivially allowed");

+ 3 - 3
server/src/internalClusterTest/java/org/elasticsearch/cluster/settings/ClusterSettingsIT.java

@@ -574,7 +574,7 @@ public class ClusterSettingsIT extends ESIntegTestCase {
         assertEquals("Unknown level constant [BOOM].", e.getMessage());
 
         try {
-            final Settings.Builder testSettings = Settings.builder().put("logger.test", "TRACE").put("logger._root", "trace");
+            final Settings.Builder testSettings = Settings.builder().put("logger.test", "DEBUG").put("logger._root", "debug");
             ClusterUpdateSettingsRequestBuilder updateBuilder = clusterAdmin().prepareUpdateSettings(
                 TEST_REQUEST_TIMEOUT,
                 TEST_REQUEST_TIMEOUT
@@ -582,8 +582,8 @@ public class ClusterSettingsIT extends ESIntegTestCase {
             consumer.accept(testSettings, updateBuilder);
 
             updateBuilder.get();
-            assertEquals(Level.TRACE, LogManager.getLogger("test").getLevel());
-            assertEquals(Level.TRACE, LogManager.getRootLogger().getLevel());
+            assertEquals(Level.DEBUG, LogManager.getLogger("test").getLevel());
+            assertEquals(Level.DEBUG, LogManager.getRootLogger().getLevel());
         } finally {
             ClusterUpdateSettingsRequestBuilder undoBuilder = clusterAdmin().prepareUpdateSettings(
                 TEST_REQUEST_TIMEOUT,