On Tue, Apr 14, 2009 at 12:17:18AM +0100, Sam Crawford wrote:
> Evening all,
> 
> I'm encountering an odd issue with HttpClient 4.0b2 and HttpCore 4.0 GA.
> Sending a fairly benign request to a server running JIRA is causing
> HttpClient to throw a ProtocolException with the message "The server failed
> to respond with a valid HTTP response" after waiting 30 seconds. 30 seconds
> is incidentally the connection and query timeout I defined in the HttpClient
> parameters.
> 
> It looks to me like the HttpClient is not recognising that the server has
> responded completely. The headers being sent back from the server look okay
> to me.
> 
> A tcpdump capture of the communication that triggered the error is shown
> below, alongside a stacktrace from the application, and the options I set on
> the ThreadSafeClientConnManager and HttpClient.
> 
> Any suggestions would be much appreciated.
> 
> Thanks again,
> 
> Sam
> 

Sam,

Could you please post a complete wire / context log of the session?

http://hc.apache.org/httpcomponents-client/logging.html

Oleg


> 
> #### TCPDUMP CAPTURE OF HTTP COMMUNICATION ####
> 
> GET /JRA/s/330/1/_/styles/combined.css HTTP/1.1
> accept: */*
> referer:
> http://jira.company.com/JRA/secure/ViewUserIssueColumns!default.jspa
> accept-language: en-gb
> ua-cpu: x86
> if-modified-since: Sun, 12 Apr 2009 06:41:46 GMT
> if-none-match: "1239518506000"
> user-agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR
> 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648;
> .NET CLR 3.5.21022; InfoPath.2)
> Host: jira.company.com:80
> pragma: no-cache
> Connection: Keep-Alive
> Cookie: ARPT=YZPUQIS10.132.147.33CKMLK;
> JSESSIONID=xpLZJj7fly2Ymnnmp4TgC2YyPnG4ZF684hWqZbvTGwHMqTkzKwxG!119119743
> 
> HTTP/1.1 304 Not Modified
> Cache-Control: private
> Date: Mon, 13 Apr 2009 22:39:59 GMT
> Transfer-Encoding: chunked
> Content-Type: text/css; charset=UTF-8
> Expires: Thu, 11 Apr 2019 22:39:59 GMT
> Last-Modified: Sun, 12 Apr 2009 06:41:46 GMT
> ETag: "1239518506000"
> X-Powered-By: Servlet/2.4 JSP/2.0
> 
> 0000
> 
> 
> 
> #### STACKTRACE FROM APPLICATION (Note 30 second delay between making
> request and the exception) #####
> 
> [#|2009-04-13T23:40:00.010+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=24;_ThreadName=httpSSLWorkerThread-8080-3;|
> Mon Apr 13 23:40:00 BST 2009|com.a.b.c.ProxyFilter|D|Forwarding GET
> /JRA/s/330/1/7/_/styles/global.css|#]
> 
> [#|2009-04-13T23:40:31.449+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=23;_ThreadName=httpSSLWorkerThread-8080-2;|
> Mon Apr 13 23:40:31 BST 2009|com.a.b.c.ProxyFilter|E|ClientProtocolException
> thrown when fetching /JRA/s/330/1/_/includes/js/combined-javascript.js|#]
> 
> [#|2009-04-13T23:40:31.451+0100|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=23;_ThreadName=httpSSLWorkerThread-8080-2;
> _RequestID=6d978520-35f4-45ac-a79e-bce8ae9712e6;|org.apache.http.client.ClientProtocolException
>         at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
>         at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
>         at com.a.b.c.ProxyFilter.processProxyRequest(ProxyFilter.java:175)
>         at com.a.b.c.ProxyFilter.doFilter(ProxyFilter.java:108)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
>         at com.a.b.c.UserInjectFilter.doFilter(UserInjectFilter.java:52)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
>         at
> com.sun.identity.agents.filter.AmAgentBaseFilter.allowRequestToContinue(AmAgentBaseFilter.java:126)
>         at
> com.sun.identity.agents.filter.AmAgentBaseFilter.doFilter(AmAgentBaseFilter.java:75)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
>         at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
>         at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
>         at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
>         at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
>         at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
>         at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
>         at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
>         at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
>         at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
>         at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
>         at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
>         at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
>         at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
>         at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
>         at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
>         at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
>         at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
>         at
> com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
>         at
> com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
> Caused by: org.apache.http.ProtocolException: The server failed to respond
> with a valid HTTP response
>         at
> org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:93)
>         at
> org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:210)
>         at
> org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:271)
>         at
> org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
>         at
> org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
>         at
> org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:292)
>         at
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:126)
>         at
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:410)
>         at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
>         ... 37 more
> |#]
> 
> 
> 
> ##### HTTP CLIENT SETTINGS ######
> 
> HttpConnectionParams.setTcpNoDelay(params, true);
> HttpConnectionParams.setLinger(params, 30);
> HttpConnectionParams.setConnectionTimeout(params, 30000);
> HttpConnectionParams.setSoTimeout(params, 30000);
> HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
> HttpClientParams.setRedirecting(params, false);
> HttpProtocolParams.setUseExpectContinue(params, false);
> ConnManagerParams.setMaxConnectionsPerRoute(params, new
> ConnPerRouteBean(50));
> ConnManagerParams.setMaxTotalConnections(params, 500);
> HttpClientParams.setCookiePolicy(params,
> CookiePolicy.BROWSER_COMPATIBILITY);

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to