I noticed the following warning log statement while digging through the ouput in a dunit.
It's caused by a bug in org.apache.geode.management.internal.beans.ManagementListener$handleEvent -- the readLock is acquired under a condition (event != ResourceEvent.SYSTEM_ALERT) but released without condition. It's easy to fix so I'll file a bug and submit a PR. I'm not sure why this wasn't noticed before unless maybe recent LoggingThread changes allowed it to be revealed? I'm also not sure why dunit grep for suspect strings isn't finding this and causing dunit failures. Does anyone know why this doesn't get picked by DUnitLauncher.closeAndCheckForSuspects()? I'm not sure that we have any tests to prevent us from breaking the check for suspect strings. [vm0] [warn 2018/10/23 12:51:35.339 PDT <Pooled Message Processor 2> tid=0x58] attempt to unlock read lock, not locked by current thread [vm0] java.lang.IllegalMonitorStateException: attempt to unlock read lock, not locked by current thread [vm0] at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.unmatchedUnlockException(ReentrantReadWriteLock.java:444) [vm0] at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:428) [vm0] at java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1341) [vm0] at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:881) [vm0] at org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:232) [vm0] at org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2219) [vm0] at org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:595) [vm0] at org.apache.geode.internal.admin.remote.AlertListenerMessage.process(AlertListenerMessage.java:106) [vm0] at org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:367) [vm0] at org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:432) [vm0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [vm0] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [vm0] at org.apache.geode.distributed.internal.ClusterDistributionManager.runUntilShutdown(ClusterDistributionManager.java:954) [vm0] at org.apache.geode.distributed.internal.ClusterDistributionManager.doProcessingThread(ClusterDistributionManager.java:820) [vm0] at org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:121) [vm0] at java.lang.Thread.run(Thread.java:748)