Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-37659

Fix FsHistoryProvider race condition between list and delet log info

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.1.2, 3.2.1, 3.3.0
    • 3.2.1, 3.3.0
    • Web UI
    • None

    Description

      After SPARK-29043, FsHistoryProvider will list the log info without waitting all `mergeApplicationListing` task finished.

      However the `LevelDBIterator` of list log info is not thread safe if some other threads delete the related log info at same time.

      There is the error msg:

      21/12/15 14:12:02 ERROR FsHistoryProvider: Exception in checking for event log updates
      java.util.NoSuchElementException: 1^@__main__^@+hdfs://xxx/application_xxx.inprogress
              at org.apache.spark.util.kvstore.LevelDB.get(LevelDB.java:132)
              at org.apache.spark.util.kvstore.LevelDBIterator.next(LevelDBIterator.java:137)
              at scala.collection.convert.Wrappers$JIteratorWrapper.next(Wrappers.scala:44)
              at scala.collection.Iterator.foreach(Iterator.scala:941)
              at scala.collection.Iterator.foreach$(Iterator.scala:941)
              at scala.collection.AbstractIterator.foreach(Iterator.scala:1429)
              at scala.collection.IterableLike.foreach(IterableLike.scala:74)
              at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
              at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
              at scala.collection.generic.Growable.$plus$plus$eq(Growable.scala:62)
              at scala.collection.generic.Growable.$plus$plus$eq$(Growable.scala:53)
              at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:184)
              at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:47)
              at scala.collection.TraversableLike.to(TraversableLike.scala:678)
              at scala.collection.TraversableLike.to$(TraversableLike.scala:675)
              at scala.collection.AbstractTraversable.to(Traversable.scala:108)
              at scala.collection.TraversableOnce.toList(TraversableOnce.scala:299)
              at scala.collection.TraversableOnce.toList$(TraversableOnce.scala:299)
              at scala.collection.AbstractTraversable.toList(Traversable.scala:108)
              at org.apache.spark.deploy.history.FsHistoryProvider.checkForLogs(FsHistoryProvider.scala:588)
              at org.apache.spark.deploy.history.FsHistoryProvider.$anonfun$startPolling$3(FsHistoryProvider.scala:299)
      

      Attachments

        Issue Links

          Activity

            People

              ulysses XiDuo You
              ulysses XiDuo You
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: