Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-6793

FragmentExecutor cannot send its final state for the case when RootExec root wasn't initialized

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.15.0
    • Fix Version/s: 1.15.0
    • Component/s: None
    • Labels:

      Description

      Problem description
      For the case when the exception was thrown during initializing RootExec root, after that root.dumpBatches() is called in FragmentExecutor.cleanup() method, so NPE will be thrown before releasing the resources and sending the final state.

      20:11:22.910 [243f2a45-cd8a-b3f8-3d5d-36fdbe8fb446:frag:0:0] ERROR o.a.d.exec.server.BootStrapContext - org.apache.drill.exec.work.WorkManager$WorkerBee$2.run() leaked an exception.
      Exception in thread "243f2a45-cd8a-b3f8-3d5d-36fdbe8fb446:frag:0:0" java.lang.NullPointerException
      	at org.apache.drill.exec.work.fragment.FragmentExecutor.cleanup(FragmentExecutor.java:211)
      	at org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:330)
      	at org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      java.lang.NullPointerException: null
      	at org.apache.drill.exec.work.fragment.FragmentExecutor.cleanup(FragmentExecutor.java:211) ~[classes/:na]
      	at org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:330) ~[classes/:na]
      	at org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38) ~[classes/:na]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_181]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
      	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
      

      Simple reproduce
      Throw the exception in the constructor of ParquetRecordReader and run any parquet test, for example TestParquetMetadataCache.testPartitionPruningWithMetadataCache_1()

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                KazydubB Bohdan Kazydub
                Reporter:
                vvysotskyi Volodymyr Vysotskyi
                Reviewer:
                Volodymyr Vysotskyi
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: