diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-03-27 10:52:58 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-03-27 11:14:24 -0400 |
| commit | c0a224aba3d4e2a41f92a29f9d18c6cb9d09d61f (patch) | |
| tree | 4c737f68b3a9f2430f3d1c17af8c202eb6dd9a27 /lib/sqlalchemy/util | |
| parent | f214f4d4f46de24008c63f2e034329a64f510833 (diff) | |
| download | sqlalchemy-c0a224aba3d4e2a41f92a29f9d18c6cb9d09d61f.tar.gz | |
Add safe_reraise() + warnings only to Connection._autorollback
Added an exception handler that will warn for the "cause" exception on
Py2K when the "autorollback" feature of :class:`.Connection` itself
raises an exception. In Py3K, the two exceptions are naturally reported
by the interpreter as one occurring during the handling of the other.
This is continuing with the series of changes for rollback failure
handling that were last visited as part of :ticket:`2696` in 1.0.12.
Change-Id: I600ba455a14ebaea27c6189889181f97c632f179
Fixes: #3946
Diffstat (limited to 'lib/sqlalchemy/util')
| -rw-r--r-- | lib/sqlalchemy/util/langhelpers.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py index 41fed882d..9ca19f138 100644 --- a/lib/sqlalchemy/util/langhelpers.py +++ b/lib/sqlalchemy/util/langhelpers.py @@ -49,6 +49,11 @@ class safe_reraise(object): """ + __slots__ = ('warn_only', '_exc_info') + + def __init__(self, warn_only=False): + self.warn_only = warn_only + def __enter__(self): self._exc_info = sys.exc_info() @@ -57,7 +62,8 @@ class safe_reraise(object): if type_ is None: exc_type, exc_value, exc_tb = self._exc_info self._exc_info = None # remove potential circular references - compat.reraise(exc_type, exc_value, exc_tb) + if not self.warn_only: + compat.reraise(exc_type, exc_value, exc_tb) else: if not compat.py3k and self._exc_info and self._exc_info[1]: # emulate Py3K's behavior of telling us when an exception |
