aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorCarson Wang <carson.wang@intel.com>2015-12-30 13:49:10 -0800
committerMarcelo Vanzin <vanzin@cloudera.com>2015-12-30 13:49:10 -0800
commitb244297966be1d09f8e861cfe2d8e69f7bed84da (patch)
tree81eacaf8d7c2aee2b59fd45f7e285e4049ca595a /core
parent5c2682b0c8fd2aeae2af1adb716ee0d5f8b85135 (diff)
downloadspark-b244297966be1d09f8e861cfe2d8e69f7bed84da.tar.gz
spark-b244297966be1d09f8e861cfe2d8e69f7bed84da.tar.bz2
spark-b244297966be1d09f8e861cfe2d8e69f7bed84da.zip
[SPARK-12399] Display correct error message when accessing REST API with an unknown app Id
I got an exception when accessing the below REST API with an unknown application Id. `http://<server-url>:18080/api/v1/applications/xxx/jobs` Instead of an exception, I expect an error message "no such app: xxx" which is a similar error message when I access `/api/v1/applications/xxx` ``` org.spark-project.guava.util.concurrent.UncheckedExecutionException: java.util.NoSuchElementException: no app with key xxx at org.spark-project.guava.cache.LocalCache$Segment.get(LocalCache.java:2263) at org.spark-project.guava.cache.LocalCache.get(LocalCache.java:4000) at org.spark-project.guava.cache.LocalCache.getOrLoad(LocalCache.java:4004) at org.spark-project.guava.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874) at org.apache.spark.deploy.history.HistoryServer.getSparkUI(HistoryServer.scala:116) at org.apache.spark.status.api.v1.UIRoot$class.withSparkUI(ApiRootResource.scala:226) at org.apache.spark.deploy.history.HistoryServer.withSparkUI(HistoryServer.scala:46) at org.apache.spark.status.api.v1.ApiRootResource.getJobs(ApiRootResource.scala:66) ``` Author: Carson Wang <carson.wang@intel.com> Closes #10352 from carsonwang/unknownAppFix.
Diffstat (limited to 'core')
-rw-r--r--core/src/main/scala/org/apache/spark/deploy/history/HistoryServer.scala16
1 files changed, 14 insertions, 2 deletions
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 0bc0cb1c15..6143a33b69 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
@@ -21,6 +21,8 @@ import java.util.NoSuchElementException
import java.util.zip.ZipOutputStream
import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse}
+import scala.util.control.NonFatal
+
import com.google.common.cache._
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
import org.apache.spark.{Logging, SecurityManager, SparkConf}
@@ -113,7 +115,17 @@ class HistoryServer(
}
def getSparkUI(appKey: String): Option[SparkUI] = {
- Option(appCache.get(appKey))
+ try {
+ val ui = appCache.get(appKey)
+ Some(ui)
+ } catch {
+ case NonFatal(e) => e.getCause() match {
+ case nsee: NoSuchElementException =>
+ None
+
+ case cause: Exception => throw cause
+ }
+ }
}
initialize()
@@ -193,7 +205,7 @@ class HistoryServer(
appCache.get(appId + attemptId.map { id => s"/$id" }.getOrElse(""))
true
} catch {
- case e: Exception => e.getCause() match {
+ case NonFatal(e) => e.getCause() match {
case nsee: NoSuchElementException =>
false