# HG changeset patch # User domruf # Date 2017-08-17 23:23:52 # Node ID cbf524e4c1a3819decf001d566e1468fc3f318f7 # Parent cddff7f0dd088d999d888f6269bee5860d4c41fa 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. diff --git a/kallithea/lib/utils.py b/kallithea/lib/utils.py --- a/kallithea/lib/utils.py +++ b/kallithea/lib/utils.py @@ -375,10 +375,12 @@ def set_app_settings(config): :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):