Uh oh!
There was an error while loading. Please reload this page.
[SPARK-35011][CORE] Fix false active executor in UI that caused by BlockManager reregistration - #34536
[SPARK-35011][CORE] Fix false active executor in UI that caused by BlockManager reregistration #34536Ngone51 wants to merge 2 commits into
Conversation
@sumeetgajjar@mridulm@attilapiros Please take a look, thanks! |
SparkQA
commented
Nov 9, 2021
Kubernetes integration test starting |
SparkQA
commented
Nov 9, 2021
Kubernetes integration test status failure |
SparkQA
commented
Nov 9, 2021
Test build #145032 has finished for PR 34536 at commit
|
There was a problem hiding this comment.
+1, LGTM. Thank you, @Ngone51 . Since it's pending on new UT addition, I'll keep this PR open here. BTW, I'm okay with merging without UT in this case.
dongjoon-hyun
commented
Nov 9, 2021
BTW, @Ngone51 . Could you check your repo? It seems that GitHub Action is not triggered. |
mridulm
commented
Nov 9, 2021
For any mutation of the What I mean is, we have only two mutations of In both of these cases, there is a companion event which is fired - so why do we need to fire an event if executor is missing ? |
sumeetgajjar
commented
Nov 9, 2021
Hi @mridulm, I believe the additional Please consider the following sequence of events:
@Ngone51 can you please confirm if my example is valid? |
Exactly.
@mridulm In the case mentioned by @sumeetgajjar , the executor is missing from the scheduler backend but still exits in |
Ngone51
commented
Nov 10, 2021
@dongjoon-hyun Thanks for the reminder. Have rebased my repo. |
mridulm
commented
Nov 10, 2021
If there is downstream use of blockmanager and executor events interchangably, we should fix that instead of duplicating event ? (I am assuming reference to |
SparkQA
commented
Nov 10, 2021
Kubernetes integration test starting |
Ngone51
commented
Nov 10, 2021
So, first of all, we should know that there's a case (reported by SPARK-35011) where the executor doesn't exist in the scheduler backend but exist in For such registered However, for
Yes, it's |
sumeetgajjar
left a comment
There was a problem hiding this comment.
Hi @Ngone51,
LGTM, in case you decide to merge this change without a UT, please let me know, maybe I can salvage a test from my previous PR to test it.
SparkQA
commented
Nov 10, 2021
Kubernetes integration test status failure |
@sumeetgajjar Thanks..but I don't think the previous tests would help in this PR since we didn't touch re-registration stuff in this PR. I'd leave no UT with this PR since it's hard to make a UT to test. |
SparkQA
commented
Nov 10, 2021
Test build #145044 has finished for PR 34536 at commit
|
mridulm
commented
Nov 10, 2021
My main concern is as follows - we have a A thought exercise - how about modify |
Ngone51
commented
Nov 10, 2021
The problem is, Do you think we can add this memory-related info to |
mridulm
commented
Nov 10, 2021
You are right, this sucks: I am not seeing an easy way forward. |
Ngone51
commented
Nov 10, 2021
Sure, sgtm! |
dongjoon-hyun
commented
Nov 12, 2021
According to the above discussion, I merged this for Apache Spark 3.3 for further development. |
Ngone51
commented
Nov 12, 2021
Thanks all!! |
Am I right ? Driver Logs Executor Logs |
What changes were proposed in this pull request?
Also post the event
SparkListenerExecutorRemovedwhen removing an executor, which is known byBlockManagerMasterbut unknown toSchedulerBackend.Why are the changes needed?
In #32114, it reports an issue that
BlockManagerMastercould register aBlockManagerfrom a dead executor due to reregistration mechanism. The side effect is, the executor will be shown on the UI as an active one, though it's already dead indeed.In #32114, we tried to avoid such reregistration for a to-be-dead executor. However, I just realized that we can actually leave such reregistration alone since
HeartbeatReceiver.expireDeadHostsshould clean up thoseBlockManagers in the end. The problem is, the corresponding executors in UI can't be cleaned along with theBlockManagers cleaning. Because executors in UI can only be cleaned bySparkListenerExecutorRemoved,while
BlockManagers cleaning only postSparkListenerBlockManagerRemoved(which is ignored byAppStatusListener).Does this PR introduce any user-facing change?
Yes, users would see the false active executor be removed in the end.
How was this patch tested?
Pass existing tests.