[ 
https://issues.apache.org/jira/browse/DRILL-5015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15653505#comment-15653505
 ] 

ASF GitHub Bot commented on DRILL-5015:
---------------------------------------

Github user sohami commented on a diff in the pull request:

    https://github.com/apache/drill/pull/648#discussion_r87351670
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java ---
    @@ -245,14 +291,15 @@ public synchronized void connect(String connect, 
Properties props) throws RpcExc
               throw new RpcException("Failure setting up ZK for client.", e);
             }
           }
    -
    -      final ArrayList<DrillbitEndpoint> endpoints = new 
ArrayList<>(clusterCoordinator.getAvailableEndpoints());
    -      checkState(!endpoints.isEmpty(), "No DrillbitEndpoint can be found");
    -      // shuffle the collection then get the first endpoint
    -      Collections.shuffle(endpoints);
    -      endpoint = endpoints.iterator().next();
    +      endpoints.addAll(clusterCoordinator.getAvailableEndpoints());
         }
     
    +    // Make sure we have at least one endpoint in the list
    +    checkState(!endpoints.isEmpty(), "No DrillbitEndpoint can be found");
    --- End diff --
    
    Moved checkstate inside the else condition and change the string to capture 
more information. For if case we are throwing exception if there is no 
"drillbit" value passed in connection string


> As per documentation, when issuing a list of drillbits in the connection 
> string, we always attempt to connect only to the first one
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-5015
>                 URL: https://issues.apache.org/jira/browse/DRILL-5015
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Client - JDBC
>    Affects Versions: 1.8.0, 1.9.0
>            Reporter: Sorabh Hamirwasia
>            Assignee: Sudheesh Katkam
>
> When trying to connect to a Drill cluster by specifying more than 1 drillbits 
> to connect to, we always attempt to connect to only the first drillbit.
> As an example, we tested against a pair of drillbits, but we always connect 
> to the first entry in the CSV list by querying for the 'current' drillbit. 
> The remaining entries are never attempted.
> [root@pssc-60 agileSqlPerfTests]# /opt/mapr/drill/drill-1.8.0/bin/sqlline  -u 
>  "jdbc:drill:schema=dfs.tmp;drillbit=pssc-61:31010,pssc-62:31010" -f 
> whereAmI.q  | grep -v logback
> 1/1          select * from sys.drillbits where `current`;
> +-----------------+------------+---------------+------------+----------+
> |    hostname     | user_port  | control_port  | data_port  | current  |
> +-----------------+------------+---------------+------------+----------+
> | pssc-61.qa.lab  | 31010      | 31011         | 31012      | true     |
> +-----------------+------------+---------------+------------+----------+
> 1 row selected (0.265 seconds)
> Closing: org.apache.drill.jdbc.impl.DrillConnectionImpl
> apache drill 1.8.0 
> "a little sql for your nosql"
> This property is meant for use by clients when not wanting to overload the ZK 
> for fetching a list of existing Drillbits, but the behaviour doesn't match 
> the documentation. 
> [Making a Direct Drillbit Connection | 
> https://drill.apache.org/docs/using-the-jdbc-driver/#using-the-jdbc-url-format-for-a-direct-drillbit-connection
>  ]
> We need to randomly shuffle between this list and If an entry in the shuffled 
> list is unreachable, we need to try for the next entry in the list.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to