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

OutputCommitCoordinator should clear authorized committers only after authorized committer fails, not after any failure

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.3.0, 1.3.1, 1.4.0
    • 1.3.1, 1.4.0
    • Scheduler, Spark Core
    • None

    Description

      In OutputCommitCoordinator, there is some logic to clear the authorized committer's lock on committing in case it fails. However, it looks like the current code also clears this lock if other tasks fail, which is an obvious bug: https://github.com/apache/spark/blob/df3550084c9975f999ed370dd9f7c495181a68ba/core/src/main/scala/org/apache/spark/scheduler/OutputCommitCoordinator.scala#L118. In theory, it's possible that this could allow a new committer to start, run to completion, and commit output before the authorized committer finished, but it's unlikely that this race occurs often in practice due to the complex combination of failure and timing conditions that would be required to expose it. Still, we should fix this issue.

      This was discovered by adav while reading the OutputCommitCoordinator code.

      Attachments

        Activity

          People

            joshrosen Josh Rosen
            joshrosen Josh Rosen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: