changeset 6858:cbf524e4c1a3

utils: remove Session after we are done using it in set_app_settings When the Kallithea WSGI application or celeryd is started, TurboGears app_config.make_base_app calls Kallithea app_cfg.setup_configuration which runs utils.set_app_settings. That function will read settings from the database and store them in the global config. It uses a database session which is created on demand, but this session was not dismissed but left around for the next thing that asked for a database session. MySQL will by default close connections after 1 hour, so when celery tried to run a task after 1 hour of inactivity, it could fail because of the closed connection. utils.set_app_settings must thus remove the Session after use, just like auth.set_available_permissions do. This will thus fix for example some MySQL connection problems seen with Celery.
author domruf <dominikruf@gmail.com>
date Thu, 17 Aug 2017 23:23:52 +0200
parents cddff7f0dd08
children b9e10022ad4e
files kallithea/lib/utils.py
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/lib/utils.py	Mon Aug 14 22:34:28 2017 +0200
+++ b/kallithea/lib/utils.py	Thu Aug 17 23:23:52 2017 +0200
@@ -375,10 +375,12 @@
 
     :param config:
     """
-    hgsettings = Setting.get_app_settings()
-
-    for k, v in hgsettings.items():
-        config[k] = v
+    try:
+        hgsettings = Setting.get_app_settings()
+        for k, v in hgsettings.items():
+            config[k] = v
+    finally:
+        meta.Session.remove()
 
 
 def set_vcs_config(config):