Changeset - cbf524e4c1a3
[Not reviewed]
default
0 1 0
domruf - 8 years ago 2017-08-17 23:23:52
dominikruf@gmail.com
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.
1 file changed with 3 insertions and 1 deletions:
0 comments (0 inline, 0 general)
kallithea/lib/utils.py
Show inline comments
 
@@ -372,16 +372,18 @@ def make_ui(read_from='file', path=None,
 
def set_app_settings(config):
 
    """
 
    Updates app config with new settings from database
 

	
 
    :param config:
 
    """
 
    try:
 
    hgsettings = Setting.get_app_settings()
 

	
 
    for k, v in hgsettings.items():
 
        config[k] = v
 
    finally:
 
        meta.Session.remove()
 

	
 

	
 
def set_vcs_config(config):
 
    """
 
    Patch VCS config with some Kallithea specific stuff
 

	
0 comments (0 inline, 0 general)