[
https://issues.apache.org/jira/browse/QPID-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13171775#comment-13171775
]
[email protected] commented on QPID-3193:
-----------------------------------------------------
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/3239/#review3966
-----------------------------------------------------------
trunk/qpid/cpp/bindings/qpid/dotnet/src/BindingCommon.h
<https://reviews.apache.org/r/3239/#comment8974>
I think locking inside this macro introduces hidden beviour that needs to
be explicit.
Particularly as the lock scope will last (much) longer than the macro.
So I'd suggest just doing the lock explicitly in the line before the macro.
At the _very least_ rename the macro to something that indicates it locks
this.
LOCK_THIS_AND_THROW_IF_DISPOSED comes to mind
- Andrew
On 2011-12-16 21:04:58, Chug Rolke wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/3239/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2011-12-16 21:04:58)
bq.
bq.
bq. Review request for qpid, Andrew Stitcher, Gordon Sim, Ted Ross, Steve
Huston, and Cliff Jansen.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. QPID-3193 .NET Binding - proper handling of disposed objects.
bq.
bq.
bq. This addresses bug QPID-3193.
bq. https://issues.apache.org/jira/browse/QPID-3193
bq.
bq.
bq. Diffs
bq. -----
bq.
bq. trunk/qpid/cpp/bindings/qpid/dotnet/src/BindingCommon.h PRE-CREATION
bq. trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.h 1215245
bq. trunk/qpid/cpp/bindings/qpid/dotnet/src/Message.cpp 1215245
bq.
trunk/qpid/cpp/bindings/qpid/dotnet/src/msvc10/org.apache.qpid.messaging.vcxproj
1215245
bq.
trunk/qpid/cpp/bindings/qpid/dotnet/src/msvc9/org.apache.qpid.messaging.vcproj
1215245
bq.
bq. Diff: https://reviews.apache.org/r/3239/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq.
bq. Thanks,
bq.
bq. Chug
bq.
bq.
> .NET Binding for Messaging classes need a test to check that binding is still
> in effect
> ---------------------------------------------------------------------------------------
>
> Key: QPID-3193
> URL: https://issues.apache.org/jira/browse/QPID-3193
> Project: Qpid
> Issue Type: Improvement
> Affects Versions: 0.11
> Reporter: Chuck Rolke
> Assignee: Chuck Rolke
> Attachments: QPID-3694_lock-and-throw-preview.patch
>
>
> The .NET Binding for Messaging could be made more user-friendly with the
> addition of a property that indicates whether or not the underlying binding
> is still available. A C# coder may innocently write:
> (1) Message mA = new Message("a");
> (2) Message mB = mA;
> ...
> (N) mB.Dispose();
> After disposing of message mB then message mA is clobbered. 'Message' is a
> 'ref class' type and messages mA and mB refer to the same object on managed
> heap. When message mB is disposed then the bound C++ Messaging object is
> deleted [1]. Any reference to the bound message part of mA will result in an
> illegal memory reference (to 0) and a process exit. The .NET runtime can't
> catch this fault.
> The obvious answer is not to do that. If the second line of code was 'Message
> mB = new Message(mA)' then mA and mB would have been completely separate and
> disposing of either would have no effect on the other.
> Another answer is to have the binding check for a null binding reference on
> each and every access and then to throw if the underlying binding is gone.
> This is not very appealing from a performance standpoint.
> As a compromise I would like to add a property isBound to each class. Users
> then have a fighting chance to check that the binding is still in effect and
> that function calls on the object shouldn't blow up. This property would be
> useful in Assert statements or in debugging.
> [1] If anyone knows how to have my binding library intercept example code
> line (2) and create reference counts, please let me know.
--
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
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]