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

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

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

    https://github.com/apache/drill/pull/1234#discussion_r183611338
  
    --- Diff: 
exec/java-exec/src/test/java/org/apache/drill/exec/store/bson/TestBsonRecordReader.java
 ---
    @@ -49,17 +50,20 @@
     import org.junit.BeforeClass;
     import org.junit.Test;
     
    -public class TestBsonRecordReader extends BaseTestQuery {
    +public class TestBsonRecordReader {
    +  private static BufferAllocator allocator;
       private static VectorContainerWriter writer;
       private static TestOutputMutator mutator;
    +  private static DrillBuf buffer;
       private static BsonRecordReader bsonReader;
     
       @BeforeClass
       public static void setUp() {
    -    BufferAllocator bufferAllocator = getDrillbitContext().getAllocator();
    -    mutator = new TestOutputMutator(bufferAllocator);
    +    allocator = new RootAllocator(100_000_000);
    --- End diff --
    
    After testing just now, the lowest I could push this was 9,000,000 bytes. 
Going to 8,000,000 bytes causes an OOM. It looks like the BsonRecordReader 
allocates a bunch of value vectors. I will adjust this to 9,000,000.
    
    ```
    org.apache.drill.exec.exception.OutOfMemoryException: Unable to allocate 
buffer of size 8192 due to memory limit (800000). Current allocation: 795648
    
        at 
org.apache.drill.exec.memory.BaseAllocator.buffer(BaseAllocator.java:236)
        at 
org.apache.drill.exec.memory.BaseAllocator.buffer(BaseAllocator.java:211)
        at 
org.apache.drill.exec.vector.UInt1Vector.reallocRaw(UInt1Vector.java:262)
        at 
org.apache.drill.exec.vector.UInt1Vector.reAlloc(UInt1Vector.java:251)
        at 
org.apache.drill.exec.vector.UInt1Vector$Mutator.setSafe(UInt1Vector.java:480)
        at 
org.apache.drill.exec.vector.NullableVarCharVector$Mutator.setSafe(NullableVarCharVector.java:608)
        at 
org.apache.drill.exec.vector.complex.impl.NullableVarCharWriterImpl.write(NullableVarCharWriterImpl.java:110)
        at 
org.apache.drill.exec.store.bson.BsonRecordReader.writeString(BsonRecordReader.java:276)
        at 
org.apache.drill.exec.store.bson.BsonRecordReader.writeBinary(BsonRecordReader.java:205)
        at 
org.apache.drill.exec.store.bson.BsonRecordReader.writeToListOrMap(BsonRecordReader.java:117)
        at 
org.apache.drill.exec.store.bson.BsonRecordReader.write(BsonRecordReader.java:75)
        at 
org.apache.drill.exec.store.bson.TestBsonRecordReader.testBinaryTypes(TestBsonRecordReader.java:244)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
        at 
com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
        at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
        at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    
    ```


> Root allocator consistently Leaks a buffer in unit tests
> --------------------------------------------------------
>
>                 Key: DRILL-5927
>                 URL: https://issues.apache.org/jira/browse/DRILL-5927
>             Project: Apache Drill
>          Issue Type: Bug
>            Reporter: Timothy Farkas
>            Assignee: Timothy Farkas
>            Priority: Minor
>             Fix For: 1.14.0
>
>
> TestBsonRecordReader consistently poduces this exception when running on my 
> laptop
> {code}
> 13:09:15.777 [main] ERROR o.a.d.exec.server.BootStrapContext - Error while 
> closing
> java.lang.IllegalStateException: Allocator[ROOT] closed with outstanding 
> buffers allocated (1).
> Allocator(ROOT) 0/1024/10113536/4294967296 (res/actual/peak/limit)
>   child allocators: 0
>   ledgers: 1
>     ledger[79] allocator: ROOT), isOwning: true, size: 1024, references: 1, 
> life: 340912804170064..0, allocatorManager: [71, life: 340912803759189..0] 
> holds 1 buffers. 
>         DrillBuf[106], udle: [72 0..1024]
>   reservations: 0
>       at 
> org.apache.drill.exec.memory.BaseAllocator.close(BaseAllocator.java:502) 
> ~[classes/:na]
>       at org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:76) 
> [classes/:na]
>       at org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:64) 
> [classes/:na]
>       at 
> org.apache.drill.exec.server.BootStrapContext.close(BootStrapContext.java:256)
>  ~[classes/:na]
>       at org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:76) 
> [classes/:na]
>       at org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:64) 
> [classes/:na]
>       at org.apache.drill.exec.server.Drillbit.close(Drillbit.java:205) 
> [classes/:na]
>       at org.apache.drill.BaseTestQuery.closeClient(BaseTestQuery.java:315) 
> [test-classes/:na]
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.8.0_144]
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[na:1.8.0_144]
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[na:1.8.0_144]
>       at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>  [junit-4.11.jar:na]
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>  [junit-4.11.jar:na]
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>  [junit-4.11.jar:na]
>       at 
> mockit.integration.junit4.internal.JUnit4TestRunnerDecorator.invokeExplosively(JUnit4TestRunnerDecorator.java:44)
>  [jmockit-1.3.jar:na]
>       at 
> mockit.integration.junit4.internal.MockFrameworkMethod.invokeExplosively(MockFrameworkMethod.java:29)
>  [jmockit-1.3.jar:na]
>       at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) ~[na:na]
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[na:1.8.0_144]
>       at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]
>       at 
> mockit.internal.util.MethodReflection.invokeWithCheckedThrows(MethodReflection.java:95)
>  [jmockit-1.3.jar:na]
>       at 
> mockit.internal.annotations.MockMethodBridge.callMock(MockMethodBridge.java:76)
>  [jmockit-1.3.jar:na]
>       at 
> mockit.internal.annotations.MockMethodBridge.invoke(MockMethodBridge.java:41) 
> [jmockit-1.3.jar:na]
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java)
>  [junit-4.11.jar:na]
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33) 
> [junit-4.11.jar:na]
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
> [junit-4.11.jar:na]
>       at org.junit.runner.JUnitCore.run(JUnitCore.java:160) 
> [junit-4.11.jar:na]
>       at 
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
>  [junit-rt.jar:na]
>       at 
> com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
>  [junit-rt.jar:na]
>       at 
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
>  [junit-rt.jar:na]
>       at 
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 
> [junit-rt.jar:na]
> {code}



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

Reply via email to