Mercurial > kallithea
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):