-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
merge 24.0 to dev #17942
Merged
Merged
merge 24.0 to dev #17942
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Fixes: ``` AttributeError: 'NoneType' object has no attribute 'values' File "galaxy/web/framework/decorators.py", line 346, in decorator rval = func(self, trans, *args, **kwargs) File "galaxy/webapps/galaxy/api/workflows.py", line 357, in workflow_dict ret_dict = self.workflow_contents_manager.workflow_to_dict( File "galaxy/managers/workflows.py", line 907, in workflow_to_dict wf_dict = self._workflow_to_dict_run(trans, stored, workflow=workflow, history=history or trans.history) File "galaxy/managers/workflows.py", line 1025, in _workflow_to_dict_run step_model["replacement_parameters"] = step.module.get_informal_replacement_parameters(step) File "galaxy/workflow/modules.py", line 2388, in get_informal_replacement_parameters for argument in pja.action_arguments.values(): ``` from https://sentry.galaxyproject.org/share/issue/954ebe7b658f401a8a8e40987d43a91d/
[24.0] Fix workflow run form for workflows with null rename PJA
metadata Fixes: ``` Message Uncaught exception in exposed API method: Stack Trace(most recent call first) TypeError: 'NoneType' object is not iterable File "galaxy/web/framework/decorators.py", line 346, in decorator rval = func(self, trans, *args, **kwargs) File "galaxy/webapps/galaxy/api/tools.py", line 247, in build return tool.to_json(trans, kwd.get("inputs", kwd), history=history) File "galaxy/tools/__init__.py", line 2509, in to_json populate_state(request_context, self.inputs, params.__dict__, state_inputs, state_errors) File "galaxy/tools/parameters/__init__.py", line 412, in populate_state _populate_state_legacy( File "galaxy/tools/parameters/__init__.py", line 525, in _populate_state_legacy state[input.name] = input.get_initial_value(request_context, context) File "galaxy/tools/parameters/basic.py", line 1107, in get_initial_value options = list(self.get_options(trans, other_values)) File "galaxy/tools/parameters/basic.py", line 960, in get_options return self.options.get_options(trans, other_values) File "galaxy/tools/parameters/dynamic_options.py", line 893, in get_options rval = filter.filter_options(rval, trans, other_values) File "galaxy/tools/parameters/dynamic_options.py", line 227, in filter_options for r in ref: ``` from https://sentry.galaxyproject.org/share/issue/ac3a350198604034aca07eaca3cc9cb8/ This happens if you have the following input section: ``` <param name="otu" type="data" format="mothur.list,mothur.shared" label="list or shared - OTU List of Shared"/> <param name="repfasta" type="data" format="fasta" optional="true" label="repfasta - rep.fasta" help="rep.fasta file generated by get.oturep"/> <param name="label" type="select" label="label - OTU Labels" optional="true" help="Select exactly one label. If none selected, first label in your list or shared file will be used"> <options> <filter type="data_meta" ref="otu" key="labels"/> </options> </param> ``` but the first input collection to mothur.list or mothur.shared dataset has no elements.
[24.0] Fix tool form building if select filters from unavailable dataset metadata
This reverts commit 061d4c3. Fixes: ``` Traceback (most recent call last): File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/jobs/handler.py", line 1083, in __monitor self.__monitor_step() File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/jobs/handler.py", line 1115, in __monitor_step self._check_jobs(session, jobs_to_check) File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/jobs/handler.py", line 1181, in _check_jobs self.__stop(job, session) File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/jobs/handler.py", line 1099, in __stop job.set_state(job.states.STOPPED) File "/home/runner/work/galaxy/galaxy/galaxy root/lib/galaxy/model/__init__.py", line 1703, in set_state self.state_history.append(JobStateHistory(self)) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 487, in __get__ return self.impl.get(state, dict_) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 959, in get value = self._fire_loader_callables(state, key, passive) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 995, in _fire_loader_callables return self.callable_(state, passive) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 912, in _load_for_state return self._emit_lazyload( File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 1022, in _emit_lazyload lazy_clause, params = self._generate_lazy_clause(state, passive) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/strategies.py", line 807, in _generate_lazy_clause value = mapper._get_state_attr_by_column( File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/mapper.py", line 3018, in _get_state_attr_by_column return state.manager[prop.key].impl.get(state, dict_, passive=passive) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 959, in get value = self._fire_loader_callables(state, key, passive) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/attributes.py", line 990, in _fire_loader_callables return state._load_expired(state, passive) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/state.py", line 712, in _load_expired self.manager.expired_attribute_loader(self, toload, passive) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/loading.py", line 1451, in load_scalar_attributes result = load_on_ident( File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/loading.py", line 407, in load_on_ident return load_on_pk_identity( File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/loading.py", line 530, in load_on_pk_identity session.execute( File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1716, in execute conn = self._connection_for_bind(bind) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1552, in _connection_for_bind TransactionalContext._trans_ctx_check(self) File "/home/runner/work/galaxy/galaxy/galaxy root/.venv/lib/python3.8/site-packages/sqlalchemy/engine/util.py", line 199, in _trans_ctx_check raise exc.InvalidRequestError( sqlalchemy.exc.InvalidRequestError: Can't operate on closed transaction inside context manager. Please complete the context manager before emitting further commands. ``` at the cost of larger transactions that are more likely to deadlock. Still likely a better tradeoff. Probably fixes test/integration/test_interactivetools_api.py::TestInteractiveToolsIntegration::test_multi_server_realtime_tool.
Fixes: ``` ExceptionGroup: unhandled errors in a TaskGroup File "starlette/_utils.py", line 87, in collapse_excgroups yield File "starlette/middleware/base.py", line 190, in __call__ async with anyio.create_task_group() as task_group: File "anyio/_backends/_asyncio.py", line 678, in __aexit__ raise BaseExceptionGroup( AttributeError: 'NoneType' object has no attribute 'replace' File "starlette/applications.py", line 123, in __call__ await self.middleware_stack(scope, receive, send) File "starlette/middleware/errors.py", line 186, in __call__ raise exc File "starlette/middleware/errors.py", line 164, in __call__ await self.app(scope, receive, _send) File "starlette_context/middleware/raw_middleware.py", line 92, in __call__ await self.app(scope, receive, send_wrapper) File "starlette/middleware/base.py", line 189, in __call__ with collapse_excgroups(): File "contextlib.py", line 155, in __exit__ self.gen.throw(typ, value, traceback) File "starlette/_utils.py", line 93, in collapse_excgroups raise exc File "starlette/middleware/base.py", line 191, in __call__ response = await self.dispatch_func(request, call_next) File "galaxy/webapps/galaxy/fast_app.py", line 108, in add_x_frame_options response = await call_next(request) File "starlette/middleware/base.py", line 165, in call_next raise app_exc File "starlette/middleware/base.py", line 151, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "starlette/middleware/exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "starlette/_exception_handler.py", line 64, in wrapped_app raise exc File "starlette/_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "starlette/routing.py", line 758, in __call__ await self.middleware_stack(scope, receive, send) File "starlette/routing.py", line 778, in app await route.handle(scope, receive, send) File "starlette/routing.py", line 299, in handle await self.app(scope, receive, send) File "starlette/routing.py", line 79, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "starlette/_exception_handler.py", line 64, in wrapped_app raise exc File "starlette/_exception_handler.py", line 53, in wrapped_app await app(scope, receive, sender) File "starlette/routing.py", line 74, in app response = await func(request) File "fastapi/routing.py", line 278, in app raw_response = await run_endpoint_function( File "fastapi/routing.py", line 193, in run_endpoint_function return await run_in_threadpool(dependant.call, **values) File "starlette/concurrency.py", line 42, in run_in_threadpool return await anyio.to_thread.run_sync(func, *args) File "anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "anyio/_backends/_asyncio.py", line 2144, in run_sync_in_worker_thread return await future File "anyio/_backends/_asyncio.py", line 851, in run result = context.run(func, *args) File "galaxy/webapps/galaxy/api/history_contents.py", line 465, in index items = self.service.index( File "galaxy/webapps/galaxy/services/history_contents.py", line 312, in index return self.__index_v2(trans, history_id, params, serialization_params, filter_query_params, accept) File "galaxy/webapps/galaxy/services/history_contents.py", line 992, in __index_v2 items = [ File "galaxy/webapps/galaxy/services/history_contents.py", line 993, in <listcomp> self._serialize_content_item( File "galaxy/webapps/galaxy/services/history_contents.py", line 1064, in _serialize_content_item rval = serializer.serialize_to_view( File "galaxy/managers/base.py", line 785, in serialize_to_view return self.serialize(item, all_keys, **context) File "galaxy/managers/hdas.py", line 614, in serialize return super().serialize(hda, keys, user=user, **context) File "galaxy/managers/datasets.py", line 770, in serialize serialized = super().serialize(dataset_assoc, keys, **context) File "galaxy/managers/base.py", line 698, in serialize returned[key] = self.serializers[key](item, key, **context) File "galaxy/managers/datasets.py", line 633, in <lambda> "peek": lambda item, key, **context: item.display_peek() if item.peek and item.peek != "no peek" else None, File "galaxy/model/__init__.py", line 4669, in display_peek return self.datatype.display_peek(self) File "galaxy/datatypes/qiime2.py", line 57, in display_peek table += [make_row(pair) for pair in self._peek(dataset, simple=True)] File "galaxy/datatypes/qiime2.py", line 57, in <listcomp> table += [make_row(pair) for pair in self._peek(dataset, simple=True)] File "galaxy/datatypes/qiime2.py", line 54, in make_row return f"<tr><th>{pair[0]}</th><td>{html.escape(pair[1])}</td></tr>" File "__init__.py", line 19, in escape s = s.replace("&", "&") # Must be done first! ```
Co-authored-by: Nicola Soranzo <nicola.soranzo@gmail.com>
…tError [24.0] Fix ``InvalidRequestError: Can't operate on closed transaction inside context manager. Please complete the context manager before emitting further commands.``
[24.0] Never fail dataset serialization if display_peek fails
[24.0] Drop left-over debug statement
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area/database
Galaxy's database or data access layer
area/datatypes
area/testing
area/tool-framework
area/workflows
merge
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
How to test the changes?
(Select all options that apply)
License