# HG changeset patch # User domruf # Date 1503005032 -7200 # 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 -r cddff7f0dd08 -r cbf524e4c1a3 kallithea/lib/utils.py --- 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):