This is an automated email from the ASF dual-hosted git repository.
nicholasjiang pushed a commit to branch branch-0.5
in repository https://gitbox.apache.org/repos/asf/celeborn.git
The following commit(s) were added to refs/heads/branch-0.5 by this push:
new 1e6235690 [CELEBORN-1476] Enhance the RESTful response error msg
1e6235690 is described below
commit 1e62356905eb7ab1dd540d49eb3104b7536f1ebb
Author: Fei Wang <[email protected]>
AuthorDate: Mon Jun 24 03:24:33 2024 +0800
[CELEBORN-1476] Enhance the RESTful response error msg
### What changes were proposed in this pull request?
Partial backport https://github.com/apache/kyuubi/pull/2634
It is aimed to enhance the error message when exception thrown in RESTful
api method.
### Why are the changes needed?
As title.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Closes #2587 from turboFei/RestExceptionMapper.
Authored-by: Fei Wang <[email protected]>
Signed-off-by: SteNicholas <[email protected]>
(cherry picked from commit 02efb0b4f54096451791d21272c92da01f3fb8ac)
Signed-off-by: SteNicholas <[email protected]>
---
.../server/common/http/api/ApiRequestContext.scala | 22 +++++++++++++++++++++-
.../server/common/http/api/OpenAPIConfig.scala | 1 +
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git
a/service/src/main/scala/org/apache/celeborn/server/common/http/api/ApiRequestContext.scala
b/service/src/main/scala/org/apache/celeborn/server/common/http/api/ApiRequestContext.scala
index 2c293bf29..568090cd7 100644
---
a/service/src/main/scala/org/apache/celeborn/server/common/http/api/ApiRequestContext.scala
+++
b/service/src/main/scala/org/apache/celeborn/server/common/http/api/ApiRequestContext.scala
@@ -19,7 +19,9 @@ package org.apache.celeborn.server.common.http.api
import javax.servlet.ServletContext
import javax.servlet.http.HttpServletRequest
-import javax.ws.rs.core.Context
+import javax.ws.rs.WebApplicationException
+import javax.ws.rs.core.{Context, MediaType, Response}
+import javax.ws.rs.ext.{ExceptionMapper, Provider}
import org.eclipse.jetty.server.handler.ContextHandler
@@ -37,6 +39,24 @@ private[celeborn] trait ApiRequestContext {
protected def normalizeParam(param: String): String =
Option(param).map(_.trim).getOrElse("")
}
+@Provider
+class RestExceptionMapper extends ExceptionMapper[Exception] {
+ override def toResponse(exception: Exception): Response = {
+ exception match {
+ case e: WebApplicationException =>
+ Response.status(e.getResponse.getStatus)
+ .`type`(e.getResponse.getMediaType)
+ .entity(e.getMessage)
+ .build()
+ case e =>
+ Response.status(Response.Status.INTERNAL_SERVER_ERROR)
+ .`type`(MediaType.APPLICATION_JSON)
+ .entity(e.getMessage)
+ .build()
+ }
+ }
+}
+
private[celeborn] object HttpServiceContext {
private val attribute = getClass.getCanonicalName
diff --git
a/service/src/main/scala/org/apache/celeborn/server/common/http/api/OpenAPIConfig.scala
b/service/src/main/scala/org/apache/celeborn/server/common/http/api/OpenAPIConfig.scala
index 07053de4c..b9355ac00 100644
---
a/service/src/main/scala/org/apache/celeborn/server/common/http/api/OpenAPIConfig.scala
+++
b/service/src/main/scala/org/apache/celeborn/server/common/http/api/OpenAPIConfig.scala
@@ -23,6 +23,7 @@ class OpenAPIConfig extends ResourceConfig {
packages(OpenAPIConfig.packages: _*)
register(classOf[CelebornOpenApiResource])
register(classOf[CelebornScalaObjectMapper])
+ register(classOf[RestExceptionMapper])
}
object OpenAPIConfig {