You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2007/10/12 11:28:05 UTC

DO NOT REPLY [Bug 43610] New: - Using APR library, soap requests fail on slow network.

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43610>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=43610

           Summary: Using APR library, soap requests fail on slow network.
           Product: Tomcat 5
           Version: 5.5.23
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Connector:AJP
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: yann.grostete@alcatel-lucent.fr


Platform : RedHat ES 4, Apache 2.2.4, libapr-1.so.0.2.8,
libtcnative-1.so.0.1.6, Tomcat 5.5.23, Axis 1.4

Overview description:
---------------------
A C# client sends, by default, a soap request in two parts :
Request-Line/Headers and then the body.
If the request is sent on a slow network, the request fails (See the
stacktrace below).

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: Socket read failed
faultActor:
faultNode:
faultDetail:
   {http://xml.apache.org/axis/}stackTrace:java.io.IOException: Socket
read failed
   at org.apache.coyote.ajp.AjpAprProcessor.read(AjpAprProcessor.java:1035)
   at
org.apache.coyote.ajp.AjpAprProcessor.readMessage(AjpAprProcessor.java:1156)
   at
org.apache.coyote.ajp.AjpAprProcessor.receive(AjpAprProcessor.java:1088)
   at
org.apache.coyote.ajp.AjpAprProcessor$SocketInputBuffer.doRead(AjpAprProcessor.java:1226)
   at org.apache.coyote.Request.doRead(Request.java:419)
   at
org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:265)
   at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:370)
   at
org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:274)
   at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
   at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2622)
   at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:1033)
   at
com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:184)
   at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:798)
   at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
   at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
   at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
   at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
   at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
   at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
   at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
   at
org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
   at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
   at
com.alcatel.unifiedlogin.AlcUnifiedLoginServletWS.doPost(AlcUnifiedLoginServletWS.java:106)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
   at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
   at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
   at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
   at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
   at
org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:393)
   at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
   at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
   at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
   at
org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:444)
   at
org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:472)
   at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
   at java.lang.Thread.run(Thread.java:595)


Steps to reproduce:
--------------------

   1) Send soap request headers with 'Expect: 100-continue' header

POST /UnifiedLogin/services/AlcMpc HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
Protocol 2.0.50727.832)
Content-Type: text/xml; charset=utf-8
SOAPAction: "getTopologyAndUserInformation"
Host: srvecc.aouch.alcatel.com
Content-Length: 428
Expect: 100-continue
Connection: Close

   2) Wait for 'HTTP/1.1 100 Continue' response
   3) Wait 100 milliseconds
   4) Send the soap body

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body><in0 xmlns="http://mpc.alcatel.com">
<parameter
xmlns="http://types.mpc.alcatel.com">16C636164756C6F5162747865727E2D696C6C6562702132333430213138393636383531313433383</parameter></in0>
</soap:Body>
</soap:Envelope>

   5) Wait for the response, you should get something like that

HTTP/1.1 500 Internal Server Error
Date: Thu, 13 Sep 2007 07:28:32 GMT
Server: Apache
Set-Cookie: JSESSIONID=896692451D3787425D67734FEF50A658.exttomcat1;
Path=/UnifiedLogin
Connection: close
Transfer-Encoding: chunked
Content-Type: text/xml;charset=utf-8

207
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.io.IOException: Socket read failed</faultstring>
<detail><ns1:hostname
xmlns:ns1="http://xml.apache.org/axis/">srvecc.aouch.alcatel.com</ns1:hostname></detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
0

Actual Results:
   Soap requests fail on slow network.

Expected Results:
   Soap request should not failed, AjpAprProcessor.read(int n) method
should wait for body part.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 43610] - Using APR library, soap requests fail on slow network.

Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43610>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=43610


markt@apache.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WORKSFORME




------- Additional Comments From markt@apache.org  2007-12-01 11:32 -------
I assume you are using mod_proxy_ajp

Using:
 - httpd 2.2.4 with mod_proxy_ajp
 - Tomcat 5.5.X (latest from svn)
 - Native connector 1.1.10
 - Windows XP OS

I cannot reproduce this problem. I have a very simple test client that connects
to httpd, sends the headers, waits for the 100-continue and then sends the body
and this works. I have manually stepped through the code so the delay between
the 100-continue and sending the request body is much more than 100ms.

My guess would be an old bug or odd behaviour from your soap client.

I suggest you try the following:
 - upgrade to native connector 1.1.10
 - upgrade to Tomcat 5.5.25

If you still see the issue then try a simple test client. I can provide you with
the source for the one I use if that helps.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org