diff --git a/hook/hook.wsgi b/hook/hook.wsgi index d0828e64e9984894396e3cdfa6a3dae2ccb90336..36ea076d0dbd5dc9b635f28da28972e34ebd757d 100644 --- a/hook/hook.wsgi +++ b/hook/hook.wsgi @@ -38,6 +38,15 @@ def db_query(query, args=()): db_connect() db.execute(query, args) +def db_reset(): + # At the end of every request, we have to close the implicitly opened + # transaction. Otherwise we end up with serving stale data. + if db_connection is not None: + try: + db_connection.rollback() + except: + pass + ### Utilities ### def parse_time(iso_time): @@ -279,3 +288,5 @@ def application(env, start_response): except Exception as exc: app.log(traceback.print_exception(etype=None, value=exc, tb=exc.__traceback__)) return app.http_error(500, "Internal server error") + finally: + db_reset()