add explicit db rollback

add context manager/decorator for db rollback

add db rollback in top level prepare method

Co-authored-by: Sarath Babu <sbreached@gmail.com>
This commit is contained in:
SHAHN3
2021-08-03 17:32:34 -04:00
committed by Min RK
parent 9d96997eae
commit 044fb23a70
2 changed files with 27 additions and 1 deletions

View File

@@ -85,6 +85,9 @@ class BaseHandler(RequestHandler):
self.expanded_scopes = set()
try:
await self.get_current_user()
except SQLAlchemyError:
self.log.exception("Rolling back session due to database error")
self.db.rollback()
except Exception:
self.log.exception("Failed to get current user")
self._jupyterhub_user = None
@@ -411,7 +414,9 @@ class BaseHandler(RequestHandler):
if user and isinstance(user, User):
user = await self.refresh_auth(user)
self._jupyterhub_user = user
except Exception:
except Exception as e:
if isinstance(e, SQLAlchemyError):
raise SQLAlchemyError()
# don't let errors here raise more than once
self._jupyterhub_user = None
self.log.exception("Error getting current user")