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 {

Reply via email to