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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]