forked from t0xa/gelfj
-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Description
Then the AMQP Connection thread handles an UnexpectedConnectionDriverException, a MissedHeartbeatException for example, it tries to log the error message. In the process of logging, this thread takes lock on GelfAppender monitor and starts to wait for confirms on the unresponsive rmq connection without timeout. All others' application threads became BLOCKED when they are trying to log something via GelfAppender.
One of my unresponsive spring apps thread dump parts:
"AMQP Connection 10.3.1.123:5672" #16 prio=5 os_prio=0 cpu=9786.67ms elapsed=511530.01s tid=0x00007fde410a3000 nid=0x17 in Object.wait() [0x00007fde037fa000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.4/Native Method)
- waiting on <no object reference available>
at java.lang.Object.wait(java.base@11.0.4/Object.java:328)
at com.rabbitmq.client.impl.ChannelN.waitForConfirms(ChannelN.java:218)
- waiting to re-lock in wait() <0x00000000e110d400> (a java.util.Collections$SynchronizedSortedSet)
at com.rabbitmq.client.impl.ChannelN.waitForConfirms(ChannelN.java:195)
at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.waitForConfirms(AutorecoveringChannel.java:691)
at com.github.pukkaone.gelf.protocol.GelfAMQPSender.sendMessage(GelfAMQPSender.java:111)
at com.github.pukkaone.gelf.logback.GelfAppender.append(GelfAppender.java:298)
at com.github.pukkaone.gelf.logback.GelfAppender.append(GelfAppender.java:24)
at ch.qos.logback.core.AppenderBase.doAppend(AppenderBase.java:82)
- locked <0x00000000e0fc9610> (a com.github.pukkaone.gelf.logback.GelfAppender)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
at ch.qos.logback.classic.Logger.error(Logger.java:538)
at com.rabbitmq.client.impl.ForgivingExceptionHandler.log(ForgivingExceptionHandler.java:119)
at com.rabbitmq.client.impl.ForgivingExceptionHandler.handleUnexpectedConnectionDriverException(ForgivingExceptionHandler.java:36)
at com.rabbitmq.client.impl.AMQConnection.handleFailure(AMQConnection.java:777)
at com.rabbitmq.client.impl.AMQConnection.access$400(AMQConnection.java:47)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:674)
at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)
"http-nio-8080-exec-11" #134 daemon prio=5 os_prio=0 cpu=10.79ms elapsed=2538.77s tid=0x00007fddd4012000 nid=0x8c waiting for monitor entry [0x00007fddc57c4000]
java.lang.Thread.State: BLOCKED (on object monitor)
at ch.qos.logback.core.AppenderBase.doAppend(AppenderBase.java:63)
- waiting to lock <0x00000000e0fc9610> (a com.github.pukkaone.gelf.logback.GelfAppender)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
at ch.qos.logback.classic.Logger.log(Logger.java:765)
at org.apache.logging.slf4j.SLF4JLogger.logMessage(SLF4JLogger.java:232)
at org.jboss.logging.Log4j2Logger.doLog(Log4j2Logger.java:54)
at org.jboss.logging.Logger.logv(Logger.java:2226)
(one of 24 similar threads)
appender conf:
<appender name="GELF-AMQP" class="com.github.pukkaone.gelf.logback.GelfAppender">
<amqpURI>${AMQP_URI}</amqpURI>
<amqpExchange>${AMQP_KEY}</amqpExchange>
<amqpRoutingKey>${AMQP_KEY}</amqpRoutingKey>
<amqpMaxRetries>5</amqpMaxRetries>
<amqpAutomaticRecovery>true</amqpAutomaticRecovery>
<originHost>localhost</originHost>
<facility>gelf-java</facility>
<additionalField>application=${APP_NAME}</additionalField>
<mdcIncluded>true</mdcIncluded>
</appender>
logback-gelf 1.1.11
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels