[ 
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)

Reply via email to