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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.15.0
    • 1.15.0
    • None

    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

              bohdan Bohdan Kazydub
              volodymyr Vova Vysotskyi
              Vova Vysotskyi Vova Vysotskyi
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: