You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "zhaoqz (Created) (JIRA)" <ji...@apache.org> on 2012/04/20 10:38:41 UTC

[jira] [Created] (HTTPASYNC-18) Create multiple client object will deadlock

Create multiple client object will deadlock
-------------------------------------------

                 Key: HTTPASYNC-18
                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-18
             Project: HttpComponents HttpAsyncClient
          Issue Type: Bug
    Affects Versions: 4.0-beta1
         Environment: Windows 7 
            Reporter: zhaoqz
            Priority: Critical



Found one Java-level deadlock:
=============================
"I/O dispatcher 20":
  waiting to lock monitor 0x0fc87f4c (object 0x299028b8, a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector),
  which is held by "I/O dispatcher 18"
"I/O dispatcher 18":
  waiting to lock monitor 0x03fd6cfc (object 0x2b2d57b8, a org.apache.http.concurrent.BasicFuture),
  which is held by "I/O dispatcher 20"

Java stack information for the threads listed above:
===================================================
"I/O dispatcher 20":
	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.connectionRequestCompleted(DefaultAsyncRequestDirector.java:508)
	- waiting to lock <0x299028b8> (a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector)
	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.access$000(DefaultAsyncRequestDirector.java:92)
	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector$InternalFutureCallback.completed(DefaultAsyncRequestDirector.java:552)
	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector$InternalFutureCallback.completed(DefaultAsyncRequestDirector.java:549)
	at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:109)
	- locked <0x2b2d57b8> (a org.apache.http.concurrent.BasicFuture)
	at org.apache.http.impl.nio.conn.PoolingClientAsyncConnectionManager$InternalPoolEntryCallback.completed(PoolingClientAsyncConnectionManager.java:303)
	at org.apache.http.impl.nio.conn.PoolingClientAsyncConnectionManager$InternalPoolEntryCallback.completed(PoolingClientAsyncConnectionManager.java:285)
	at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:109)
	- locked <0x2b2d57e0> (a org.apache.http.concurrent.BasicFuture)
	at org.apache.http.nio.pool.RouteSpecificPool.completed(RouteSpecificPool.java:154)
	at org.apache.http.nio.pool.AbstractNIOConnPool.requestCompleted(AbstractNIOConnPool.java:349)
	at org.apache.http.nio.pool.AbstractNIOConnPool$InternalSessionRequestCallback.completed(AbstractNIOConnPool.java:581)
	at org.apache.http.impl.nio.reactor.SessionRequestImpl.completed(SessionRequestImpl.java:130)
	- locked <0x2b2d5818> (a org.apache.http.impl.nio.reactor.SessionRequestImpl)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels(AbstractIOReactor.java:424)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:291)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:601)
	at java.lang.Thread.run(Unknown Source)
"I/O dispatcher 18":
	at org.apache.http.concurrent.BasicFuture.cancel(BasicFuture.java:129)
	- waiting to lock <0x2b2d57b8> (a org.apache.http.concurrent.BasicFuture)
	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.releaseResources(DefaultAsyncRequestDirector.java:368)
	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.failed(DefaultAsyncRequestDirector.java:393)
	- locked <0x299028b8> (a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector)
	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.responseCompleted(DefaultAsyncRequestDirector.java:467)
	- locked <0x299028b8> (a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector)
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:384)
	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:268)
	at org.apache.http.impl.nio.client.LoggingAsyncRequestExecutor.inputReady(LoggingAsyncRequestExecutor.java:99)
	at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:192)
	at org.apache.http.impl.nio.DefaultHttpClientIODispatch.onInputReady(DefaultHttpClientIODispatch.java:125)
	at org.apache.http.impl.nio.DefaultHttpClientIODispatch.onInputReady(DefaultHttpClientIODispatch.java:49)
	at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:112)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:160)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:601)
	at java.lang.Thread.run(Unknown Source)

Found 2 deadlocks.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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


[jira] [Resolved] (HTTPASYNC-18) Create multiple client object will deadlock

Posted by "Oleg Kalnichevski (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HTTPASYNC-18?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oleg Kalnichevski resolved HTTPASYNC-18.
----------------------------------------

       Resolution: Fixed
    Fix Version/s: 4.0-beta2

I believe I have fixed the issue by eliminating the possibility of a deadlock between the connection request Future and the DefaultAsyncRequestDirector.

