Bruce J Schuchardt created GEODE-8131:
-----------------------------------------
Summary: reader thread blocked attempting to issue an alert
Key: GEODE-8131
URL: https://issues.apache.org/jira/browse/GEODE-8131
Project: Geode
Issue Type: Bug
Components: logging, membership
Reporter: Bruce J Schuchardt
This v1.8 TcpConduit reader thread was blocked in a production system. It had
experienced a deserialization error and was trying to log the exception. A
Manager was present in the cluster and had registered as an alert listener.
Another thread was blocked sending something on the shared/unordered connection
that this alert should be sent on. This persisted for over 6 hours and we
never saw the serialization exception in the log file. Consequently we had to
recommend setting the alert level to None and have them run into the
serialization problem again.
This is a serious flaw in the alerting system and it's caused us grief many
times. We should log alerts before attempting to send them to alert-listeners.
{noformat}
"P2P message reader for 10.236.28.120(servername-removed)<v491>:56152 shared
unordered uid=9 port=41204" tid=0xd49 (in native) java.lang.Thread.State:
RUNNABLE at sun.nio.ch.FileDispatcherImpl.write0(Native Method) at
sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) at
sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) at
sun.nio.ch.IOUtil.write(IOUtil.java:51) at
sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) - locked
java.lang.Object@24528b9b at
org.apache.geode.internal.tcp.Connection.nioWriteFully(Connection.java:3291) -
locked java.lang.Object@42a1a79b at
org.apache.geode.internal.tcp.Connection.sendPreserialized(Connection.java:2527)
at org.apache.geode.internal.tcp.MsgStreamer.realFlush(MsgStreamer.java:319)
at org.apache.geode.internal.tcp.MsgStreamer.writeMessage(MsgStreamer.java:244)
at
org.apache.geode.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:393)
at
org.apache.geode.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:250)
at
org.apache.geode.distributed.internal.direct.DirectChannel.send(DirectChannel.java:615)
at
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.directChannelSend(GMSMembershipManager.java:1717)
at
org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.send(GMSMembershipManager.java:1898)
at
org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2878)
at
org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:2798)
at
org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2837)
at
org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1531)
at
org.apache.geode.internal.alerting.AlertMessaging.sendAlert(AlertMessaging.java:75)
at
org.apache.geode.internal.logging.log4j.AlertAppender.sendAlertMessage(AlertAppender.java:188)
at
org.apache.geode.internal.logging.log4j.AlertAppender.doAppend(AlertAppender.java:163)
at
org.apache.geode.internal.logging.log4j.AlertAppender.lambda$append$0(AlertAppender.java:159)
at
org.apache.geode.internal.logging.log4j.AlertAppender$$Lambda$168/1102181662.run(Unknown
Source) at
org.apache.geode.internal.alerting.AlertingAction.execute(AlertingAction.java:29)
at
org.apache.geode.internal.logging.log4j.AlertAppender.append(AlertAppender.java:159)
at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:464)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:448)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431) at
org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:455)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:450)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:431) at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406) at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146) at
org.apache.logging.log4j.spi.ExtendedLoggerWrapper.logMessage(ExtendedLoggerWrapper.java:217)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2170)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2125)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2002)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1974)
at org.apache.logging.log4j.spi.AbstractLogger.fatal(AbstractLogger.java:1054)
at
org.apache.geode.internal.tcp.Connection.processNIOBuffer(Connection.java:3610)
at org.apache.geode.internal.tcp.Connection.runNioReader(Connection.java:1824)
at org.apache.geode.internal.tcp.Connection.run(Connection.java:1686) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748) {noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)