qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Conway (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PROTON-1440) pn_connection_wake to return bool status
Date Thu, 16 Mar 2017 15:01:41 GMT

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

Alan Conway commented on PROTON-1440:
-------------------------------------

Your fix isn't thread safe unfortunately, as zeroing and reading the pointer can happen concurrently
which means freeing and using the pointer also can happen concurrently. I'm working to fix
that now, basically it's the moral equivalent of your fix but instead of zeroing the pointer,
we atomically mark the pconnection_t as closed and keep it around till the pn_connection_t
expires. Adding the bool return is a nice bonus. 

> pn_connection_wake to return bool status
> ----------------------------------------
>
>                 Key: PROTON-1440
>                 URL: https://issues.apache.org/jira/browse/PROTON-1440
>             Project: Qpid Proton
>          Issue Type: Improvement
>          Components: proton-c
>    Affects Versions: 0.17.0
>            Reporter: Alan Conway
>            Assignee: Alan Conway
>             Fix For: 0.18.0
>
>
> pn_connection_wake() allows any thread to send a PN_CONNECTION_WAKE event to a proactor-managed
connection. Currently it does not return any value, and the application must ensure it is
not called after the PN_TRANSPORT_CLOSED event is processed for that connection.
> This is tricky for the application to synchronize and inconsistent with other pn_connection_
functions. If refcounts are used to keep a pn_connection_t in memory after the TRANSPORT_CLOSED,
then calling wake() is an error even though the pn_connection_t is valid.
> Change wake to be safe as long as the pn_connection_t is valid. It returns true if the
connection will be woken, false if it is too late.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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


Mime
View raw message