[MULE 2] Work caused exception on 'workCompleted'
Hi, I need help from a Mule core developer to overcome this problem.
I'm using Mule 2.0.2 on Linux, and after a few days it starts logging this error:
Work caused exception on 'workCompleted'. Work being executed was: org.mule.transport.AbstractMessageDispatcher$Worker@1abe3a
It happens on org.mule.transport.vm.VMConnector logger, and after a bit of research, I found it really happens on class
org.mule.transport.AbstractConnector, method handleWorkException(WorkEvent, String), in line 1746, in which the error is logged.
It seems that the event has an exception (event.getException != null). Oddly, the exception never gets logged, just this messge.
After this scenario is set, all VMConnectors, one by one, starts refusing requests. If I restats Mule, it works fine for a few days or so.
In addition, the thread executing the method is named vmQueue.dispatcher.1502. Looks like Mule starts creating threads. Before this scenario, I have 10 vmQueue.dispatcher threads.
Despite the name, I'm not using queued vm connector.
I saw that others has this problem too, but didn't saw solutions. Has anyone solved it, o work-around it?
Thanks in advance,
Q.-
My vmConnector config:
<vm:connector name="vmQueue" queueEvents="false">
<receiver-threading-profile doThreading="true"
maxThreadsActive= "250"
maxThreadsIdle= "250"
poolExhaustedAction="WAIT"
maxBufferSize="100"
threadWaitTimeout="240000"/>
<dispatcher-threading-profile doThreading="true"
maxThreadsActive= "10"
maxThreadsIdle= "10"
poolExhaustedAction="WAIT"
maxBufferSize="100"
threadWaitTimeout="240000"/>
<vm:queueProfile maxOutstandingMessages="100"/>
</vm:connector>
class AbstractConnector:
protected void handleWorkException(WorkEvent event, String type)
{
if (event == null)
{
return;
}
Throwable e = event.getException();
if (e == null)
{
return;
}
if (e.getCause() != null)
{
e = e.getCause();
}
logger.error("Work caused exception on '" + type + "'. Work being executed was: "
+ event.getWork().toString());
if (e instanceof Exception)
{
this.handleException((Exception) e);
}
else
{
throw new MuleRuntimeException(CoreMessages.connectorCausedError(this.getName()), e);
}
}