Is it possible that ExpiringMap is not 100% Thread safe.
Name: ExpiringMap-Listener-2322
State: BLOCKED on Monitoring.LogMonitor.LogMonitorStream@108d2eca owned by: ajp-nio-192.168.62.11-8009-exec-11
Total blocked: 1 Total waited: 0
Stack trace:
java.io.PrintStream.println(PrintStream.java:805)
Vinatra.XXXExpirationListener.expired(XXXExpirationListener.java:41)
Vinatra.XXXExpirationListener.expired(XXXExpirationListener.java:15)
net.jodah.expiringmap.ExpiringMap$4.run(ExpiringMap.java:1220)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)
We had a run off with thousands of threads created and blocking. Here is a sample of the thread. Outside seeing ExpiringMap in the thread. there a system.out.println() in XXXExpirationListener and these system.out.println() are handled by a thread with a custom Log Manager.
Is it possible that ExpiringMap is not 100% Thread safe.
Name: ExpiringMap-Listener-2322
State: BLOCKED on Monitoring.LogMonitor.LogMonitorStream@108d2eca owned by: ajp-nio-192.168.62.11-8009-exec-11
Total blocked: 1 Total waited: 0
Stack trace:
java.io.PrintStream.println(PrintStream.java:805)
Vinatra.XXXExpirationListener.expired(XXXExpirationListener.java:41)
Vinatra.XXXExpirationListener.expired(XXXExpirationListener.java:15)
net.jodah.expiringmap.ExpiringMap$4.run(ExpiringMap.java:1220)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)
We had a run off with thousands of threads created and blocking. Here is a sample of the thread. Outside seeing ExpiringMap in the thread. there a system.out.println() in XXXExpirationListener and these system.out.println() are handled by a thread with a custom Log Manager.