-
Notifications
You must be signed in to change notification settings - Fork 29.1k
[SPARK-16868][Web Ui] Fix executor be both dead and alive on executor ui. #14530
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
Conversation
… duplicate executor in WebUI.
|
Test build #63335 has finished for PR 14530 at commit
|
| } | ||
|
|
||
| private def removeDeadExecutorStorageStatus(executorId: String): Unit = { | ||
| deadExecutorStorageStatus.zipWithIndex.foreach { case (status, index) => |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just commenting on the code, not the logic: isn't this just something like deadExecutorStorageStatus.retain(_.blockManagerId.executorId != executorId)? I know it does something slightly different, but maybe it's desirable to clear all such matching statuses. And it's a one-liner that doesn't need a method.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
retain seems to be a method in MapLike, but I can't find any similar method in ListBuffer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah. OK what about
val toRemove = deadExecutorStorageStatus.find(_.blockManagerId.executorId == executorId)
if (toRemove >= 0) {
deadExecutorStorageStatus.remove(toRemove)
}
Might be clearer and more direct. No big deal either way.
|
Test build #63355 has finished for PR 14530 at commit
|
|
\cc @srowen |
|
As to the actual logic of the change, I don't feel that confident about reviewing it. Suggest looking at 'blame' output here to see who might have written it? |
|
Looks fine (small style nit but not worth another review round). I'm a little curious about why it happens - I thought that the driver would kill executors that failed a heartbeat, but that's a separate discussion. Merging to master. |
|
I will re-run this case, and dig into why the executor will double register. |
What changes were proposed in this pull request?
In a heavy pressure of the spark application, since the executor will register it to driver block manager twice(because of heart beats), the executor will show as picture show:

How was this patch tested?
NA
Details in: SPARK-16868