Please re-test your application against the latest snapshot from SVN trunk and confirm the fix.

Oleg 
                
> Create multiple client object will deadlock
> -------------------------------------------
>
>                 Key: HTTPASYNC-18
>                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-18
>             Project: HttpComponents HttpAsyncClient
>          Issue Type: Bug
>    Affects Versions: 4.0-beta1
>         Environment: Windows 7 
>            Reporter: zhaoqz
>            Priority: Critical
>             Fix For: 4.0-beta2
>
>
> Found one Java-level deadlock:
> =============================
> "I/O dispatcher 20":
>   waiting to lock monitor 0x0fc87f4c (object 0x299028b8, a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector),
>   which is held by "I/O dispatcher 18"
> "I/O dispatcher 18":
>   waiting to lock monitor 0x03fd6cfc (object 0x2b2d57b8, a org.apache.http.concurrent.BasicFuture),
>   which is held by "I/O dispatcher 20"
> Java stack information for the threads listed above:
> ===================================================
> "I/O dispatcher 20":
> 	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.connectionRequestCompleted(DefaultAsyncRequestDirector.java:508)
> 	- waiting to lock <0x299028b8> (a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector)
> 	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.access$000(DefaultAsyncRequestDirector.java:92)
> 	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector$InternalFutureCallback.completed(DefaultAsyncRequestDirector.java:552)
> 	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector$InternalFutureCallback.completed(DefaultAsyncRequestDirector.java:549)
> 	at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:109)
> 	- locked <0x2b2d57b8> (a org.apache.http.concurrent.BasicFuture)
> 	at org.apache.http.impl.nio.conn.PoolingClientAsyncConnectionManager$InternalPoolEntryCallback.completed(PoolingClientAsyncConnectionManager.java:303)
> 	at org.apache.http.impl.nio.conn.PoolingClientAsyncConnectionManager$InternalPoolEntryCallback.completed(PoolingClientAsyncConnectionManager.java:285)
> 	at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:109)
> 	- locked <0x2b2d57e0> (a org.apache.http.concurrent.BasicFuture)
> 	at org.apache.http.nio.pool.RouteSpecificPool.completed(RouteSpecificPool.java:154)
> 	at org.apache.http.nio.pool.AbstractNIOConnPool.requestCompleted(AbstractNIOConnPool.java:349)
> 	at org.apache.http.nio.pool.AbstractNIOConnPool$InternalSessionRequestCallback.completed(AbstractNIOConnPool.java:581)
> 	at org.apache.http.impl.nio.reactor.SessionRequestImpl.completed(SessionRequestImpl.java:130)
> 	- locked <0x2b2d5818> (a org.apache.http.impl.nio.reactor.SessionRequestImpl)
> 	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels(AbstractIOReactor.java:424)
> 	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:291)
> 	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
> 	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:601)
> 	at java.lang.Thread.run(Unknown Source)
> "I/O dispatcher 18":
> 	at org.apache.http.concurrent.BasicFuture.cancel(BasicFuture.java:129)
> 	- waiting to lock <0x2b2d57b8> (a org.apache.http.concurrent.BasicFuture)
> 	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.releaseResources(DefaultAsyncRequestDirector.java:368)
> 	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.failed(DefaultAsyncRequestDirector.java:393)
> 	- locked <0x299028b8> (a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector)
> 	at org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.responseCompleted(DefaultAsyncRequestDirector.java:467)
> 	- locked <0x299028b8> (a org.apache.http.impl.nio.client.DefaultAsyncRequestDirector)
> 	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:384)
> 	at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:268)
> 	at org.apache.http.impl.nio.client.LoggingAsyncRequestExecutor.inputReady(LoggingAsyncRequestExecutor.java:99)
> 	at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:192)
> 	at org.apache.http.impl.nio.DefaultHttpClientIODispatch.onInputReady(DefaultHttpClientIODispatch.java:125)
> 	at org.apache.http.impl.nio.DefaultHttpClientIODispatch.onInputReady(DefaultHttpClientIODispatch.java:49)
> 	at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:112)
> 	at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:160)
> 	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
> 	at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
> 	at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
> 	at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
> 	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:601)
> 	at java.lang.Thread.run(Unknown Source)
> Found 2 deadlocks.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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