You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by mi...@apache.org on 2019/08/01 15:43:40 UTC
[activemq-nms-amqp] branch master updated: AMQNET-594: Race
condition during session creation
This is an automated email from the ASF dual-hosted git repository.
michaelpearce pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-nms-amqp.git
The following commit(s) were added to refs/heads/master by this push:
new 640ec72 AMQNET-594: Race condition during session creation
new 8693c1b Merge pull request #11 from HavretGC/AMQNET-594_Race_condition_during_session_creation
640ec72 is described below
commit 640ec72d4bfd9dd585dbec150ad608fab7b7549d
Author: Havret <h4...@gmail.com>
AuthorDate: Thu Aug 1 13:05:41 2019 +0200
AMQNET-594: Race condition during session creation
---
src/NMS.AMQP/NmsConnection.cs | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/src/NMS.AMQP/NmsConnection.cs b/src/NMS.AMQP/NmsConnection.cs
index 0383c14..307ebed 100644
--- a/src/NMS.AMQP/NmsConnection.cs
+++ b/src/NMS.AMQP/NmsConnection.cs
@@ -446,23 +446,32 @@ namespace Apache.NMS.AMQP
private void CreateNmsConnection()
{
- if (connected.CompareAndSet(false, true))
+ if (connected || closed)
{
- try
- {
- provider.Connect(ConnectionInfo).ConfigureAwait(false).GetAwaiter().GetResult();
- }
- catch (Exception e)
+ return;
+ }
+
+ lock (syncRoot)
+ {
+ if (!closed && connected.CompareAndSet(false, true))
{
try
{
- provider.Close();
+ provider.Connect(ConnectionInfo).ConfigureAwait(false).GetAwaiter().GetResult();
+
}
- catch
+ catch (Exception e)
{
- }
+ try
+ {
+ provider.Close();
+ }
+ catch
+ {
+ }
- throw NMSExceptionSupport.Create(e);
+ throw NMSExceptionSupport.Create(e);
+ }
}
}
}