-
Notifications
You must be signed in to change notification settings - Fork 28.4k
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-7729][UI]Executor which has been killed should also be displayed on Executor Tab #10058
Conversation
Test build #46941 has finished for PR 10058 at commit
|
Test build #46942 has finished for PR 10058 at commit
|
Test build #46943 has finished for PR 10058 at commit
|
what's wrong with the font here? seems quite different with the original one? |
val storageStatusList = listener.storageStatusList | ||
(0 until storageStatusList.size).map { statusId => | ||
ExecutorsPage.getExecInfo(listener, statusId) | ||
listener.synchronized { |
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.
maybe I missed something, why we need synchronized
here?
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.
more than one thread use listener object. There are rest api, executor page in UI, and SparkListener.
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.
I'm still confused about the reason on imposing the sequential access here.....can you give an example of the problem without this synchronized
....
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.
Because ExecutorsPage.getExecInfo() use executorToTasksActive, executorToTasksFailed of ExecutorsListener and SparkListenerBus thread also change value of executorToTasksActive,executorToTasksFailed in onPostEvent() , we need to use synchronized there. It is better that synchronized is used in ExecutorsPage.getExecInfo().
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.
I don't think it is necessary, essentially you are imposing that even the GET operations are to be processed sequentially....
@CodingCat I have addressed your comments. Thanks. |
Test build #46964 has finished for PR 10058 at commit
|
@@ -52,68 +53,82 @@ private[ui] class ExecutorsPage( | |||
private val listener = parent.listener | |||
|
|||
def render(request: HttpServletRequest): Seq[Node] = { | |||
val storageStatusList = listener.storageStatusList | |||
listener.synchronized { |
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.
similar situation here
@CodingCat Can you take a look again?Thanks |
Test build #47038 has finished for PR 10058 at commit
|
Test build #47043 has finished for PR 10058 at commit
|
@@ -87,8 +94,13 @@ class StorageStatusListener extends SparkListener { | |||
override def onBlockManagerRemoved(blockManagerRemoved: SparkListenerBlockManagerRemoved) { | |||
synchronized { | |||
val executorId = blockManagerRemoved.blockManagerId.executorId | |||
executorIdToStorageStatus.remove(executorId) | |||
val removedStorageStatus = executorIdToStorageStatus.remove(executorId) |
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.
nit: looks nicer if you do executorIdToStorageStatus.remove(executorId).foreach { status =>
The code looks good, but I'd like to see at least a basic test. |
@vanzin I address your comments. Can you take a look again? Thanks. |
Test build #47198 has finished for PR 10058 at commit
|
retest this please |
LGTM pending tests. |
Test build #50548 has finished for PR 10058 at commit
|
retest this please |
Test build #50566 has finished for PR 10058 at commit
|
Test build #50567 has finished for PR 10058 at commit
|
@zsxwing I have updated it to resolve the conflicts. and now executor ui is the following(many active executors that can not be seen in the picture are displayed on the bottom of ui ): |
Looks great. ping @andrewor14 to take a look |
def storageStatusList: Seq[StorageStatus] = storageStatusListener.storageStatusList | ||
def activeStorageStatusList: Seq[StorageStatus] = storageStatusListener.activeStorageStatusList | ||
|
||
def deadStorageStatusList: Seq[StorageStatus] = storageStatusListener.deadStorageStatusList |
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.
is this used anywhere
@lianhuiwang Looks good. Can you rebase to master? |
Conflicts: project/MimaExcludes.scala
Test build #51636 has finished for PR 10058 at commit
|
@andrewor14 Now all tests have been passed. |
Sorry this conflicts with master again. Once you rebase I'll go ahead and merge it. |
Conflicts: project/MimaExcludes.scala
@andrewor14 Thanks. I have updated with master. I think you can go ahead after all tests have been passed. |
Conflicts: project/MimaExcludes.scala
Test build #51734 has finished for PR 10058 at commit
|
Alright, I've merged this into master after resolving the conflicts myself. It was a tiny Mima thing so it wasn't so bad. Thanks for working on this. |
@andrewor14 Thanks. |
…otals Table ## What changes were proposed in this pull request? Now that dead executors are shown in the executors table (#10058) the totals table is updated to include the separate totals for alive and dead executors as well as the current total, as originally discussed in #10668 ## How was this patch tested? Manually verified by running the Standalone Web UI in the latest Safari and Firefox ESR Author: Alex Bozarth <[email protected]> Closes #11381 from ajbozarth/spark13459.
…otals Table ## What changes were proposed in this pull request? Now that dead executors are shown in the executors table (apache#10058) the totals table is updated to include the separate totals for alive and dead executors as well as the current total, as originally discussed in apache#10668 ## How was this patch tested? Manually verified by running the Standalone Web UI in the latest Safari and Firefox ESR Author: Alex Bozarth <[email protected]> Closes apache#11381 from ajbozarth/spark13459.
@andrewor14 @squito Dead Executors should also be displayed on Executor Tab.
as following: