|
Hi, A couple of times I’ve experienced deadlocks
with ServiceMix due to bounded queues becoming full. The most recent case was
today, using ST flow. It’s easy to see how ST flow might be susceptible
to this, but I believe I’ve had it with SEDA also. (Perhaps with a
different queue/cause.) In the case today I diagnosed it by examining the
stack traces of threads using JMX (jconsole) after ServiceMix had hung. I found
that seven threads are BLOCKED on synchronized (putGuard_) in
BoundedLinkedQueue#put(), while one thread is stuck inside the method waiting
for reconcilePutPermits() to return true. My test case involves a FTPPoller receiving 1,100
files, passing them through to a XLST routing component, which passes them on
to an HTTPInvoker component. (Actually both the FTPPoller and HTTPInvoker are
local customizations and I’m using a couple of customized marshallers
too.) I realise 1,100 files is quite a lot to receive at once via FTP. However,
I increased the default capacity of BoundedLinkedQueue (from 1,024 to 10,240, as
an experiment) and things seemed to work OK. I don’t really expect to
have 1,100 files at once in real life, but in our scenario we will receive a
couple hundred at once sometimes, so I thought this was a good test. Should I raise a JIRA for this, or am I doing
something stupid? I have saved the stack traces. BTW I’m using ServiceMix 2.0, built from source. John Hurst ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________ |
- [servicemix-user] Deadlock with bounded queue HURST, John B
- Re: [servicemix-user] Deadlock with bounded queue Rob Davies
- RE: [servicemix-user] Deadlock with bounded queue HURST, John B
