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