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

vavrtom pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git


The following commit(s) were added to refs/heads/main by this push:
     new 60d4b84586 QPID-8694: [Broker-J] BrokerLoggerStatusListener produces 
repeated stacktraces (#287)
60d4b84586 is described below

commit 60d4b845863eb71eb99d8d2e50cd70f3f3dcdf62
Author: Daniil Kirilyuk <daniel.kiril...@gmail.com>
AuthorDate: Wed Jun 18 09:58:46 2025 +0200

    QPID-8694: [Broker-J] BrokerLoggerStatusListener produces repeated 
stacktraces (#287)
---
 .../logging/logback/BrokerFileLoggerImpl.java      |  3 ++-
 .../logback/BrokerLoggerStatusListener.java        | 30 ++++++++++++++--------
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git 
a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLoggerImpl.java
 
b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLoggerImpl.java
index fe020079bd..8defc42e82 100644
--- 
a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLoggerImpl.java
+++ 
b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerFileLoggerImpl.java
@@ -197,7 +197,8 @@ public class BrokerFileLoggerImpl extends 
AbstractBrokerLogger<BrokerFileLoggerI
                                                                 systemConfig,
                                                                 
BROKER_FAIL_ON_LOGGER_IO_ERROR,
                                                                 
IOException.class,
-                                                                IOError.class);
+                                                                IOError.class,
+                                                                
RuntimeException.class);
         _statusManager = loggerContext.getStatusManager();
         _statusManager.add(_logbackStatusListener);
 
diff --git 
a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerLoggerStatusListener.java
 
b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerLoggerStatusListener.java
index 7497953a22..a1239d938b 100644
--- 
a/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerLoggerStatusListener.java
+++ 
b/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/BrokerLoggerStatusListener.java
@@ -21,6 +21,7 @@ package org.apache.qpid.server.logging.logback;
 
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -43,25 +44,34 @@ public class BrokerLoggerStatusListener implements 
StatusListener
     private final Set<Class<?>> _errorClasses;
 
     public BrokerLoggerStatusListener(final BrokerLogger<?> brokerLogger,
-                               final SystemConfig<?> systemConfig,
-                               final String contextFlag,
-                               final Class<?>... errorClass)
+                                      final SystemConfig<?> systemConfig,
+                                      final String contextFlag,
+                                      final Class<?>... errorClass)
     {
         _brokerLogger = brokerLogger;
         _systemConfig = systemConfig;
         _contextFlag = contextFlag;
-        _errorClasses =
-                errorClass == null ? Collections.emptySet() : 
Arrays.stream(errorClass).collect(Collectors.toSet());
+        _errorClasses = errorClass == null
+                ? Collections.emptySet() : 
Arrays.stream(errorClass).filter(Objects::nonNull).collect(Collectors.toSet());
     }
 
     @Override
-    public void addStatusEvent(Status status)
+    public void addStatusEvent(final Status status)
     {
-        Throwable throwable = status.getThrowable();
-        if (status.getEffectiveLevel() == Status.ERROR
-            && _errorClasses.stream().anyMatch(c -> c.isInstance(throwable)))
+        final Throwable throwable = status.getThrowable();
+        if (status.getEffectiveLevel() == Status.ERROR &&
+                _errorClasses.stream().anyMatch(errorClass -> 
errorClass.isInstance(throwable)))
         {
-            LOGGER.error("Unexpected error whilst trying to store log entry. 
Log messages could be lost.", throwable);
+            // log full stacktrace on DEBUG or TRACE level only
+            if (LOGGER.isDebugEnabled() || LOGGER.isTraceEnabled())
+            {
+                LOGGER.error("Unexpected error whilst trying to store log 
entry. Log messages could be lost.", throwable);
+            }
+            else
+            {
+                LOGGER.error("Unexpected error whilst trying to store log 
entry. Log messages could be lost: {}", throwable.getMessage());
+            }
+
             if (_brokerLogger.getContextValue(Boolean.class, _contextFlag))
             {
                 try


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to