This is an automated email from the ASF dual-hosted git repository.

gurwls223 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new 2842d8aa25e [SPARK-42225][CONNECT] Add 
`SparkConnectIllegalArgumentException` to handle Spark Connect error precisely
2842d8aa25e is described below

commit 2842d8aa25ee16918421850f70fa74bc815ae6e8
Author: itholic <haejoon....@databricks.com>
AuthorDate: Sun Jan 29 16:18:12 2023 +0900

    [SPARK-42225][CONNECT] Add `SparkConnectIllegalArgumentException` to handle 
Spark Connect error precisely
    
    ### What changes were proposed in this pull request?
    
    This PR proposes to add `SparkConnectIllegalArgumentException`.
    
    ### Why are the changes needed?
    
    To handle Spark Connect error precisely by catching 
`IllegalArgumentException` before unexpectedly raise 
`SparkConnectGrpcException`.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Manually tested.
    
    Closes #39783 from itholic/SPARK-42225.
    
    Authored-by: itholic <haejoon....@databricks.com>
    Signed-off-by: Hyukjin Kwon <gurwls...@apache.org>
---
 python/docs/source/reference/pyspark.errors.rst | 1 +
 python/pyspark/errors/__init__.py               | 2 ++
 python/pyspark/errors/exceptions.py             | 6 ++++++
 python/pyspark/sql/connect/client.py            | 5 +++++
 4 files changed, 14 insertions(+)

diff --git a/python/docs/source/reference/pyspark.errors.rst 
b/python/docs/source/reference/pyspark.errors.rst
index a5e1d78fa62..1d54c6babe0 100644
--- a/python/docs/source/reference/pyspark.errors.rst
+++ b/python/docs/source/reference/pyspark.errors.rst
@@ -42,6 +42,7 @@ Classes
     SparkConnectGrpcException
     SparkConnectParseException
     SparkConnectTempTableAlreadyExistsException
+    SparkConnectIllegalArgumentException
 
 
 Methods
diff --git a/python/pyspark/errors/__init__.py 
b/python/pyspark/errors/__init__.py
index e747ed30247..7faa0768a24 100644
--- a/python/pyspark/errors/__init__.py
+++ b/python/pyspark/errors/__init__.py
@@ -35,6 +35,7 @@ from pyspark.errors.exceptions import (  # noqa: F401
     SparkConnectAnalysisException,
     SparkConnectParseException,
     SparkConnectTempTableAlreadyExistsException,
+    SparkConnectIllegalArgumentException,
 )
 
 
@@ -55,4 +56,5 @@ __all__ = [
     "SparkConnectAnalysisException",
     "SparkConnectParseException",
     "SparkConnectTempTableAlreadyExistsException",
+    "SparkConnectIllegalArgumentException",
 ]
diff --git a/python/pyspark/errors/exceptions.py 
b/python/pyspark/errors/exceptions.py
index 723cd9540d6..a799f4522de 100644
--- a/python/pyspark/errors/exceptions.py
+++ b/python/pyspark/errors/exceptions.py
@@ -371,3 +371,9 @@ class PySparkTypeError(PySparkException, TypeError):
     """
     Wrapper class for TypeError to support error classes.
     """
+
+
+class SparkConnectIllegalArgumentException(SparkConnectGrpcException):
+    """
+    Passed an illegal or inappropriate argument from Spark Connect server.
+    """
diff --git a/python/pyspark/sql/connect/client.py 
b/python/pyspark/sql/connect/client.py
index 7409a2a8231..efc970d6a4c 100644
--- a/python/pyspark/sql/connect/client.py
+++ b/python/pyspark/sql/connect/client.py
@@ -42,6 +42,7 @@ from pyspark.errors import (
     SparkConnectAnalysisException,
     SparkConnectParseException,
     SparkConnectTempTableAlreadyExistsException,
+    SparkConnectIllegalArgumentException,
 )
 from pyspark.sql.types import (
     DataType,
@@ -626,6 +627,10 @@ class SparkConnectClient(object):
                         raise SparkConnectTempTableAlreadyExistsException(
                             info.metadata["message"], 
plan=info.metadata["plan"]
                         ) from None
+                    elif reason == "java.lang.IllegalArgumentException":
+                        message = info.metadata["message"]
+                        message = message if message != "" else status.message
+                        raise SparkConnectIllegalArgumentException(message) 
from None
                     else:
                         raise SparkConnectGrpcException(
                             status.message, reason=info.reason


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to