[ https://issues.apache.org/jira/browse/TINKERPOP-1125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15140361#comment-15140361 ]
Kieran Sherlock commented on TINKERPOP-1125: -------------------------------------------- I've added the extension to the integration test to the PR for TINKERPOP-1126. It was a little more complicated than your suggestion above. After server.stop() is called it is not possible to simply call server.start() again since all the thread pools have been shutdown. Instead when restarting the server it is necessary to create a new GremlinServer and then start this new one. > RoundRobin load balancing always uses the second Host when size = 2 > ------------------------------------------------------------------- > > Key: TINKERPOP-1125 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1125 > Project: TinkerPop > Issue Type: Bug > Components: driver > Affects Versions: 3.1.0-incubating > Reporter: Kieran Sherlock > Assignee: stephen mallette > Fix For: 3.1.2-incubating > > > Bring up two gremlin-server > Create a Cluster with these two servers, by default > LoadBalancingStrategy.RoundRobin() is used. > Create a client and make queries. > Notice that all requests go to the second server. > this.cluster.loadBalancingStrategy().select(msg).next() is called twice in > Client.chooseConnection(), so always the second Host is used. > The following seems to work > {code:diff} > diff --git > a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java > > b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java > index 8c80b8a..17c9a99 100644 > --- > a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java > +++ > b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java > @@ -341,7 +341,7 @@ public abstract class Client { > final Iterator<Host> possibleHosts = > this.cluster.loadBalancingStrategy().select(msg); > if (!possibleHosts.hasNext()) throw new TimeoutException("Timed > out waiting for an available host."); > - final Host bestHost = > this.cluster.loadBalancingStrategy().select(msg).next(); > + final Host bestHost = possibleHosts.next(); > final ConnectionPool pool = hostConnectionPools.get(bestHost); > return > pool.borrowConnection(cluster.connectionPoolSettings().maxWaitForConnection, > TimeUnit.MILLISECONDS); > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)