[ https://issues.apache.org/jira/browse/TINKERPOP-1125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15134271#comment-15134271 ]
ASF GitHub Bot commented on TINKERPOP-1125: ------------------------------------------- GitHub user kieransherlock opened a pull request: https://github.com/apache/incubator-tinkerpop/pull/211 Use the existing Host iterator TINKERPOP-1125 Rather than creating a new iterator so skipping over a host in the pool. You can merge this pull request into a Git repository by running: $ git pull https://github.com/kieransherlock/incubator-tinkerpop tp31 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-tinkerpop/pull/211.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #211 ---- commit c5b242126131edbe7e87300fc34a54a4dcb9fce9 Author: Kieran Sherlock <kie...@identitymind.com> Date: 2016-02-05T14:25:32Z Use the existing Host iterator TINKERPOP-1125 Rather than creating a new iterator so skipping over a host in the pool. ---- > 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)