From a847dbd3d5e312b13cfe8a90844c8f88d3aedc78 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 12 Jan 2018 12:35:04 +0100 Subject: [PATCH 1/5] Fix tool report submission --- .../tools/error_reports/plugins/sentry.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/tools/error_reports/plugins/sentry.py b/lib/galaxy/tools/error_reports/plugins/sentry.py index f6ad7710d20..4b7df39a79f 100644 --- a/lib/galaxy/tools/error_reports/plugins/sentry.py +++ b/lib/galaxy/tools/error_reports/plugins/sentry.py @@ -64,6 +64,17 @@ class SentryPlugin(ErrorPlugin): error_message = ERROR_TEMPLATE.format(**extra) # Update context with user information in a sentry-specific manner + + # Getting the url allows us to link to the dataset info page in case + # anything is missing from this report. + try: + url = web.url_for(controller="dataset", + action="show_params", + dataset_id=self.app.security.encode_id(dataset.id), + qualified=True) + except AttributeError: + # The above does not work when handlers are separate from the web handlers + url = None self.app.sentry_client.context.merge({ # User information here also places email links + allows seeing # a list of affected users in the tags/filtering. @@ -71,14 +82,8 @@ class SentryPlugin(ErrorPlugin): 'name': user.username, 'email': user.email, }, - # This allows us to link to the dataset info page in case - # anything is missing from this report. 'request': { - 'url': web.url_for( - controller="dataset", action="show_params", - dataset_id=self.app.security.encode_id(dataset.id), - qualified=True - ) + 'url': url } }) From 6bef1fcbaa1df5690658f7b14512d212c115a0e5 Mon Sep 17 00:00:00 2001 From: Martin Cech Date: Wed, 17 Jan 2018 15:50:06 -0500 Subject: [PATCH 2/5] remove an extra F from the folder ID --- templates/webapps/galaxy/history/display_structured.mako | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/webapps/galaxy/history/display_structured.mako b/templates/webapps/galaxy/history/display_structured.mako index b616cd3747d..4576d83bdbe 100644 --- a/templates/webapps/galaxy/history/display_structured.mako +++ b/templates/webapps/galaxy/history/display_structured.mako @@ -232,7 +232,7 @@ elif entity_name == "WorkflowInvocation": <% id = trans.security.encode_id( hda.id ) %> <% folder = hda.copied_from_library_dataset_dataset_association.library_dataset.folder - folder_id = 'F' + trans.security.encode_id( folder.id ) + folder_id = trans.security.encode_id( folder.id ) %>
From d94148ff7999e0ecee9b617c4daec24da28ea1a5 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 18 Jan 2018 15:04:41 +0100 Subject: [PATCH 3/5] Prevent reloading when data table is being modified Fixes https://github.com/galaxyproject/galaxy/issues/4783. --- lib/galaxy/tools/data_manager/manager.py | 8 ++++---- lib/galaxy/tools/toolbox/watcher.py | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/tools/data_manager/manager.py b/lib/galaxy/tools/data_manager/manager.py index 05d3a9b3e1b..1dfa973abed 100644 --- a/lib/galaxy/tools/data_manager/manager.py +++ b/lib/galaxy/tools/data_manager/manager.py @@ -317,10 +317,10 @@ class DataManager(object): self.process_move(data_table_name, name, output_ref_values[name].extra_files_path, **data_table_value) data_table_value[name] = self.process_value_translation(data_table_name, name, **data_table_value) data_table.add_entry(data_table_value, persist=True, entry_source=self) - send_control_task(self.data_managers.app, - 'reload_tool_data_tables', - noop_self=True, - kwargs={'table_name': data_table_name}) + send_control_task(self.data_managers.app, + 'reload_tool_data_tables', + noop_self=True, + kwargs={'table_name': data_table_name}) if self.undeclared_tables and data_tables_dict: # We handle the data move, by just moving all the data out of the extra files path # moving a directory and the target already exists, we move the contents instead diff --git a/lib/galaxy/tools/toolbox/watcher.py b/lib/galaxy/tools/toolbox/watcher.py index ffe1144b53e..23f8d2423ee 100644 --- a/lib/galaxy/tools/toolbox/watcher.py +++ b/lib/galaxy/tools/toolbox/watcher.py @@ -252,6 +252,10 @@ class LocFileEventHandler(FileSystemEventHandler): if self.loc_watcher.path_hash.get(path) == cur_hash: return else: + time.sleep(0.5) + if cur_hash != md5_hash_file(path): + # We're still modifying the file, it'll be picked up later + return self.loc_watcher.path_hash[path] = cur_hash self.loc_watcher.tool_data_tables.reload_tables(path=path) From 8c1807c2879950ef47ccd162b6a7eebc83bc892b Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 18 Jan 2018 15:17:08 +0100 Subject: [PATCH 4/5] Trigger reload for each modified data table In unindeted one level too much in the previous commit, which would only reload the last table (thanks @dannon). The alternative would be to reload all tables, but I think this is more efficient. --- lib/galaxy/tools/data_manager/manager.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/tools/data_manager/manager.py b/lib/galaxy/tools/data_manager/manager.py index 1dfa973abed..25f8b49f020 100644 --- a/lib/galaxy/tools/data_manager/manager.py +++ b/lib/galaxy/tools/data_manager/manager.py @@ -317,10 +317,10 @@ class DataManager(object): self.process_move(data_table_name, name, output_ref_values[name].extra_files_path, **data_table_value) data_table_value[name] = self.process_value_translation(data_table_name, name, **data_table_value) data_table.add_entry(data_table_value, persist=True, entry_source=self) - send_control_task(self.data_managers.app, - 'reload_tool_data_tables', - noop_self=True, - kwargs={'table_name': data_table_name}) + send_control_task(self.data_managers.app, + 'reload_tool_data_tables', + noop_self=True, + kwargs={'table_name': data_table_name}) if self.undeclared_tables and data_tables_dict: # We handle the data move, by just moving all the data out of the extra files path # moving a directory and the target already exists, we move the contents instead From 8f91ae0db9f0ebdc06e6e284fb2fb254db553181 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 18 Jan 2018 15:25:36 +0100 Subject: [PATCH 5/5] Reload tool data tables for 'undeclared_tables' Thanks @nsoranzo! --- lib/galaxy/tools/data_manager/manager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/tools/data_manager/manager.py b/lib/galaxy/tools/data_manager/manager.py index 25f8b49f020..0d6e8ea157d 100644 --- a/lib/galaxy/tools/data_manager/manager.py +++ b/lib/galaxy/tools/data_manager/manager.py @@ -338,9 +338,9 @@ class DataManager(object): if name in path_column_names: data_table_value[name] = os.path.abspath(os.path.join(self.data_managers.app.config.galaxy_data_manager_data_path, value)) data_table.add_entry(data_table_value, persist=True, entry_source=self) - send_control_task(self.data_managers.app, 'reload_tool_data_tables', - noop_self=True, - kwargs={'table_name': data_table_name}) + send_control_task(self.data_managers.app, 'reload_tool_data_tables', + noop_self=True, + kwargs={'table_name': data_table_name}) else: for data_table_name, data_table_values in data_tables_dict.items(): # tool returned extra data table entries, but data table was not declared in data manager