Skip to content

Commit

Permalink
Don't attempt to download purged datasets
Browse files Browse the repository at this point in the history
Fixes
https://sentry.galaxyproject.org/share/issue/cde32ad8b3cc4d58a519743a90e0d9a3/:
```
FileNotFoundError: [Errno 2] No such file or directory: ''
  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 109, 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 646, in download_dataset_collection
    return self._download_collection(trans, id)
  File "galaxy/webapps/galaxy/api/history_contents.py", line 1036, in _download_collection
    archive = self.service.get_dataset_collection_archive_for_download(trans, id)
  File "galaxy/webapps/galaxy/services/history_contents.py", line 479, in get_dataset_collection_archive_for_download
    return self.__stream_dataset_collection(trans, dataset_collection_instance)
  File "galaxy/webapps/galaxy/services/history_contents.py", line 498, in __stream_dataset_collection
    archive = hdcas.stream_dataset_collection(
  File "galaxy/managers/hdcas.py", line 39, in stream_dataset_collection
    write_dataset_collection(dataset_collection_instance, archive)
  File "galaxy/managers/hdcas.py", line 51, in write_dataset_collection
    archive.write(file_path, relpath)
  File "galaxy/util/zipstream.py", line 82, in write
    self.add_path(path, archive_name or os.path.basename(path))
  File "galaxy/util/zipstream.py", line 52, in add_path
    size = int(os.stat(path).st_size)
```
  • Loading branch information
mvdbeek committed May 31, 2024
1 parent a965a8c commit 7339d96
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion lib/galaxy/managers/hdcas.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def write_dataset_collection(dataset_collection_instance, archive):
raise RequestParameterInvalidException("Attempt to write dataset collection that has not been populated yet")
names, hdas = get_hda_and_element_identifiers(dataset_collection_instance)
for name, hda in zip(names, hdas):
if hda.state != hda.states.OK:
if hda.state != hda.states.OK or hda.purged or hda.dataset.purged:
continue
for file_path, relpath in hda.datatype.to_archive(dataset=hda, name=name):
archive.write(file_path, relpath)
Expand Down

0 comments on commit 7339d96

Please sign in to comment.