From 309cb504e1dd857e99ddc1989e5d110e1cb00564 Mon Sep 17 00:00:00 2001 From: Yihong He Date: Sun, 12 Nov 2023 21:18:13 +0100 Subject: [PATCH 1/3] [SPARK-45899] Set errorClass in errorInfoToThrowable --- .../apache/spark/sql/ClientE2ETestSuite.scala | 1 + .../client/GrpcExceptionConverter.scala | 21 ++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala index 10c928f130416..ee238c5492f91 100644 --- a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala +++ b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/ClientE2ETestSuite.scala @@ -85,6 +85,7 @@ class ClientE2ETestSuite extends RemoteSparkSession with SQLHelper with PrivateM |""".stripMargin) .collect() } + assert(ex.getErrorClass != null) if (enrichErrorEnabled) { assert(ex.getCause.isInstanceOf[DateTimeException]) } else { diff --git a/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala b/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala index 52bd276b0c4b5..f594453db6176 100644 --- a/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala +++ b/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala @@ -367,14 +367,19 @@ private[client] object GrpcExceptionConverter { implicit val formats = DefaultFormats val classes = JsonMethods.parse(info.getMetadataOrDefault("classes", "[]")).extract[Array[String]] + val errorClass = info.getMetadataOrDefault("errorClass", null) + val builder = FetchErrorDetailsResponse.Error + .newBuilder() + .setMessage(message) + .addAllErrorTypeHierarchy(classes.toImmutableArraySeq.asJava) + + if (errorClass != null) { + builder.setSparkThrowable( + FetchErrorDetailsResponse.SparkThrowable.newBuilder() + .setErrorClass(errorClass) + .build()) + } - errorsToThrowable( - 0, - Seq( - FetchErrorDetailsResponse.Error - .newBuilder() - .setMessage(message) - .addAllErrorTypeHierarchy(classes.toImmutableArraySeq.asJava) - .build())) + errorsToThrowable(0, Seq(builder.build())) } } From f9bf07b0b9d8bfdfde7e6889b6a9329282ba317c Mon Sep 17 00:00:00 2001 From: Yihong He Date: Sun, 12 Nov 2023 21:20:43 +0100 Subject: [PATCH 2/3] Update comments --- .../spark/sql/connect/client/GrpcExceptionConverter.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala b/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala index f594453db6176..75eee8f3d30bc 100644 --- a/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala +++ b/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala @@ -168,7 +168,7 @@ private[client] object GrpcExceptionConverter { private[client] case class ErrorParams( message: String, cause: Option[Throwable], - // errorClass will only be set if the error is both enriched and SparkThrowable. + // errorClass will only be set if the error is SparkThrowable. errorClass: Option[String], // messageParameters will only be set if the error is both enriched and SparkThrowable. messageParameters: Map[String, String], From cde361cb98f838dca77dc33d18ed74068b2688d9 Mon Sep 17 00:00:00 2001 From: Yihong He Date: Sun, 12 Nov 2023 22:28:38 +0100 Subject: [PATCH 3/3] Fix lints --- .../spark/sql/connect/client/GrpcExceptionConverter.scala | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala b/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala index 75eee8f3d30bc..810aeb010c0f3 100644 --- a/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala +++ b/connector/connect/common/src/main/scala/org/apache/spark/sql/connect/client/GrpcExceptionConverter.scala @@ -375,9 +375,10 @@ private[client] object GrpcExceptionConverter { if (errorClass != null) { builder.setSparkThrowable( - FetchErrorDetailsResponse.SparkThrowable.newBuilder() - .setErrorClass(errorClass) - .build()) + FetchErrorDetailsResponse.SparkThrowable + .newBuilder() + .setErrorClass(errorClass) + .build()) } errorsToThrowable(0, Seq(builder.build()))