Hi,
This is a really hard to reproduce bug (once a week on a loaded production machine) and it has the fatal impact
to make all threads unresponsive one after other.
Looking at the code, we didn't succeed to see a case where the swap() method could be called while the buffer
is empty.
Any idea ?
Thanks for your help.
Yannick.
Here the stack track kept from a thread dump:
Thread t@87
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <6bdba9dc> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
at org.jetlang.core.RunnableBlockingQueue.swap(RunnableBlockingQueue.java:42)
at org.jetlang.fibers.PoolFiber.flush(PoolFiber.java:62)
at org.jetlang.fibers.PoolFiber.access$000(PoolFiber.java:19)
at org.jetlang.fibers.PoolFiber$1.run(PoolFiber.java:36)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Locked ownable synchronizers:
- locked <59bd6cee> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)