From a021f910c8841e15d2926f07ee14311a0cfed8df Mon Sep 17 00:00:00 2001 From: Min RK Date: Fri, 20 Apr 2018 16:02:29 +0200 Subject: [PATCH] expose expire_on_commit option conservative deployments may set c.JupyterHub.db_kwargs['expire_on_commit'] = True as an escape if the optimization is causing problems. --- jupyterhub/orm.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jupyterhub/orm.py b/jupyterhub/orm.py index 38ba6522..262ccb54 100644 --- a/jupyterhub/orm.py +++ b/jupyterhub/orm.py @@ -621,7 +621,10 @@ def check_db_revision(engine): )) -def new_session_factory(url="sqlite:///:memory:", reset=False, **kwargs): +def new_session_factory(url="sqlite:///:memory:", + reset=False, + expire_on_commit=False, + **kwargs): """Create a new session at url""" if url.startswith('sqlite'): kwargs.setdefault('connect_args', {'check_same_thread': False}) @@ -648,5 +651,7 @@ def new_session_factory(url="sqlite:///:memory:", reset=False, **kwargs): # SQLAlchemy to expire objects after commiting - we don't expect # concurrent runs of the hub talking to the same db. Turning # this off gives us a major performance boost - session_factory = sessionmaker(bind=engine, expire_on_commit=False) + session_factory = sessionmaker(bind=engine, + expire_on_commit=expire_on_commit, + ) return session_factory