Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SPARK-15736][CORE][branch-1.6] Gracefully handle loss of DiskStore files #13479

Conversation

JoshRosen
Copy link
Contributor

If an RDD partition is cached on disk and the DiskStore file is lost, then reads of that cached partition will fail and the missing partition is supposed to be recomputed by a new task attempt. In the current BlockManager implementation, however, the missing file does not trigger any metadata updates / does not invalidate the cache, so subsequent task attempts will be scheduled on the same executor and the doomed read will be repeatedly retried, leading to repeated task failures and eventually a total job failure.

In order to fix this problem, the executor with the missing file needs to properly mark the corresponding block as missing so that it stops advertising itself as a cache location for that block.

This patch fixes this bug and adds an end-to-end regression test (in FailureSuite) and a set of unit tests (in BlockManagerSuite).

This is a branch-1.6 backport of #13473.

@JoshRosen
Copy link
Contributor Author

/cc @andrewor14, this is the branch-1.6 backport of my other patch.

@SparkQA
Copy link

SparkQA commented Jun 3, 2016

Test build #59889 has finished for PR 13479 at commit 8f04720.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@andrewor14
Copy link
Contributor

Merging into 1.6.

asfgit pushed a commit that referenced this pull request Jun 3, 2016
…iles

If an RDD partition is cached on disk and the DiskStore file is lost, then reads of that cached partition will fail and the missing partition is supposed to be recomputed by a new task attempt. In the current BlockManager implementation, however, the missing file does not trigger any metadata updates / does not invalidate the cache, so subsequent task attempts will be scheduled on the same executor and the doomed read will be repeatedly retried, leading to repeated task failures and eventually a total job failure.

In order to fix this problem, the executor with the missing file needs to properly mark the corresponding block as missing so that it stops advertising itself as a cache location for that block.

This patch fixes this bug and adds an end-to-end regression test (in `FailureSuite`) and a set of unit tests (`in BlockManagerSuite`).

This is a branch-1.6 backport of #13473.

Author: Josh Rosen <[email protected]>

Closes #13479 from JoshRosen/handle-missing-cache-files-branch-1.6.
@andrewor14
Copy link
Contributor

can you delete branch

@JoshRosen JoshRosen closed this Jun 3, 2016
@JoshRosen JoshRosen deleted the handle-missing-cache-files-branch-1.6 branch June 3, 2016 00:52
zzcclp pushed a commit to zzcclp/spark that referenced this pull request Jun 3, 2016
…iles

If an RDD partition is cached on disk and the DiskStore file is lost, then reads of that cached partition will fail and the missing partition is supposed to be recomputed by a new task attempt. In the current BlockManager implementation, however, the missing file does not trigger any metadata updates / does not invalidate the cache, so subsequent task attempts will be scheduled on the same executor and the doomed read will be repeatedly retried, leading to repeated task failures and eventually a total job failure.

In order to fix this problem, the executor with the missing file needs to properly mark the corresponding block as missing so that it stops advertising itself as a cache location for that block.

This patch fixes this bug and adds an end-to-end regression test (in `FailureSuite`) and a set of unit tests (`in BlockManagerSuite`).

This is a branch-1.6 backport of apache#13473.

Author: Josh Rosen <[email protected]>

Closes apache#13479 from JoshRosen/handle-missing-cache-files-branch-1.6.

(cherry picked from commit 4259a28)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants