Error below when submitting large workflows to Biolinux Galaxy
Workaround: edit the universe.wsgi.ini file as follows. There is no rationale for these numbers - just a test to check it works.
Database_engine option pool size = 5 to 50
Database engine option max overflow =10 to 100
Perhaps tailor a Bl-7 galaxy setup script to increase this value appropriately.
Error Traceback:
View as: Interactive | Text | XML (full)
⇝ TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30
URL: http://138.253.24.55:8080/workflow/run?id=0a248a1f62a0cc04
File '/usr/lib/galaxy-server/eggs/WebError-0.8a-py2.6.egg/weberror/evalexception/middleware.py', line 364 in respond
app_iter = self.application(environ, detect_start_response)
File '/usr/lib/galaxy-server/eggs/Paste-1.6-py2.6.egg/paste/debug/prints.py', line 98 in __call__
environ, self.app)
File '/usr/lib/galaxy-server/eggs/Paste-1.6-py2.6.egg/paste/wsgilib.py', line 539 in intercept_output
app_iter = application(environ, replacement_start_response)
File '/usr/lib/galaxy-server/eggs/Paste-1.6-py2.6.egg/paste/recursive.py', line 80 in __call__
return self.application(environ, start_response)
File '/usr/lib/galaxy-server/eggs/Paste-1.6-py2.6.egg/paste/httpexceptions.py', line 632 in __call__
return self.application(environ, start_response)
File '/usr/lib/galaxy-server/lib/galaxy/web/framework/base.py', line 160 in __call__
body = method( trans, **kwargs )
File '/usr/lib/galaxy-server/lib/galaxy/web/controllers/workflow.py', line 1516 in run
job, out_data = tool.execute( trans, step.state.inputs, history=new_history)
File '/usr/lib/galaxy-server/lib/galaxy/tools/__init__.py', line 1661 in execute
return self.tool_action.execute( self, trans, incoming=incoming, set_output_hid=set_output_hid, history=history, **kwargs )
File '/usr/lib/galaxy-server/lib/galaxy/tools/actions/__init__.py', line 298 in execute
trans.app.security_agent.set_all_dataset_permissions( data.dataset, output_permissions )
File '/usr/lib/galaxy-server/lib/galaxy/security/__init__.py', line 501 in set_all_dataset_permissions
for dp in dataset.actions:
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/attributes.py', line 158 in __get__
return self.impl.get(instance_state(instance), instance_dict(instance))
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/attributes.py', line 377 in get
value = callable_()
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/strategies.py', line 587 in __call__
result = q.all()
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/query.py', line 1267 in all
return list(self)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/query.py', line 1361 in __iter__
return self._execute_and_instances(context)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/query.py', line 1364 in _execute_and_instances
result = self.session.execute(querycontext.statement, params=self._params, mapper=self._mapper_zero_or_none())
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/session.py', line 755 in execute
clause, params or {})
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/engine/base.py', line 824 in execute
return Connection.executors[c](self, object, multiparams, params)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/engine/base.py', line 872 in _execute_clauseelement
parameters=params
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/engine/base.py', line 938 in __create_execution_context
return dialect.execution_ctx_cls(dialect, connection=self, **kwargs)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/engine/default.py', line 167 in __init__
self.compiled_parameters = [compiled.construct_params(m) for m in parameters]
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/sql/compiler.py', line 243 in construct_params
pd[self.bind_names[bindparam]] = bindparam.value()
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/strategies.py', line 411 in <lambda>
bindparam.value = lambda: mapper._get_committed_attr_by_column(o, bind_to_col[bindparam.key])
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/mapper.py', line 1117 in _get_committed_attr_by_column
return self._get_committed_state_attr_by_column(state, column)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/mapper.py', line 1120 in _get_committed_state_attr_by_column
return self._get_col_to_prop(column).getcommitted(state, column, passive=passive)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/properties.py', line 102 in getcommitted
return state.get_impl(self.key).get_committed_value(state, state.dict, passive=passive)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/attributes.py', line 406 in get_committed_value
return self.get(state, dict_, passive=passive)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/attributes.py', line 377 in get
value = callable_()
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/state.py', line 185 in __call__
attr.impl.key in unmodified
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/mapper.py', line 1878 in _load_scalar_attributes
result = session.query(mapper)._get(identity_key, refresh_state=state, only_load_props=attribute_names)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/query.py', line 1500 in _get
return q.all()[0]
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/query.py', line 1267 in all
return list(self)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/query.py', line 1361 in __iter__
return self._execute_and_instances(context)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/query.py', line 1364 in _execute_and_instances
result = self.session.execute(querycontext.statement, params=self._params, mapper=self._mapper_zero_or_none())
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/session.py', line 754 in execute
return self.__connection(engine, close_with_result=True).execute(
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/orm/session.py', line 721 in __connection
return engine.contextual_connect(**kwargs)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/engine/base.py', line 1229 in contextual_connect
return self.Connection(self, self.pool.connect(), close_with_result=close_with_result, **kwargs)
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/pool.py', line 142 in connect
return _ConnectionFairy(self).checkout()
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/pool.py', line 304 in __init__
rec = self._connection_record = pool.get()
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/pool.py', line 161 in get
return self.do_get()
File '/usr/lib/galaxy-server/eggs/SQLAlchemy-0.5.6_dev_r6498-py2.6.egg/sqlalchemy/pool.py', line 628 in do_get
raise exc.TimeoutError("QueuePool limit of size %d overflow %d reached, connection timed out, timeout %d" % (self.size(), self.overflow(), self._timeout))
TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30
TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30
Setting the values above in the package. Maybe the numbers are too big but then it's certainly no good if the system refuses to run the workflow at all, and I can't see what major problems you'd get with having these high.
Patch in next package release.