From 9aa02339e730988cc1174103e3091690f3c8a42d Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 29 Mar 2017 15:22:03 -0700 Subject: [PATCH 1/2] Fix for direct message routing using a 'real' exchange like rabbitmq -- this worked with local/database connections already, if accidentally. I want to do more refactoring of how these are configured, but am deferring that for now as it's not a priority. --- lib/galaxy/queue_worker.py | 4 ++-- lib/galaxy/queues.py | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/queue_worker.py b/lib/galaxy/queue_worker.py index 0ca7b928d77..583cab1d831 100644 --- a/lib/galaxy/queue_worker.py +++ b/lib/galaxy/queue_worker.py @@ -24,7 +24,7 @@ def send_local_control_task(app, task, kwargs={}): This sends a message to the process-local control worker, which is useful for one-time asynchronous tasks like recalculating user disk usage. """ - log.info("Queuing async task %s." % task) + log.info("Queuing async task %s for %s." % (task, app.config.server_name)) payload = {'task': task, 'kwargs': kwargs} try: @@ -33,7 +33,7 @@ def send_local_control_task(app, task, kwargs={}): producer.publish(payload, exchange=galaxy.queues.galaxy_exchange, declare=[galaxy.queues.galaxy_exchange] + [galaxy.queues.control_queue_from_config(app.config)], - routing_key='control') + routing_key='control.%s' % app.config.server_name) except Exception: log.exception("Error queueing async task: %s." % payload) diff --git a/lib/galaxy/queues.py b/lib/galaxy/queues.py index 150c4163e64..18bf9f86af4 100644 --- a/lib/galaxy/queues.py +++ b/lib/galaxy/queues.py @@ -31,7 +31,9 @@ def control_queue_from_config(config): Returns a Queue instance with the correct name and routing key for this galaxy process's config """ - return Queue("control.%s" % config.server_name, galaxy_exchange, routing_key='control') + return Queue("control.%s" % config.server_name, + galaxy_exchange, + routing_key='control.%s' % config.server_name) def connection_from_config(config): From cda2b32ebeb9a02c44377ded8b1727d3bd2a394d Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Sat, 8 Apr 2017 14:32:21 +0200 Subject: [PATCH 2/2] Fix Instance is not bound to a Session by refreshing the tool_version_cache, just like we do when we reload the toolbox. --- lib/galaxy/queue_worker.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/galaxy/queue_worker.py b/lib/galaxy/queue_worker.py index 0ca7b928d77..780681a83c5 100644 --- a/lib/galaxy/queue_worker.py +++ b/lib/galaxy/queue_worker.py @@ -118,12 +118,14 @@ def _get_new_toolbox(app): def reload_data_managers(app, **kwargs): from galaxy.tools.data_manager.manager import DataManagers + from galaxy.tools.toolbox.lineages.tool_shed import ToolVersionCache log.debug("Executing data managers reload on '%s'", app.config.server_name) app._configure_tool_data_tables(from_shed_config=False) reload_tool_data_tables(app) reload_count = app.data_managers._reload_count app.data_managers = DataManagers(app, conf_watchers=app.data_managers.conf_watchers) app.data_managers._reload_count = reload_count + 1 + app.tool_version_cache = ToolVersionCache(app) def reload_display_application(app, **kwargs):