[
https://issues.apache.org/jira/browse/HTTPCORE-294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Geir Harald Hansen updated HTTPCORE-294:
----------------------------------------
Attachment: threaddump.txt
Test.java
Attached example code shows how the deadlock is triggered. Attached thread dump
shows the two threads locked.
> Deadlock between Cancellable#cancel() and HttpAsyncExchange#submitResponse()
> ----------------------------------------------------------------------------
>
> Key: HTTPCORE-294
> URL: https://issues.apache.org/jira/browse/HTTPCORE-294
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore NIO
> Affects Versions: 4.2-beta1
> Reporter: Geir Harald Hansen
> Attachments: Test.java, threaddump.txt
>
>
> I leave postponed responses for a separate thread to handle. When
> Cancellable#cancel() is invoked I signal this background thread and wait for
> it to signal back before returning true or false from cancel() depending on
> whether the response was cancelled or already sent. I'm assuming it is not OK
> to always return true immediately and attempt in the background to signal
> another thread to tell it to not submit a response, which it may still do if
> it doesn't get the signal in time.
> My program deadlocks if the background thread tries to submit a response
> after Cancellable#cancel() has been invoked. The IOReactor worker thread
> (inside cancel()) waits on the background thread, and the background thread
> is trying to submit a response, apparently needing a lock held by the
> IOReactor worker thread.
> Not sure if this is a bug or if I am "doing it wrong". But I think this is a
> trap many will fall in, so it would be best if this problem could be avoided.
--
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: [email protected]
For additional commands, e-mail: [email protected]