From d6bf6fc2b2f8c14ddfad1e1b4e44b0b006333682 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 8 Apr 2015 11:50:34 -0400 Subject: [PATCH 1/3] Potential fix for recent uwsgi toolshed database issues. In any event, this current pool disposal is definitely broken (and hidden from view due to blanket passing except) in the current implementation. --- lib/galaxy/webapps/tool_shed/buildapp.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/webapps/tool_shed/buildapp.py b/lib/galaxy/webapps/tool_shed/buildapp.py index 6b63eb276f4..ce26b0cf5e9 100644 --- a/lib/galaxy/webapps/tool_shed/buildapp.py +++ b/lib/galaxy/webapps/tool_shed/buildapp.py @@ -153,9 +153,9 @@ def app_factory( global_conf, **kwargs ): webapp = wrap_in_static( webapp, global_conf, **kwargs ) # Close any pooled database connections before forking try: - galaxy.webapps.tool_shed.model.mapping.metadata.engine.connection_provider._pool.dispose() + galaxy.webapps.tool_shed.model.mapping.metadata.bind.dispose() except: - pass + log.exception("Unable to dispose of pooled tool_shed model database connections.") # Return return webapp From d403c43123b921f28a463ecbb28ccae2f82452c9 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 8 Apr 2015 11:53:32 -0400 Subject: [PATCH 2/3] Similar fix as the previous -- Galaxy wasn't disposing of pooled connections prior to returning webapp and (potential) forking. --- lib/galaxy/webapps/galaxy/buildapp.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/buildapp.py b/lib/galaxy/webapps/galaxy/buildapp.py index d7492408b52..4c57821e0f5 100644 --- a/lib/galaxy/webapps/galaxy/buildapp.py +++ b/lib/galaxy/webapps/galaxy/buildapp.py @@ -106,13 +106,13 @@ def app_factory( global_conf, **kwargs ): pack_scripts() # Close any pooled database connections before forking try: - galaxy.model.mapping.metadata.engine.connection_provider._pool.dispose() + galaxy.model.mapping.metadata.bind.dispose() except: - pass + log.exception("Unable to dispose of pooled galaxy model database connections.") try: - galaxy.model.tool_shed_install.mapping.metadata.engine.connection_provider._pool.dispose() + galaxy.model.tool_shed_install.mapping.metadata.bind.dispose() except: - pass + log.exception("Unable to dispose of pooled toolshed install model database connections.") if not app.config.is_uwsgi: postfork_setup() From 3ac516291cc8bd9604d8a1053c3bd6bec3968229 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 8 Apr 2015 13:46:55 -0400 Subject: [PATCH 3/3] Another pool disposal fix, for reports. --- lib/galaxy/webapps/reports/buildapp.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/webapps/reports/buildapp.py b/lib/galaxy/webapps/reports/buildapp.py index b5fc37284b8..1b1965706c6 100644 --- a/lib/galaxy/webapps/reports/buildapp.py +++ b/lib/galaxy/webapps/reports/buildapp.py @@ -70,12 +70,13 @@ def app_factory( global_conf, **kwargs ): webapp = wrap_in_static( webapp, global_conf, **kwargs ) # Close any pooled database connections before forking try: - galaxy.model.mapping.metadata.engine.connection_provider._pool.dispose() + galaxy.model.mapping.metadata.bind.dispose() except: - pass + log.exception("Unable to dispose of pooled galaxy model database connections.") # Return return webapp + def wrap_in_middleware( app, global_conf, **local_conf ): """Based on the configuration wrap `app` in a set of common and useful middleware.""" # Merge the global and local configurations