This is an automated email from the ASF dual-hosted git repository.

florianhockmann pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/master by this push:
     new 304795f  Fix 2 ConnectionPool inconcistencies CTR
304795f is described below

commit 304795f93cb521d0fcadccbc32ad9eb7f80cc454
Author: Florian Hockmann <[email protected]>
AuthorDate: Sun Jan 13 18:37:19 2019 +0100

    Fix 2 ConnectionPool inconcistencies CTR
    
    ConnectionPool.NrConnections could return -1 if it was called when the
    pool is populated at the same time.
    ReturnConnectionIfOpen() called DefinitelyDestroyConnection() after
    having already destroyed all connections by calling ConsiderUnavailable.
---
 gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs 
b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs
index 242def8..708580b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionPool.cs
@@ -49,7 +49,14 @@ namespace Gremlin.Net.Driver
             PopulatePoolAsync().WaitUnwrap();
         }
         
-        public int NrConnections => Interlocked.CompareExchange(ref 
_nrConnections, PoolEmpty, PoolEmpty);               
+        public int NrConnections
+        {
+            get
+            {
+                var nrConnections = Interlocked.CompareExchange(ref 
_nrConnections, PoolEmpty, PoolEmpty);
+                return nrConnections < 0 ? 0 : nrConnections;
+            }
+        }
         
         public async Task<IConnection> GetAvailableConnectionAsync()
         {
@@ -144,7 +151,6 @@ namespace Gremlin.Net.Driver
         {
             if (connection.IsOpen) return;
             ConsiderUnavailable();
-            DefinitelyDestroyConnection(connection);
         }
 
         private void ConsiderUnavailable()

Reply via email to