Kyle Weaver created BEAM-7412:
---------------------------------

             Summary: portable spark: thread/memory leak in local mode
                 Key: BEAM-7412
                 URL: https://issues.apache.org/jira/browse/BEAM-7412
             Project: Beam
          Issue Type: Bug
          Components: runner-spark
            Reporter: Kyle Weaver
            Assignee: Kyle Weaver


When running validatesPortableRunnerBatch test on local mode, the portable 
Spark runner creates ~18k threads before becoming unable to create any more 
threads, at which point it crashes. This does not happen on standalone cluster 
mode, where ephemeral executors (independent JVMs) are used and then shut down, 
preventing whatever leakage is occurring from becoming too much of a problem.

Sample stack trace:

{{"pool-3965-thread-3" #16059 daemon prio=5 os_prio=0 tid=0x00007f9f85a81000 
nid=0x32a0 waiting on condition [0x00007f9f8b9f1000]}}
{{ java.lang.Thread.State: TIMED_WAITING (parking)}}
{{ at (C/C++) 0x00007fa2f32c2dae (Unknown Source)}}
{{ at (C/C++) 0x00007fa2f2851351 (Unknown Source)}}
{{ at sun.misc.Unsafe.park(Native Method)}}
{{ - parking to wait for <0x0000000727bda848> (a 
java.util.concurrent.SynchronousQueue$TransferStack)}}
{{ at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)}}
{{ at 
java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)}}
{{ at 
java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)}}
{{ at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)}}
{{ at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073)}}
{{ at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)}}
{{ at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)}}
{{ at java.lang.Thread.run(Thread.java:748)}}



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

Reply via email to