[
https://issues.apache.org/activemq/browse/SM-1931?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=57389#action_57389
]
Ryan Moquin commented on SM-1931:
---------------------------------
I just noticed while debugging my timeout issues with the servicemix-http
component, that when I build the 2009.02 servicemix-http component, there are a
bunch of InvalidStatusResponseExceptions that are thrown during the
testHttpInOutUnderLoad test in org.apache.servicemix.http.ConsumerEndpointTest.
When I look at the log4j log in the target directory, I notice that that same
test is ALSO generating timeout exceptions due to other issues that occur
during the test (here is a snippet):
2010-02-04 15:44:07,601 [a.echo-thread-8] DEBUG SedaFlow
- Called Flow send
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "<?xml version='1.0'
encoding='UTF-8'?><error><![CDATA[java.lang.IllegalStateException: Exchange not
found[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.apache.servicemix.http.endpoints.HttpConsumerEndpoint.process(HttpConsumerEndpoint.java:365)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.apache.servicemix.http.HttpBridgeServlet.service(HttpBridgeServlet.java:56)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
javax.servlet.http.HttpServlet.service(HttpServlet.java:806)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at org.mortbay.jetty.Server.handle(Server.java:320)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at org.mortbay.jetty.HttpConnection.hand"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "le(HttpConnection.java:397)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-515 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-508 ] DEBUG content
- << "[0x9]at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(SelectChannelConnector.java:525)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "[0x9]at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "]]></error>"
2010-02-04 15:44:07,601 [p133-12 - /ep1/] DEBUG jetty
- RESPONSE /ep1/ 500
2010-02-04 15:44:07,601 [Thread-518 ] DEBUG header
- << "HTTP/1.1 500 Internal Server Error[\r][\n]"
2010-02-04 15:44:07,601 [Thread-503 ] DEBUG content
- << "[\n]"
2010-02-04 15:44:07,601 [Thread-503 ] DEBUG content
- << "0"
2010-02-04 15:44:07,601 [Thread-503 ] DEBUG content
- << "[\r]"
2010-02-04 15:44:07,601 [Thread-503 ] DEBUG content
- << "[\n]"
2010-02-04 15:44:07,601 [76...@qtp133-12] DEBUG jetty
- continuation still pending null
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "[\r]"
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "[\n]"
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "0"
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "[\r]"
2010-02-04 15:44:07,601 [Thread-512 ] DEBUG content
- << "[\n]"
2010-02-04 15:44:07,601 [Thread-508 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(SelectChannelConnector.java:525)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-515 ] DEBUG content
- << "[0x9]at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)[\r][\n]"
2010-02-04 15:44:07,601 [Thread-507 ] DEBUG content
- << "[0x9]at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)[\r][\n]"
2010-02-04 15:44:07,601 [.echo-thread-15] DEBUG SedaQueue
- org.apache.servicemix.jbi.nmr.flow.seda.sedaqueu...@187b08d dequeued
exchange: InOut[
id: ID:10.40.16.105-1269ab95e1e-386:120
status: Error
role: provider
service: {urn:test}echo
endpoint: endpoint
in: class javax.xml.transform.stream.StreamSource
out: class javax.xml.transform.stream.StreamSource
error: java.lang.Exception: HTTP request has timed out for exchange:
ID:10.40.16.105-1269ab95e1e-386:120
]
Is this expected? The test just collects a list of these errors and prints
them out in the end, but passes anyhow. This is the output I see on the
console when I run the tests.... It seems to me that the unit test is might
actually already reproducing my issue and the tests are just ignoring it:
[Fatal Error] :1:22: The markup in the document following the root element must
be well-formed.
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
org.apache.servicemix.components.http.InvalidStatusResponseException: Invalid
status response code: 500
at
org.apache.servicemix.http.ConsumerEndpointTest$6.run(ConsumerEndpointTest.java:658)
Retrieving document at 'http://localhost:8193/ep1/?wsdl'.
Retrieving document at 'porttypedef.wsdl', relative to
'http://localhost:8193/ep1/?wsdl'.
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.015 sec
Running org.apache.servicemix.http.HttpConfigurationTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec
Running org.apache.servicemix.http.jetty.JaasUserRealmTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Results :
Tests run: 111, Failures: 0, Errors: 0, Skipped: 0
> Threading problem in Servicemix-HTTP which renders the component unusable.
> --------------------------------------------------------------------------
>
> Key: SM-1931
> URL: https://issues.apache.org/activemq/browse/SM-1931
> Project: ServiceMix
> Issue Type: Bug
> Components: servicemix-http
> Affects Versions: 3.3.1
> Environment: Windows XP, servicemix-http component 2009.02
> Reporter: Ryan Moquin
> Priority: Blocker
>
> In most of the servicemix-http component versions, including the latest,
> there is a variable called isSTFlow which is a class variable. This variable
> appears to be shared among all threads that access a deployed servicemix-http
> component. The problem with this is that isSTFlow is set by a certain
> request based upon the state of it's continuation when the exchange response
> is processed here:
> if (!cont.isPending()) {
> isSTFlow = true;
> System.out.println("isSTFlow set to true because continuation
> isn't pending.");
> } else {
> isSTFlow = false;
> System.out.println("isSTFlow set to false because continuation is
> pending.");
> If isSTFlow is set to true during that response.. all future requests that
> come in will then end up executing this code block on line 348:
> } else {
> String id =
> (String)request.getAttribute(MessageExchange.class.getName());
> System.out.println("STFlow was true, removing
> exchange with id: " + id);
> locks.remove(id);
> exchange = exchanges.remove(id);
>
> request.removeAttribute(MessageExchange.class.getName());
> }
> before the exchange associated with the request has had a chance to return.
> Once that exchange has returned, it can't be found, because it was removed
> and throws a timeout error. Once isSTFlow becomes true, the component hits a
> race condition where it checks isSTFlow for true before the async call has a
> chance to return and immediately times out the exchange. This variable needs
> to be localized for each specific request, not global to all requests.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.