hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Burke (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HTTPCLIENT-1229) @ThreadSafe BasicClientConnectionManager is not threadsafe with respect to shutdown
Date Thu, 30 Aug 2012 20:39:07 GMT

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13445274#comment-13445274
] 

Jonathan Burke edited comment on HTTPCLIENT-1229 at 8/31/12 7:38 AM:
---------------------------------------------------------------------

Test that will should result in a null-pointer exception (a stack trace should also be attached
to this issue.)  I originally placed this test at the bottom of of TestBasicConnManager.java
but that might be a little unreasonable since it relies on executing the test case iteratively
until the thread ordering produces the undesired series of steps.
                
      was (Author: jburke42):
    Test that will should result in a null-pointer exception (a stack trace should also be
attached to this issue.)
                  
> @ThreadSafe BasicClientConnectionManager is not threadsafe with respect to shutdown
> -----------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-1229
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1229
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpConn
>    Affects Versions: 4.2.1
>            Reporter: Jonathan Burke
>            Priority: Minor
>         Attachments: BasicClientConnectionManager.java, stackTrace.txt, test.txt
>
>
> Since the assignment to variable shutdown in the shutdown method (line 262) is not part
of the synchronize block and none of the assertNotShutdown method calls are within the synchronized
blocks of their enclosing methods, it is possible to have threads execute the commands of
BasicClientConnectionManager methods in the following sequence.
> Thread 1
> releaseConnection (or some other method that uses assertNotShutdown is called)
>   assertNotShutdown - Passes - Line 183
> Thread 2
> shutdown
>   the shutdown flag becomes true - Line 262
>   shutdown releases this.poolEntry and this.conn in the synchronized(this) block
>   
> Thread 1
>   release connection's synchronized(this) block get's executed 
>   	this.poolEntry is null in the try block causing a null pointer exception - Line 211
>   	this.poolEntry is null in the finally block causing a null pointer exception - Line
224

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

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


Mime
View raw message