From 9007ab4c5ec2900e4a70787c47aa3b1ed2612b07 Mon Sep 17 00:00:00 2001 From: Tim Utegenov Date: Mon, 15 Dec 2025 16:49:14 -0800 Subject: [PATCH 1/2] Improve the error message when User Default Credentials are not provided --- google/cloud/dataproc_spark_connect/session.py | 10 ++++++++++ tests/unit/test_session.py | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/google/cloud/dataproc_spark_connect/session.py b/google/cloud/dataproc_spark_connect/session.py index 2fd2211..9ea051e 100644 --- a/google/cloud/dataproc_spark_connect/session.py +++ b/google/cloud/dataproc_spark_connect/session.py @@ -39,6 +39,7 @@ PermissionDenied, ) from google.api_core.future.polling import POLLING_PREDICATE +from google.auth.exceptions import DefaultCredentialsError from google.cloud.dataproc_spark_connect.client import DataprocChannelBuilder from google.cloud.dataproc_spark_connect.exceptions import DataprocSparkConnectException from google.cloud.dataproc_spark_connect.pypi_artifacts import PyPiArtifacts @@ -456,6 +457,15 @@ def create_session_pbar(): raise DataprocSparkConnectException( f"Error while creating Dataproc Session: {e.message}" ) + except DefaultCredentialsError as e: + stop_create_session_pbar_event.set() + if create_session_pbar_thread.is_alive(): + create_session_pbar_thread.join() + DataprocSparkSession._active_s8s_session_id = None + DataprocSparkSession._active_session_uses_custom_id = False + raise DataprocSparkConnectException( + f"Error while creating Dataproc Session: {e}" + ) except Exception as e: stop_create_session_pbar_event.set() if create_session_pbar_thread.is_alive(): diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py index 703276f..6222f47 100644 --- a/tests/unit/test_session.py +++ b/tests/unit/test_session.py @@ -1487,6 +1487,15 @@ def test_create_session_without_location(self): except DataprocSparkConnectException as e: self.assertIn("location is not set", str(e)) + def test_create_session_without_application_default_credentials(self): + """Tests that an exception is raised when application default credentials is not provided.""" + os.environ.clear() + try: + DataprocSparkSession.builder.location("test-region").projectId( + "test-project" + ).getOrCreate() + except DataprocSparkConnectException as e: + self.assertIn("Your default credentials were not found", str(e)) class DataprocSparkConnectClientTest(unittest.TestCase): From 9348464a8bc9e067b2b8b59d6e4b0ecdc2890ea0 Mon Sep 17 00:00:00 2001 From: Tim Utegenov Date: Mon, 15 Dec 2025 16:49:14 -0800 Subject: [PATCH 2/2] Improve the error message when User Default Credentials are not provided --- google/cloud/dataproc_spark_connect/session.py | 10 ++++++++++ tests/unit/test_session.py | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/google/cloud/dataproc_spark_connect/session.py b/google/cloud/dataproc_spark_connect/session.py index 2fd2211..9ea051e 100644 --- a/google/cloud/dataproc_spark_connect/session.py +++ b/google/cloud/dataproc_spark_connect/session.py @@ -39,6 +39,7 @@ PermissionDenied, ) from google.api_core.future.polling import POLLING_PREDICATE +from google.auth.exceptions import DefaultCredentialsError from google.cloud.dataproc_spark_connect.client import DataprocChannelBuilder from google.cloud.dataproc_spark_connect.exceptions import DataprocSparkConnectException from google.cloud.dataproc_spark_connect.pypi_artifacts import PyPiArtifacts @@ -456,6 +457,15 @@ def create_session_pbar(): raise DataprocSparkConnectException( f"Error while creating Dataproc Session: {e.message}" ) + except DefaultCredentialsError as e: + stop_create_session_pbar_event.set() + if create_session_pbar_thread.is_alive(): + create_session_pbar_thread.join() + DataprocSparkSession._active_s8s_session_id = None + DataprocSparkSession._active_session_uses_custom_id = False + raise DataprocSparkConnectException( + f"Error while creating Dataproc Session: {e}" + ) except Exception as e: stop_create_session_pbar_event.set() if create_session_pbar_thread.is_alive(): diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py index 703276f..623253b 100644 --- a/tests/unit/test_session.py +++ b/tests/unit/test_session.py @@ -1487,6 +1487,16 @@ def test_create_session_without_location(self): except DataprocSparkConnectException as e: self.assertIn("location is not set", str(e)) + def test_create_session_without_application_default_credentials(self): + """Tests that an exception is raised when application default credentials is not provided.""" + os.environ.clear() + try: + DataprocSparkSession.builder.location("test-region").projectId( + "test-project" + ).getOrCreate() + except DataprocSparkConnectException as e: + self.assertIn("Your default credentials were not found", str(e)) + class DataprocSparkConnectClientTest(unittest.TestCase):