This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 88c7edd1299 SOLR-18107: Test fix testLogLevelHandlerOutput (#4146)
88c7edd1299 is described below

commit 88c7edd1299f64a36752730de5080e98172cb4e8
Author: David Smiley <[email protected]>
AuthorDate: Fri Feb 20 23:44:26 2026 -0500

    SOLR-18107: Test fix testLogLevelHandlerOutput (#4146)
---
 .../solr/handler/admin/LoggingHandlerTest.java     | 44 +++++++++++++---------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git 
a/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java 
b/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java
index 0726bec92b4..a4063b25f0e 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Map;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.solr.SolrTestCaseJ4;
@@ -66,9 +67,16 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
 
     final Configuration config = ctx.getConfiguration();
 
+    // Create and hold strong references to loggers to prevent GC from 
removing them
+    // during test execution (Log4j2 uses weak references internally)
+    Logger parentLogger = LogManager.getLogger(PARENT_LOGGER_NAME);
+    Logger aLogger = LogManager.getLogger(A_LOGGER_NAME);
+    Logger bLogger = LogManager.getLogger(B_LOGGER_NAME);
+    Logger bxLogger = LogManager.getLogger(BX_LOGGER_NAME);
+
     { // sanity check our setup...
 
-      // did anybody break the anotations?
+      // did anybody break the annotations?
       assertNotNull(this.getClass().getAnnotation(LogLevel.class));
       final String annotationConfig = 
this.getClass().getAnnotation(LogLevel.class).value();
       assertTrue("WTF: " + annotationConfig, 
annotationConfig.startsWith(PARENT_LOGGER_NAME));
@@ -88,11 +96,11 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
             config.getLoggerConfig(logger));
       }
 
-      // Either explicit, or inherited, effictive logger values...
-      for (String logger :
-          Arrays.asList(PARENT_LOGGER_NAME, A_LOGGER_NAME, B_LOGGER_NAME, 
BX_LOGGER_NAME)) {
-        assertEquals(Level.DEBUG, LogManager.getLogger(logger).getLevel());
-      }
+      // Either explicit, or inherited, effective logger values...
+      assertEquals(Level.DEBUG, parentLogger.getLevel());
+      assertEquals(Level.DEBUG, aLogger.getLevel());
+      assertEquals(Level.DEBUG, bLogger.getLevel());
+      assertEquals(Level.DEBUG, bxLogger.getLevel());
     }
 
     SolrClient client = new EmbeddedSolrServer(h.getCore());
@@ -130,18 +138,18 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
       assertLoggerLevel(updatedLoggerLevel, B_LOGGER_NAME, "TRACE", true);
       assertLoggerLevel(updatedLoggerLevel, BX_LOGGER_NAME, "TRACE", false);
 
-      // check directly with log4j what it's (updated) config has...
+      // check directly with log4j what its (updated) config has...
       assertEquals(Level.DEBUG, 
config.getLoggerConfig(PARENT_LOGGER_NAME).getExplicitLevel());
       assertEquals(Level.TRACE, 
config.getLoggerConfig(B_LOGGER_NAME).getExplicitLevel());
       assertEquals(
           "Unexpected config for BX ... expected B's config",
           config.getLoggerConfig(B_LOGGER_NAME),
           config.getLoggerConfig(BX_LOGGER_NAME));
-      // ...and what it's effective values
-      assertEquals(Level.DEBUG, 
LogManager.getLogger(PARENT_LOGGER_NAME).getLevel());
-      assertEquals(Level.DEBUG, 
LogManager.getLogger(A_LOGGER_NAME).getLevel());
-      assertEquals(Level.TRACE, 
LogManager.getLogger(B_LOGGER_NAME).getLevel());
-      assertEquals(Level.TRACE, 
LogManager.getLogger(BX_LOGGER_NAME).getLevel());
+      // ...and what its effective values are
+      assertEquals(Level.DEBUG, parentLogger.getLevel());
+      assertEquals(Level.DEBUG, aLogger.getLevel());
+      assertEquals(Level.TRACE, bLogger.getLevel());
+      assertEquals(Level.TRACE, bxLogger.getLevel());
     }
 
     { // UNSET
@@ -161,7 +169,7 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
       assertLoggerLevel(removedLoggerLevel, B_LOGGER_NAME, "DEBUG", false);
       assertLoggerLevel(removedLoggerLevel, BX_LOGGER_NAME, "DEBUG", false);
 
-      // check directly with log4j what it's (updated) config has...
+      // check directly with log4j what its (updated) config has...
       //
       // NOTE: LoggingHandler must not actually "remove" the LoggerConfig for 
B on 'unset'
       // (it might have already been defined in log4j's original config for 
some other reason,
@@ -176,11 +184,11 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
           "Unexpected config for BX ... expected B's config",
           config.getLoggerConfig(B_LOGGER_NAME),
           config.getLoggerConfig(BX_LOGGER_NAME));
-      // ...and what it's effective values
-      assertEquals(Level.DEBUG, 
LogManager.getLogger(PARENT_LOGGER_NAME).getLevel());
-      assertEquals(Level.DEBUG, 
LogManager.getLogger(A_LOGGER_NAME).getLevel());
-      assertEquals(Level.DEBUG, 
LogManager.getLogger(B_LOGGER_NAME).getLevel());
-      assertEquals(Level.DEBUG, 
LogManager.getLogger(BX_LOGGER_NAME).getLevel());
+      // ...and what its effective values are
+      assertEquals(Level.DEBUG, parentLogger.getLevel());
+      assertEquals(Level.DEBUG, aLogger.getLevel());
+      assertEquals(Level.DEBUG, bLogger.getLevel());
+      assertEquals(Level.DEBUG, bxLogger.getLevel());
     }
   }
 

Reply via email to