Galaxy Timeout Error

Bug #1064911 reported by Simon Wagstaff
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Bio-Linux
Fix Committed
High
Unassigned

Bug Description

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

Revision history for this message
Tim Booth (tbooth) wrote :

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.

Tim Booth (tbooth)
Changed in bio-linux:
importance: Undecided → High
status: New → Fix Committed
Revision history for this message
Tim Booth (tbooth) wrote :

Tested patch, but it seems to stop Galaxy starting with the default SQLite driver. Maybe this patch needs to be packaged along with the PostgreSQL option instead.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.