drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-6090) While connecting to drill-bits using JDBC Driver through Zookeeper, a lot of "Curator-Framework-0" threads are created if connection to drill-bit is not successful(no drill-bits are up/reachable)
Date Fri, 19 Jan 2018 01:23:00 GMT

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

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

Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1094#discussion_r162516548
  
    --- Diff: exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java
---
    @@ -132,10 +132,12 @@ protected DrillConnectionImpl(DriverImpl driver, AvaticaFactory
factory,
                 bit = new Drillbit(dConfig, serviceSet);
                 bit.run();
               } catch (final UserException e) {
    +            cleanup();
                 throw new SQLException(
                     "Failure in starting embedded Drillbit: " + e.getMessage(),
                     e);
               } catch (Exception e) {
    +            cleanup();
    --- End diff --
    
    One trick is this: used nested exceptions. The inner set "parses" the exception types,
the outer does cleanup:
    
    ```
    try {
      try {
        // do something
      } catch (ExceptionA e) {
        // Do something
      } catch (ExceptionB e) {
        // Do something else
      ... }
     } catch (Throwable t) {
        cleanup();
        throw t;
     }
    ```


> While connecting to drill-bits using JDBC Driver through Zookeeper, a lot of "Curator-Framework-0"
threads are created if connection to drill-bit is not successful(no drill-bits are up/reachable)
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-6090
>                 URL: https://issues.apache.org/jira/browse/DRILL-6090
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Client - JDBC
>    Affects Versions: 1.12.0
>         Environment: Centos 65, Java 7, Drill JDBC 1.12.0
>            Reporter: Milind Takawale
>            Assignee: Milind Takawale
>            Priority: Major
>             Fix For: 1.13.0
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> I am using Drill JDBC driver 1.12.0 to connect to MapR-DB. I am finding the available
drill-bits using Zookeepers. When drill-bits are not up or not reachable, the connection is
failed with exception: "Failure in connecting to Drill: oadd.org.apache.drill.exec.rpc.RpcException:
Failure setting up ZK for client", which is expected, but number of threads created by ZKClusterCoordinator
just keeps on increasing.
> Steps to reproduce the issue
>  # Setup a connection with a drill-bit using Apache Drill JDBC driver 1.12.0 through
Zookeeper hosts(port 5181)
>  # Now stop the drill-bit services or block the drill-bit IPs using iptable rules
>  # Truncate catalina logs
>  # Try to connect to the drill-bit/hit a code path that requires connection to drill-bits.
>  # Take thread dump using kill -QUIT <java process id>
>  # grep -c "Curator-Framework-0" catalina.out
> Observe that the curator framework thread just keep on accumulating
> RCA:
>  # ZKClusterCoordinator creates curator threads in the constructor
>  # ZKClusterCoordinator is instantiated by DrillClient.connect
>  # DrillClient.connect is called in DrillConnectionImpl constructor
> Fix:
> Call DrillConnectionImpl .cleanup() from all the catch blocks in the DrillConnectionImpl 
constructor.
>  
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message