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

Daniel Barclay (Drill) commented on DRILL-1735:
-----------------------------------------------

TEMPORARY:  Latest draft is in https://github.com/dsbos/incubator-drill, in 
branch temp_ChrisPatches_and_1735_try2 (last several commit labeled with 1735).

(Is to be moved to regular personal dev. branch, re-squashed, and generated 
into new diff/patch.)

> JDBC driver's close() leaks resources in local mode
> ---------------------------------------------------
>
>                 Key: DRILL-1735
>                 URL: https://issues.apache.org/jira/browse/DRILL-1735
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Client - JDBC
>            Reporter: Daniel Barclay (Drill)
>            Assignee: Daniel Barclay (Drill)
>            Priority: Critical
>             Fix For: 0.8.0
>
>         Attachments: Bug1735CloseDoesntCloseTest.java, 
> DRILL-1735.10.patch.txt, DRILL-1735.11.patch.txt, DRILL-1735.12.patch.txt, 
> DRILL-1735.6.patch.txt, DRILL-1735.7.patch.txt, DRILL-1735.9.patch.txt
>
>
> When the Drill JDBC driver is used in local mode (as  
> DriverManager.getConnection("jdbc:drill:zk=local", ... ), the close() method 
> doesn't free resources:  Calling getConnection() and then close() and then 
> repeating that pair of calls enough times results in an exception, the root 
> cause exeception of which is an IOException saying "Too many open files":
> java.sql.SQLException: Failure while attempting to start Drillbit in embedded 
> mode.
>       at 
> org.apache.drill.jdbc.DrillConnectionImpl.<init>(DrillConnectionImpl.java:81)
>       at 
> org.apache.drill.jdbc.DrillJdbc41Factory$DrillJdbc41Connection.<init>(DrillJdbc41Factory.java:88)
>       at 
> org.apache.drill.jdbc.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:57)
>       at 
> org.apache.drill.jdbc.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:1)
>       at 
> org.apache.drill.jdbc.DrillFactory.newConnection(DrillFactory.java:51)
>       at 
> net.hydromatic.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:126)
>       at java.sql.DriverManager.getConnection(DriverManager.java:571)
>       at java.sql.DriverManager.getConnection(DriverManager.java:187)
>       at 
> temp.Bug1735CloseDoesntCloseTest.testBug(Bug1735CloseDoesntCloseTest.java:26)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>       at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
> Caused by: java.lang.IllegalStateException: failed to create a child event 
> loop
>       at 
> io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:68)
>       at 
> io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:49)
>       at 
> io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:61)
>       at 
> io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:52)
>       at 
> org.apache.drill.exec.rpc.TransportCheck.createEventLoopGroup(TransportCheck.java:75)
>       at 
> org.apache.drill.exec.server.BootStrapContext.<init>(BootStrapContext.java:45)
>       at org.apache.drill.exec.server.Drillbit.<init>(Drillbit.java:95)
>       at 
> org.apache.drill.jdbc.DrillConnectionImpl.<init>(DrillConnectionImpl.java:78)
>       ... 18 more
> Caused by: io.netty.channel.ChannelException: failed to open a new selector
>       at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:128)
>       at io.netty.channel.nio.NioEventLoop.<init>(NioEventLoop.java:120)
>       at 
> io.netty.channel.nio.NioEventLoopGroup.newChild(NioEventLoopGroup.java:87)
>       at 
> io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:64)
>       ... 25 more
> Caused by: java.io.IOException: Too many open files
>       at sun.nio.ch.IOUtil.makePipe(Native Method)
>       at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:126)
>       ... 28 more



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

Reply via email to