You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by va...@apache.org on 2018/03/16 00:16:01 UTC
spark git commit: [SPARK-23608][CORE][WEBUI] Add synchronization in
SHS between attachSparkUI and detachSparkUI functions to avoid concurrent
modification issue to Jetty Handlers
Repository: spark
Updated Branches:
refs/heads/master 18f8575e0 -> 3675af724
[SPARK-23608][CORE][WEBUI] Add synchronization in SHS between attachSparkUI and detachSparkUI functions to avoid concurrent modification issue to Jetty Handlers
Jetty handlers are dynamically attached/detached while SHS is running. But the attach and detach operations might be taking place at the same time due to the async in load/clear in Guava Cache.
## What changes were proposed in this pull request?
Add synchronization between attachSparkUI and detachSparkUI in SHS.
## How was this patch tested?
With this patch, the jetty handlers missing issue never happens again in our production cluster SHS.
Author: Ye Zhou <ye...@linkedin.com>
Closes #20744 from zhouyejoe/SPARK-23608.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/3675af72
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/3675af72
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/3675af72
Branch: refs/heads/master
Commit: 3675af7247e841e9a689666dc20891ba55c612b3
Parents: 18f8575
Author: Ye Zhou <ye...@linkedin.com>
Authored: Thu Mar 15 17:15:53 2018 -0700
Committer: Marcelo Vanzin <va...@cloudera.com>
Committed: Thu Mar 15 17:15:53 2018 -0700
----------------------------------------------------------------------
.../org/apache/spark/deploy/history/HistoryServer.scala | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/3675af72/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala
index 0ec4afa..611fa56 100644
--- a/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala
@@ -150,14 +150,18 @@ class HistoryServer(
ui: SparkUI,
completed: Boolean) {
assert(serverInfo.isDefined, "HistoryServer must be bound before attaching SparkUIs")
- ui.getHandlers.foreach(attachHandler)
- addFilters(ui.getHandlers, conf)
+ handlers.synchronized {
+ ui.getHandlers.foreach(attachHandler)
+ addFilters(ui.getHandlers, conf)
+ }
}
/** Detach a reconstructed UI from this server. Only valid after bind(). */
override def detachSparkUI(appId: String, attemptId: Option[String], ui: SparkUI): Unit = {
assert(serverInfo.isDefined, "HistoryServer must be bound before detaching SparkUIs")
- ui.getHandlers.foreach(detachHandler)
+ handlers.synchronized {
+ ui.getHandlers.foreach(detachHandler)
+ }
provider.onUIDetached(appId, attemptId, ui)
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org