-
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
[24.0] Never fail dataset serialization if display_peek fails #17937
Merged
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: ``` 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! ```
nsoranzo
reviewed
Apr 8, 2024
Co-authored-by: Nicola Soranzo <[email protected]>
martenson
approved these changes
Apr 8, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Also fix qiime2 specifically and don't set_peek in display_peek method.
How to test the changes?
(Select all options that apply)
License