Github user jorgebay commented on the issue:

    https://github.com/apache/tinkerpop/pull/903
  
    Yes, that's the design I was proposing, a minor note:
    
    > Either returns a random `Connection` or returns the least-used 
`Connection` based on an in-flight counter on the `Connection` (the latter 
would be the better solution but is a bit more complex).
    
    The easiest solution is to round robin through connections, we can use a 
"modulo counter":
    
    ```csharp
    // Its important to get a reference of the connection array that doesn't 
change
    // Otherwise the connection length might be modified (see copy-on-write)
    Connection[] connections = GetConnections();
    var connectionIndex = Interlocked.Increment(ref _indexCounter) % 
connections.Length;
    var connectionToReturn = connections[connectionIndex];
    // TODO: Overflow protection for `_indexCounter`
    ```
    
    Regarding whether to implement both approaches, I think implementing 
TINKERPOP-1774 with the current implementation of the pool (dequeuing) comes at 
a cost of introducing complexity (in particular `AsyncAutoResetEvent`).
    
    The implementation for this patch is really good, but we can be introducing 
corner cases and I think it's not worth the risk. I'd say let's wait for both 
solutions to be implemented.


---

Reply via email to