Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2010.02
-
None
-
None
-
Windows, MacOS, Linux
Description
Hi ServiceMix Team,
Could you please help me with the following problem:
Test case: consumer sends some oneway requests to SMX provider.
For some requests (~ 1 from 5) provider reports following stak strace:
java.lang.IllegalStateException: [130]Endpoint not found:
{http://services.sopware.org/demo/Whiteboard}WhiteboardProvider:localhost
at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:615)
at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchangeInTx(AsyncBaseLifeCycle.java:474)
at org.apache.servicemix.common.AsyncBaseLifeCycle$2.run(AsyncBaseLifeCycle.java:351)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
and consumer receives HTTP 500 error.
Detail analyse shows following:
For error requests AsyncBaseLifeCycle.processExchange() received exchange with role=Role.Provider. For successfull requests exchange always has role=Role.Consumer.
As soon as exchange has provider role, code in AsyncBaseLifeCycle.processExchange() cannot find endpoint and throws described exception.
If I change code and try to obtain endpoint as for consumer role (via JbiConstants.SENDER_ENDPOINT), scenario works.
It seems that ChannelImpl sometimes changes role for oneway request that causes described error.
Regards,
Andrei.