]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Hide long tracebacks on connect
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 8 Oct 2021 01:25:46 +0000 (03:25 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 8 Oct 2021 01:25:46 +0000 (03:25 +0200)
Only hide tracebacks of errors coming from the database. They just come
from the database: seeing exactly where they explode inside psycopg is
not useful for the end user. Especially given the generator/waiting
interaction.

See https://github.com/psycopg/psycopg/issues/99 for an example of not
particularly helpful traceback (the message is the only useful bit).

psycopg/psycopg/connection.py
psycopg/psycopg/connection_async.py

index 3d9258dca598b52157a0c52651cc3126fb1e0436..aeca926685ff2db2024e26e8f2a48adb5d534238 100644 (file)
@@ -560,10 +560,14 @@ class Connection(BaseConnection[Row]):
         params = cls._get_connection_params(conninfo, **kwargs)
         conninfo = make_conninfo(**params)
 
-        rv = cls._wait_conn(
-            cls._connect_gen(conninfo, autocommit=autocommit),
-            timeout=params["connect_timeout"],
-        )
+        try:
+            rv = cls._wait_conn(
+                cls._connect_gen(conninfo, autocommit=autocommit),
+                timeout=params["connect_timeout"],
+            )
+        except e.Error as ex:
+            raise ex.with_traceback(None)
+
         if row_factory:
             rv.row_factory = row_factory
         if context:
index f291295991607850947f2b2217982378bdf989fa..69b8bee0b7087d719f4cf44430b22a8508fc3be2 100644 (file)
@@ -105,10 +105,14 @@ class AsyncConnection(BaseConnection[Row]):
         params = await cls._get_connection_params(conninfo, **kwargs)
         conninfo = make_conninfo(**params)
 
-        rv = await cls._wait_conn(
-            cls._connect_gen(conninfo, autocommit=autocommit),
-            timeout=params["connect_timeout"],
-        )
+        try:
+            rv = await cls._wait_conn(
+                cls._connect_gen(conninfo, autocommit=autocommit),
+                timeout=params["connect_timeout"],
+            )
+        except e.Error as ex:
+            raise ex.with_traceback(None)
+
         if row_factory:
             rv.row_factory = row_factory
         if context: