Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-993

Potential deadlock if a new Logger is created while log4j is reconfiguring in another thread

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.2
    • Fix Version/s: 2.3
    • Component/s: Core
    • Labels:
      None

      Description

      When building log4j with this set up:

      Apache Maven 3.3.1 (cab6659f9874fa96462afef40fcf6bc033d58c1c; 2015-03-13T13:10:27-07:00)
      Maven home: C:\Java\apache-maven-3.3.1
      Java version: 1.7.0_75, vendor: Oracle Corporation
      Java home: C:\Program Files\Java\jdk1.7.0_75\jre
      Default locale: en_US, platform encoding: Cp1252
      OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
      

      and running mvn test -pl !log4j-perf I get:

      2015-03-25 00:31:37,884 DEBUG Reconfiguration complete for context[name=1208470774] at null (org.apache.logging.log4j.core.LoggerContext@5682a3b2) with optional ClassLoader: null
      Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 69.089 sec - in org.apache.logging.log4j.flume.appender.FlumeEmbeddedAgentTest
      Tests run: 7, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 76.252 sec <<< FAILURE! - in org.apache.logging.log4j.flume.appender.FlumeAppenderTest
      testNotConnected(org.apache.logging.log4j.flume.appender.FlumeAppenderTest)  Time elapsed: 28.282 sec  <<< ERROR!
      org.apache.logging.log4j.core.appender.AppenderLoggingException: No Flume agents are available
              at org.apache.logging.log4j.flume.appender.FlumeAvroManager.send(FlumeAvroManager.java:178)
              at org.apache.logging.log4j.flume.appender.FlumeAppender.append(FlumeAppender.java:106)
              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:367)
              at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112)
              at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:727)
              at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:716)
              at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:526)
              at org.apache.logging.log4j.flume.appender.FlumeAppenderTest.testNotConnected(FlumeAppenderTest.java:317)
      

      And the build looks hung up.

      jstack says:

      2015-03-25 00:39:59
      Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.75-b04 mixed mode):
      
      "Thread-2" daemon prio=6 tid=0x000000000da69800 nid=0x3590 waiting for monitor entry [0x0000000011c5e000]
         java.lang.Thread.State: BLOCKED (on object monitor)
              at org.apache.logging.log4j.core.LoggerContext.getConfigLocation(LoggerContext.java:400)
              - waiting to lock <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext)
              at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:156)
              at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:70)
              at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:57)
              at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:142)
              at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:1)
              at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
              at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
              at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43)
              at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
              at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
              at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
              at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:288)
              at org.apache.flume.api.NettyAvroRpcClient.<clinit>(NettyAvroRpcClient.java:103)
              at java.lang.Class.forName0(Native Method)
              at java.lang.Class.forName(Class.java:191)
              at org.apache.flume.api.RpcClientFactory.getInstance(RpcClientFactory.java:73)
              at org.apache.flume.api.FailoverRpcClient.getNextClient(FailoverRpcClient.java:264)
              at org.apache.flume.api.FailoverRpcClient.getClient(FailoverRpcClient.java:125)
              - locked <0x00000007d70ec370> (a org.apache.flume.api.FailoverRpcClient)
              at org.apache.flume.api.FailoverRpcClient.appendBatch(FailoverRpcClient.java:200)
              at org.apache.logging.log4j.flume.appender.FlumeAvroManager.send(FlumeAvroManager.java:146)
              - locked <0x00000007d7064178> (a org.apache.logging.log4j.flume.appender.FlumePersistentManager)
              at org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread.sendBatch(FlumePersistentManager.java:691)
              at org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread.run(FlumePersistentManager.java:651)
      
         Locked ownable synchronizers:
              - None
      
      "Checkpointer" daemon prio=6 tid=0x000000000da69000 nid=0x2898 in Object.wait() [0x0000000011aaf000]
         java.lang.Thread.State: WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              - waiting on <0x00000007d693d758> (a java.lang.Object)
              at java.lang.Object.wait(Object.java:503)
              at com.sleepycat.je.utilint.DaemonThread.run(DaemonThread.java:175)
              - locked <0x00000007d693d758> (a java.lang.Object)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - None
      
      "Cleaner-1" daemon prio=6 tid=0x000000000da68000 nid=0x170 in Object.wait() [0x000000001191f000]
         java.lang.Thread.State: WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              - waiting on <0x00000007d6b372f8> (a java.lang.Object)
              at java.lang.Object.wait(Object.java:503)
              at com.sleepycat.je.utilint.DaemonThread.run(DaemonThread.java:175)
              - locked <0x00000007d6b372f8> (a java.lang.Object)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - None
      
      "INCompressor" daemon prio=6 tid=0x000000000da67800 nid=0x3d9c in Object.wait() [0x00000000110ee000]
         java.lang.Thread.State: TIMED_WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              - waiting on <0x00000007d69b8bb8> (a java.lang.Object)
              at com.sleepycat.je.utilint.DaemonThread.run(DaemonThread.java:177)
              - locked <0x00000007d69b8bb8> (a java.lang.Object)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - None
      
      "New I/O server boss #2 ([id: 0x1cba2c1d, /127.0.0.1:1502])" prio=6 tid=0x000000000da66800 nid=0x272c runnable [0x000000001171e000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bd77d8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bd77c8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bd7340> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
              at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink$Boss.run(NioServerSocketPipelineSink.java:231)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bd4fa0> (a java.util.concurrent.ThreadPoolExecutor$Worker)
              - <0x00000007d8c2ffe0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
      
      "New I/O  worker #16" prio=6 tid=0x000000000da66000 nid=0x19b4 runnable [0x00000000115bf000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bf7390> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bf7380> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bf7230> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bdaf58> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #15" prio=6 tid=0x000000000da65000 nid=0x12d8 runnable [0x00000000113ef000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bf2d38> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bf2d28> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bf2bd8> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bf2a28> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #14" prio=6 tid=0x000000000da64800 nid=0x32b4 runnable [0x000000001128f000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bdb400> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bdb3f0> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bdb2a0> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bdb0f0> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #13" prio=6 tid=0x000000000da63800 nid=0x2944 runnable [0x0000000010fae000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8be73d8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8be73c8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8be7278> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8be70c8> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #12" prio=6 tid=0x000000000da63000 nid=0x2bf8 runnable [0x0000000010e1e000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bef3d8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bef3c8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bef278> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bef0c8> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #11" prio=6 tid=0x000000000da62000 nid=0x3e48 runnable [0x00000000108ef000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bdf3d8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bdf3c8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bdf278> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bdf0c8> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #10" prio=6 tid=0x000000000e05b000 nid=0x2a34 runnable [0x0000000010cce000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8be2d38> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8be2d28> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8be2bd8> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8be2a28> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #9" prio=6 tid=0x000000000deec800 nid=0x3970 runnable [0x0000000010b8e000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bead38> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bead28> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8beabd8> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8beaa28> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O server boss #1 ([id: 0xfc48b347, /127.0.0.1:1501])" prio=6 tid=0x000000000df9e800 nid=0x3c9c runnable [0x0000000010a3e000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8c225a8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8c22598> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8c22120> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
              at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink$Boss.run(NioServerSocketPipelineSink.java:231)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bd4878> (a java.util.concurrent.ThreadPoolExecutor$Worker)
              - <0x00000007d8c2d920> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
      
      "New I/O  worker #8" prio=6 tid=0x000000000d975800 nid=0x1640 runnable [0x00000000107de000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8c17370> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8c17360> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8c17210> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bfaa60> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #7" prio=6 tid=0x000000000d973800 nid=0x3c2c runnable [0x00000000106cf000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8c0f3d8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8c0f3c8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8c0f278> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8c0f0c8> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #6" prio=6 tid=0x00000000023b2000 nid=0x3fd4 runnable [0x00000000104ee000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bff3d8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bff3c8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bff278> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bff0c8> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #5" prio=6 tid=0x00000000023b0000 nid=0x30c4 runnable [0x000000001031e000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8c0ad58> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8c0ad48> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8c0abf8> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8c0aa48> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #4" prio=6 tid=0x000000000dd2b000 nid=0x2904 runnable [0x000000001000f000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8c02d38> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8c02d28> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8c02bd8> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8c02a28> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #3" prio=6 tid=0x000000000dd09800 nid=0x3e60 runnable [0x000000001019e000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8c073d8> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8c073c8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8c07278> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8c070c8> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #2" prio=6 tid=0x000000000de5b000 nid=0x1274 runnable [0x000000000fecf000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8c12d38> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8c12d28> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8c12bd8> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8c12a28> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "New I/O  worker #1" prio=6 tid=0x000000000e063800 nid=0x28d4 runnable [0x000000000fcce000]
         java.lang.Thread.State: RUNNABLE
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
              at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
              at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
              at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
              - locked <0x00000007d8bfaf08> (a sun.nio.ch.Util$2)
              - locked <0x00000007d8bfaef8> (a java.util.Collections$UnmodifiableSet)
              - locked <0x00000007d8bfada8> (a sun.nio.ch.WindowsSelectorImpl)
              at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
              at org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:64)
              at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:244)
              at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
              at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
              at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
      
         Locked ownable synchronizers:
              - <0x00000007d8bfabf8> (a java.util.concurrent.ThreadPoolExecutor$Worker)
      
      "Service Thread" daemon prio=6 tid=0x000000000bba3000 nid=0x1e44 runnable [0x0000000000000000]
         java.lang.Thread.State: RUNNABLE
      
         Locked ownable synchronizers:
              - None
      
      "C2 CompilerThread1" daemon prio=10 tid=0x000000000bb9a000 nid=0x2a00 waiting on condition [0x0000000000000000]
         java.lang.Thread.State: RUNNABLE
      
         Locked ownable synchronizers:
              - None
      
      "C2 CompilerThread0" daemon prio=10 tid=0x000000000bb98000 nid=0x1af0 waiting on condition [0x0000000000000000]
         java.lang.Thread.State: RUNNABLE
      
         Locked ownable synchronizers:
              - None
      
      "Attach Listener" daemon prio=10 tid=0x000000000bb95000 nid=0x47c runnable [0x0000000000000000]
         java.lang.Thread.State: RUNNABLE
      
         Locked ownable synchronizers:
              - None
      
      "Signal Dispatcher" daemon prio=10 tid=0x000000000bb90000 nid=0x3de8 runnable [0x0000000000000000]
         java.lang.Thread.State: RUNNABLE
      
         Locked ownable synchronizers:
              - None
      
      "Finalizer" daemon prio=8 tid=0x000000000bb39000 nid=0x3afc in Object.wait() [0x000000000cfbe000]
         java.lang.Thread.State: WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              - waiting on <0x00000007d8b01528> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
              - locked <0x00000007d8b01528> (a java.lang.ref.ReferenceQueue$Lock)
              at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
              at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
      
         Locked ownable synchronizers:
              - None
      
      "Reference Handler" daemon prio=10 tid=0x000000000bb32000 nid=0x3f54 in Object.wait() [0x000000000cebf000]
         java.lang.Thread.State: WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              - waiting on <0x00000007d8b009c8> (a java.lang.ref.Reference$Lock)
              at java.lang.Object.wait(Object.java:503)
              at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
              - locked <0x00000007d8b009c8> (a java.lang.ref.Reference$Lock)
      
         Locked ownable synchronizers:
              - None
      
      "main" prio=6 tid=0x00000000023aa000 nid=0x30c8 in Object.wait() [0x000000000260d000]
         java.lang.Thread.State: WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              - waiting on <0x00000007d714b358> (a org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread)
              at java.lang.Thread.join(Thread.java:1281)
              - locked <0x00000007d714b358> (a org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread)
              at java.lang.Thread.join(Thread.java:1355)
              at org.apache.logging.log4j.flume.appender.FlumePersistentManager.releaseSub(FlumePersistentManager.java:236)
              at org.apache.logging.log4j.core.appender.AbstractManager.release(AbstractManager.java:119)
              at org.apache.logging.log4j.flume.appender.FlumeAppender.stop(FlumeAppender.java:112)
              at org.apache.logging.log4j.core.config.AbstractConfiguration.stop(AbstractConfiguration.java:237)
              at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:364)
              - locked <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext)
              at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:420)
              - locked <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext)
              at org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest.teardown(FlumePersistentAppenderTest.java:114)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
              at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
              at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
              at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
              at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
              at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
              at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
              at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
              at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
              at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
              at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
              at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
              at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
              at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
              at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
              at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
              at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
              at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
      
         Locked ownable synchronizers:
              - <0x00000007d8c76348> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
      
      "VM Thread" prio=10 tid=0x000000000bb2b800 nid=0x26e8 runnable
      
      "GC task thread#0 (ParallelGC)" prio=6 tid=0x00000000023bf000 nid=0x3860 runnable
      
      "GC task thread#1 (ParallelGC)" prio=6 tid=0x00000000023c0800 nid=0x27a0 runnable
      
      "GC task thread#2 (ParallelGC)" prio=6 tid=0x00000000023c2000 nid=0x29b8 runnable
      
      "GC task thread#3 (ParallelGC)" prio=6 tid=0x00000000023c4000 nid=0x2a84 runnable
      
      "VM Periodic Task Thread" prio=10 tid=0x000000000bbac000 nid=0x2e64 waiting on condition
      
      JNI global references: 291
      

      Comment from Mikhail:

      It's a classical deadlock. Thread main got the instance lock of the LoggerContext (- locked <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext) at org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest.teardown(FlumePersistentAppenderTest.java:114)) and then it waits for another thread - Thread-2 to finish (thread.join() at java.lang.Thread.join(Thread.java:1281)) but that thread is waiting for the above mentioned lock (at org.apache.logging.log4j.core.LoggerContext.getConfigLocation(LoggerContext.java:400) - waiting to lock <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext)). IMHO it is an issue unrelated to my patch.

      "main" prio=6 tid=0x00000000023aa000 nid=0x30c8 in Object.wait() [0x000000000260d000]
         java.lang.Thread.State: WAITING (on object monitor)
              at java.lang.Object.wait(Native Method)
              - waiting on <0x00000007d714b358> (a org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread)
              at java.lang.Thread.join(Thread.java:1281)
              - locked <0x00000007d714b358> (a org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread)
              at java.lang.Thread.join(Thread.java:1355)
              at org.apache.logging.log4j.flume.appender.FlumePersistentManager.releaseSub(FlumePersistentManager.java:236)
              at org.apache.logging.log4j.core.appender.AbstractManager.release(AbstractManager.java:119)
              at org.apache.logging.log4j.flume.appender.FlumeAppender.stop(FlumeAppender.java:112)
              at org.apache.logging.log4j.core.config.AbstractConfiguration.stop(AbstractConfiguration.java:237)
              at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:364)
              - locked <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext)
              at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:420)
              - locked <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext)
              at org.apache.logging.log4j.flume.appender.FlumePersistentAppenderTest.teardown(FlumePersistentAppenderTest.java:114)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
              at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
              at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
              at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
              at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
              at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
              at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
              at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
              at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
              at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
              at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
              at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
              at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
              at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
              at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
              at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
              at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
              at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
      
         Locked ownable synchronizers:
              - <0x00000007d8c76348> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
      
      "Thread-2" daemon prio=6 tid=0x000000000da69800 nid=0x3590 waiting for monitor entry [0x0000000011c5e000]
         java.lang.Thread.State: BLOCKED (on object monitor)
              at org.apache.logging.log4j.core.LoggerContext.getConfigLocation(LoggerContext.java:400)
              - waiting to lock <0x00000007d8c32370> (a org.apache.logging.log4j.core.LoggerContext)
              at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:156)
              at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:70)
              at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:57)
              at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:142)
              at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:1)
              at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
              at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
              at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:43)
              at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
              at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
              at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
              at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:288)
              at org.apache.flume.api.NettyAvroRpcClient.<clinit>(NettyAvroRpcClient.java:103)
              at java.lang.Class.forName0(Native Method)
              at java.lang.Class.forName(Class.java:191)
              at org.apache.flume.api.RpcClientFactory.getInstance(RpcClientFactory.java:73)
              at org.apache.flume.api.FailoverRpcClient.getNextClient(FailoverRpcClient.java:264)
              at org.apache.flume.api.FailoverRpcClient.getClient(FailoverRpcClient.java:125)
              - locked <0x00000007d70ec370> (a org.apache.flume.api.FailoverRpcClient)
              at org.apache.flume.api.FailoverRpcClient.appendBatch(FailoverRpcClient.java:200)
              at org.apache.logging.log4j.flume.appender.FlumeAvroManager.send(FlumeAvroManager.java:146)
              - locked <0x00000007d7064178> (a org.apache.logging.log4j.flume.appender.FlumePersistentManager)
              at org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread.sendBatch(FlumePersistentManager.java:691)
              at org.apache.logging.log4j.flume.appender.FlumePersistentManager$WriterThread.run(FlumePersistentManager.java:651)
      
         Locked ownable synchronizers:
              - None
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                ralph.goers@dslextreme.com Ralph Goers
                Reporter:
                garydgregory Gary Gregory
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: