hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 27434] - Deadlock with MultiThreadedHttpConnectionManager
Date Fri, 05 Mar 2004 16:04:16 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27434>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27434

Deadlock with MultiThreadedHttpConnectionManager





------- Additional Comments From ludovic_claude@hotmail.com  2004-03-05 16:04 -------
I'm trying to read the following page: 
http://cvs.sourceforge.net/viewcvs.py/mevenide

I'm attaching the code of the class that is reading the web pages, it is quite
stand-alone, i'll try to provide a test case later.

And yes, it was working previously with the 2.0 rc2 release. 

This is the trace returned by HttpClient, apparently this:
[DEBUG] Unable to get a connection, waiting...,
hostConfig=HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80]
explains why it blocks, now the question is why is it unable to open a
connection? There can be up to 3 simultaneous connections in my application, but
this problem occurs at the start of the application, when pages are read
sequentially on the same thread. 

[TRACE] enter GetMethod(String)
[TRACE] enter HttpClient.executeMethod(HttpMethod)
[TRACE] enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState)
[TRACE] enter HttpConnectionManager.getConnection(HostConfiguration, long)
[DEBUG] HttpConnectionManager.getConnection:  config =
HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80], timeout = 0
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Getting free connection,
hostConfig=HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80]
[DEBUG] HttpConnection.setSoTimeout(0)
[DEBUG] Connection is stale, closing...
[TRACE] enter HttpConnection.close()
[TRACE] enter HttpConnection.closeSockedAndStreams()
[TRACE] enter HttpConnection.open()
[TRACE] enter HttpMethodBase.execute(HttpState, HttpConnection)
[DEBUG] Execute loop try 1
[TRACE] enter HttpMethodBase.processRequest(HttpState, HttpConnection)
[TRACE] Attempt number 1 to process request
[TRACE] enter HttpMethodBase.writeRequest(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.writeRequestLine(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.generateRequestLine(HttpConnection, String, String,
String, String)
[DEBUG] >> "GET /viewcvs.py/mevenide/ HTTP/1.1[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpMethodBase.writeRequestHeaders(HttpState,HttpConnection)
[TRACE] enter HttpMethodBase.addRequestHeaders(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addUserAgentRequestHeaders(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addHostRequestHeader(HttpState, HttpConnection)
[DEBUG] Adding Host request header
[TRACE] enter HttpMethodBase.addCookieRequestHeader(HttpState, HttpConnection)
[TRACE] enter HttpState.getCookies()
[TRACE] enter CookieSpecBase.match(String, int, String, boolean, Cookie[])
[TRACE] enter HttpMethodBase.addAuthorizationRequestHeader(HttpState,
HttpConnection)
[TRACE] enter HttpMethodBase.addProxyAuthorizationRequestHeader(HttpState,
HttpConnection)
[TRACE] enter HttpMethodBase.addProxyConnectionHeader(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addContentLengthRequestHeader(HttpState,
HttpConnection)
[DEBUG] >> "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98)[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[DEBUG] >> "Cache-Control: no-cache[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[DEBUG] >> "Host: cvs.sourceforge.net[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpConnection.writeLine()
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpConnection.flushRequestOutputStream()
[DEBUG] >> "[\r][\n]"
[TRACE] enter HttpConnection.flushRequestOutputStream()
[TRACE] enter HttpMethodBase.readResponse(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readStatusLine(HttpState, HttpConnection)
[TRACE] enter HttpConnection.readLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[DEBUG] << "HTTP/1.1 200 OK[\r][\n]"
[TRACE] enter HttpMethodBase.readResponseHeaders(HttpState,HttpConnection)
[TRACE] enter HttpConnection.getResponseInputStream()
[TRACE] enter HeaderParser.parseHeaders(HttpConnection, HeaderGroup)
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[DEBUG] << "Date: Fri, 05 Mar 2004 15:22:14 GMT[\r][\n]"
[DEBUG] << "Server: Apache/2.0.40 (Red Hat Linux)[\r][\n]"
[DEBUG] << "Content-Type: text/html; charset=ISO-8859-1[\r][\n]"
[DEBUG] << "Connection: close[\r][\n]"
[DEBUG] << "Transfer-Encoding: chunked[\r][\n]"
[TRACE] enter HttpMethodBase.processResponseHeaders(HttpState, HttpConnection)
[TRACE] enter GetMethod.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpConnection.getResponseInputStream()
[TRACE] enter HeaderElement.parse(String)
[TRACE] enter HeaderElement.parsePair(char[], int, int)
[DEBUG] HttpConnection.getSoTimeout()
[TRACE] enter HttpConnection.isResponseAvailable(int)
[TRACE] enter GetMethod(String)
[TRACE] enter HttpClient.executeMethod(HttpMethod)
[TRACE] enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState)
[TRACE] enter HttpConnectionManager.getConnection(HostConfiguration, long)
[DEBUG] HttpConnectionManager.getConnection:  config = HostConfiguration[],
timeout = 0
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Allocating new connection, hostConfig=HostConfiguration[]
[TRACE] enter GetMethod(String)
[TRACE] enter HttpClient.executeMethod(HttpMethod)
[TRACE] enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState)
[TRACE] enter HttpConnectionManager.getConnection(HostConfiguration, long)
[DEBUG] HttpConnectionManager.getConnection:  config =
HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80], timeout = 0
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Allocating new connection,
hostConfig=HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80]
[DEBUG] HttpConnection.setSoTimeout(0)
[TRACE] enter HttpConnection.open()
[TRACE] enter HttpMethodBase.execute(HttpState, HttpConnection)
[DEBUG] Execute loop try 1
[TRACE] enter HttpMethodBase.processRequest(HttpState, HttpConnection)
[TRACE] Attempt number 1 to process request
[TRACE] enter HttpMethodBase.writeRequest(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.writeRequestLine(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.generateRequestLine(HttpConnection, String, String,
String, String)
[DEBUG] >> "GET /viewcvs.py/mevenide/ HTTP/1.1[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpMethodBase.writeRequestHeaders(HttpState,HttpConnection)
[TRACE] enter HttpMethodBase.addRequestHeaders(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addUserAgentRequestHeaders(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addHostRequestHeader(HttpState, HttpConnection)
[DEBUG] Adding Host request header
[TRACE] enter HttpMethodBase.addCookieRequestHeader(HttpState, HttpConnection)
[TRACE] enter HttpState.getCookies()
[TRACE] enter CookieSpecBase.match(String, int, String, boolean, Cookie[])
[TRACE] enter HttpMethodBase.addAuthorizationRequestHeader(HttpState,
HttpConnection)
[TRACE] enter HttpMethodBase.addProxyAuthorizationRequestHeader(HttpState,
HttpConnection)
[TRACE] enter HttpMethodBase.addProxyConnectionHeader(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addContentLengthRequestHeader(HttpState,
HttpConnection)
[DEBUG] >> "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98)[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[DEBUG] >> "Cache-Control: no-cache[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[DEBUG] >> "Host: cvs.sourceforge.net[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpConnection.writeLine()
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpConnection.flushRequestOutputStream()
[DEBUG] >> "[\r][\n]"
[TRACE] enter HttpConnection.flushRequestOutputStream()
[TRACE] enter HttpMethodBase.readResponse(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readStatusLine(HttpState, HttpConnection)
[TRACE] enter HttpConnection.readLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[DEBUG] << "HTTP/1.1 200 OK[\r][\n]"
[TRACE] enter HttpMethodBase.readResponseHeaders(HttpState,HttpConnection)
[TRACE] enter HttpConnection.getResponseInputStream()
[TRACE] enter HeaderParser.parseHeaders(HttpConnection, HeaderGroup)
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[DEBUG] << "Date: Fri, 05 Mar 2004 15:22:41 GMT[\r][\n]"
[DEBUG] Connection reclaimed by garbage collector,
hostConfig=HostConfiguration[host=sourceforge.net, protocol=http:80, port=80]
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Notifying no-one, there are no waiting threads
[DEBUG] Connection reclaimed by garbage collector,
hostConfig=HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80]
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Notifying no-one, there are no waiting threads
[DEBUG] << "Server: Apache/2.0.40 (Red Hat Linux)[\r][\n]"
[DEBUG] << "Connection: close[\r][\n]"
[DEBUG] << "Transfer-Encoding: chunked[\r][\n]"
[DEBUG] << "Content-Type: text/html; charset=ISO-8859-1[\r][\n]"
[TRACE] enter HttpMethodBase.processResponseHeaders(HttpState, HttpConnection)
[TRACE] enter GetMethod.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpConnection.getResponseInputStream()
[TRACE] enter HeaderElement.parse(String)
[TRACE] enter HeaderElement.parsePair(char[], int, int)
[DEBUG] HttpConnection.getSoTimeout()
[TRACE] enter HttpConnection.isResponseAvailable(int)
[TRACE] enter GetMethod(String)
[TRACE] enter HttpClient.executeMethod(HttpMethod)
[TRACE] enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState)
[TRACE] enter HttpConnectionManager.getConnection(HostConfiguration, long)
[DEBUG] HttpConnectionManager.getConnection:  config = HostConfiguration[],
timeout = 0
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Allocating new connection, hostConfig=HostConfiguration[]
[TRACE] enter GetMethod(String)
[TRACE] enter HttpClient.executeMethod(HttpMethod)
[TRACE] enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState)
[TRACE] enter HttpConnectionManager.getConnection(HostConfiguration, long)
[DEBUG] HttpConnectionManager.getConnection:  config =
HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80], timeout = 0
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Allocating new connection,
hostConfig=HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80]
[DEBUG] HttpConnection.setSoTimeout(0)
[TRACE] enter HttpConnection.open()
[TRACE] enter HttpMethodBase.execute(HttpState, HttpConnection)
[DEBUG] Execute loop try 1
[TRACE] enter HttpMethodBase.processRequest(HttpState, HttpConnection)
[TRACE] Attempt number 1 to process request
[TRACE] enter HttpMethodBase.writeRequest(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.writeRequestLine(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.generateRequestLine(HttpConnection, String, String,
String, String)
[DEBUG] >> "GET /viewcvs.py/mevenide/ HTTP/1.1[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpMethodBase.writeRequestHeaders(HttpState,HttpConnection)
[TRACE] enter HttpMethodBase.addRequestHeaders(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addUserAgentRequestHeaders(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addHostRequestHeader(HttpState, HttpConnection)
[DEBUG] Adding Host request header
[TRACE] enter HttpMethodBase.addCookieRequestHeader(HttpState, HttpConnection)
[TRACE] enter HttpState.getCookies()
[TRACE] enter CookieSpecBase.match(String, int, String, boolean, Cookie[])
[TRACE] enter HttpMethodBase.addAuthorizationRequestHeader(HttpState,
HttpConnection)
[TRACE] enter HttpMethodBase.addProxyAuthorizationRequestHeader(HttpState,
HttpConnection)
[TRACE] enter HttpMethodBase.addProxyConnectionHeader(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.addContentLengthRequestHeader(HttpState,
HttpConnection)
[DEBUG] >> "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98)[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[DEBUG] >> "Cache-Control: no-cache[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[DEBUG] >> "Host: cvs.sourceforge.net[\r][\n]"
[TRACE] enter HttpConnection.print(String)
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpConnection.writeLine()
[TRACE] enter HttpConnection.write(byte[])
[TRACE] enter HttpConnection.write(byte[], int, int)
[TRACE] enter HttpConnection.flushRequestOutputStream()
[DEBUG] >> "[\r][\n]"
[TRACE] enter HttpConnection.flushRequestOutputStream()
[TRACE] enter HttpMethodBase.readResponse(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readStatusLine(HttpState, HttpConnection)
[TRACE] enter HttpConnection.readLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[DEBUG] << "HTTP/1.1 200 OK[\r][\n]"
[TRACE] enter HttpMethodBase.readResponseHeaders(HttpState,HttpConnection)
[TRACE] enter HttpConnection.getResponseInputStream()
[TRACE] enter HeaderParser.parseHeaders(HttpConnection, HeaderGroup)
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[TRACE] enter HttpParser.readLine()
[TRACE] enter HttpParser.readRawLine()
[DEBUG] << "Date: Fri, 05 Mar 2004 15:22:14 GMT[\r][\n]"
[DEBUG] << "Server: Apache/2.0.40 (Red Hat Linux)[\r][\n]"
[DEBUG] << "Content-Type: text/html; charset=ISO-8859-1[\r][\n]"
[DEBUG] << "Connection: close[\r][\n]"
[DEBUG] << "Transfer-Encoding: chunked[\r][\n]"
[TRACE] enter HttpMethodBase.processResponseHeaders(HttpState, HttpConnection)
[TRACE] enter GetMethod.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)
[TRACE] enter HttpConnection.getResponseInputStream()
[TRACE] enter HeaderElement.parse(String)
[TRACE] enter HeaderElement.parsePair(char[], int, int)
[DEBUG] HttpConnection.getSoTimeout()
[TRACE] enter HttpConnection.isResponseAvailable(int)
[TRACE] enter GetMethod(String)
[TRACE] enter HttpClient.executeMethod(HttpMethod)
[TRACE] enter HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState)
[TRACE] enter HttpConnectionManager.getConnection(HostConfiguration, long)
[DEBUG] HttpConnectionManager.getConnection:  config =
HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80], timeout = 0
[TRACE] enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
[DEBUG] Unable to get a connection, waiting...,
hostConfig=HostConfiguration[host=cvs.sourceforge.net, protocol=http:80, port=80]

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


Mime
View raw message