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

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_r169214241
  
    --- Diff: 
exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillConnectionImpl.java ---
    @@ -108,73 +108,81 @@ protected DrillConnectionImpl(DriverImpl driver, 
AvaticaFactory factory,
         super.setReadOnly(false);
     
         this.config = new DrillConnectionConfig(info);
    +    try{
    +      try {
    +        String connect = null;
     
    -    try {
    -      String connect = null;
    -
    -      if (config.isLocal()) {
    -        try {
    -          Class.forName("org.eclipse.jetty.server.Handler");
    -        } catch (final ClassNotFoundException e) {
    -          throw new SQLNonTransientConnectionException(
    -              "Running Drill in embedded mode using Drill's jdbc-all JDBC"
    -              + " driver Jar file alone is not supported.",  e);
    -        }
    -
    -        final DrillConfig dConfig = DrillConfig.create(info);
    -        this.allocator = RootAllocatorFactory.newRoot(dConfig);
    -        RemoteServiceSet set = GlobalServiceSetReference.SETS.get();
    -        if (set == null) {
    -          // We're embedded; start a local drill bit.
    -          serviceSet = RemoteServiceSet.getLocalServiceSet();
    -          set = serviceSet;
    +        if (config.isLocal()) {
               try {
    -            bit = new Drillbit(dConfig, serviceSet);
    -            bit.run();
    -          } catch (final UserException e) {
    -            throw new SQLException(
    -                "Failure in starting embedded Drillbit: " + e.getMessage(),
    -                e);
    -          } catch (Exception e) {
    -            // (Include cause exception's text in wrapping exception's 
text so
    -            // it's more likely to get to user (e.g., via SQLLine), and use
    -            // toString() since getMessage() text doesn't always mention 
error:)
    -            throw new SQLException("Failure in starting embedded Drillbit: 
" + e, e);
    +            Class.forName("org.eclipse.jetty.server.Handler");
    +          } catch (final ClassNotFoundException e) {
    +            throw new SQLNonTransientConnectionException(
    +                "Running Drill in embedded mode using Drill's jdbc-all 
JDBC"
    +                + " driver Jar file alone is not supported.",  e);
    +          }
    +
    +          final DrillConfig dConfig = DrillConfig.create(info);
    +          this.allocator = RootAllocatorFactory.newRoot(dConfig);
    --- End diff --
    
    Not your bug: error in original code. Drill JDBC allows creation of 
multiple connections. Each will have a separate root allocator. This might 
oversubscribe memory in extreme case. Probably need to file a JIRA for this 
case.


> 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
>              Labels: ready-to-commit
>             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)

Reply via email to