Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.0.0-incubating.M1, 1.0.0-incubating.M2, 1.0.0-incubating.M3, 1.0.0-incubating
Description
AlertAppender.append should avoid synchronizing on InternalDistributedSystem for two reasons:
1) risks deadlock
2) impacts performance
"Pooled High Priority Message Processor 3" daemon prio=10 tid=0x00007f1cd4009000 nid=0x1e31 waiting for monitor entry [0x00007f1d5d965000] java.lang.Thread.State: BLOCKED (on object monitor) at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.getConnectedInstance(InternalDistributedSystem.java:316) - waiting to lock <0x00000005cf476e10> (a java.lang.Object) at com.gemstone.gemfire.internal.logging.log4j.AlertAppender.append(AlertAppender.java:101) at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:99) at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:412) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:412) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367) at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112) at org.apache.logging.log4j.spi.ExtendedLoggerWrapper.logMessage(ExtendedLoggerWrapper.java:127) at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:685) at org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:899) at com.gemstone.gemfire.internal.tcp.Connection.createSender(Connection.java:1078) at com.gemstone.gemfire.internal.tcp.ConnectionTable.handleNewPendingConnection(ConnectionTable.java:358) at com.gemstone.gemfire.internal.tcp.ConnectionTable.getUnorderedOrConserveSockets(ConnectionTable.java:474) at com.gemstone.gemfire.internal.tcp.ConnectionTable.get(ConnectionTable.java:664) at com.gemstone.gemfire.internal.tcp.TCPConduit.getConnection(TCPConduit.java:977) at com.gemstone.gemfire.distributed.internal.direct.DirectChannel.getConnections(DirectChannel.java:638) at com.gemstone.gemfire.distributed.internal.direct.DirectChannel.sendToMany(DirectChannel.java:396) at com.gemstone.gemfire.distributed.internal.direct.DirectChannel.sendToOne(DirectChannel.java:310) at com.gemstone.gemfire.distributed.internal.direct.DirectChannel.send(DirectChannel.java:696) at com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager.directChannelSend(JGroupMembershipManager.java:2930) at com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager.send(JGroupMembershipManager.java:3164) at com.gemstone.gemfire.distributed.internal.DistributionChannel.send(DistributionChannel.java:79) at com.gemstone.gemfire.distributed.internal.DistributionManager.sendOutgoing(DistributionManager.java:3913) at com.gemstone.gemfire.distributed.internal.DistributionManager.sendMessage(DistributionManager.java:3954) at com.gemstone.gemfire.distributed.internal.DistributionManager.putOutgoing(DistributionManager.java:1957) at com.gemstone.gemfire.distributed.internal.StartupMessage.process(StartupMessage.java:321) at com.gemstone.gemfire.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:386) at com.gemstone.gemfire.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:457) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)