[
https://issues.apache.org/jira/browse/TS-2651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13940861#comment-13940861
]
ASF GitHub Bot commented on TS-2651:
------------------------------------
GitHub user manjeshnilange opened a pull request:
https://github.com/apache/trafficserver/pull/64
atscppapi: fixes for TS-2651: race conditions in destruction of ...
...async providers.
Also, I noticed a duplicated lock while invoking an intercept plugin.
Though the duplicate lock doesn't do any harm (mutex is recursive), we don't
need it.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/manjeshnilange/trafficserver master
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/trafficserver/pull/64.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #64
----
commit f979862b39914172caee4408d5733060516e2556
Author: Manjesh Nilange <[email protected]>
Date: 2014-03-19T19:07:52Z
atscppapi: fixes for TS-2651: race conditions in destruction of async
providers
----
> atscppapi: race conditions in destruction of async providers
> ------------------------------------------------------------
>
> Key: TS-2651
> URL: https://issues.apache.org/jira/browse/TS-2651
> Project: Traffic Server
> Issue Type: Bug
> Reporter: Manjesh Nilange
> Assignee: Brian Geffon
>
> There are two corner cases that I can think of -
> 1) Developer delete()ing AsyncHttpFetch before fetch is complete.
> In the .h documentation, we say that the fetch object will delete itself, so
> the implication is that developer need not delete it. However, we don't make
> sure that developer can't. Because if they do it (by mistake) before the
> fetch is complete, the fetch object's state is deleted, and then when the
> fetch actually completes, there will be chaos.
> 2) Developer delete()ing AsyncTimer exactly at the time a timing event
> happens.
> AsyncTimer requires the developer to delete the timer explicitly (with a
> periodic timer, we can't do self-destruction). If developer's delete happens
> at the same time as a event on the continuation, then we will have problems
> as the destructor tries to destroy the continuation that is being invoked in
> another thread.
--
This message was sent by Atlassian JIRA
(v6.2#6252)