tree falls on broken external HDF5 links
It seems that when I have HDF5 files with external links that can no longer be reached, Tiled throws an error. Perhaps the better way would be to quietly accept a broken link and continue to read whatever is there.
to reproduce:
On the command line, I have started the server:
tiled serve directory --public ~/Documents/BAM/Measurements/newMouseTest/Measurements/SAXS002/data/2025/20250125/autoproc
In the Jupyter notebook, I then have the following lines:
from tiled.client import from_uri
# Connect to the Tiled server
client = from_uri("http://localhost:8000")
from tiled.utils import tree
tree(client)
This gives me the following output in the notebook:
├── MOUSE_20250125_2_164_processed_250129_182256
---------------------------------------------------------------------------
HTTPStatusError Traceback (most recent call last)
Cell In[35], [line 2](vscode-notebook-cell:?execution_count=35&line=2)
[1](vscode-notebook-cell:?execution_count=35&line=1) from tiled.utils import tree
----> [2](vscode-notebook-cell:?execution_count=35&line=2) tree(client)
File ~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:401, in tree(tree, max_lines)
[399](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:399) print("<Empty>")
[400](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:400) return
--> [401](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:401) for counter, line in enumerate(gen_tree(tree), start=1):
[402](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:402) if (max_lines is not None) and (counter > max_lines):
[403](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:403) print(
[404](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:404) f"<Output truncated at {max_lines} lines. "
[405](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:405) "Adjust tree's max_lines parameter to see more.>"
[406](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:406) )
File ~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:361, in gen_tree(tree, nodes, last)
[359](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:359) last_index = len(fast_tree) - 1
[360](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:360) for index, node in enumerate(fast_tree):
--> [361](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:361) yield from gen_tree(fast_tree, [node], [index == last_index])
[362](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:362) else:
[363](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:363) value = fast_tree[nodes[-1]]
File ~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:367, in gen_tree(tree, nodes, last)
[365](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/utils.py:365) yield _line(nodes, last)
...
[61](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/client/utils.py:61) )
---> [62](https://file+.vscode-resource.vscode-cdn.net/Users/bpauw/Code/Julias_camonitor_log/~/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/client/utils.py:62) raise httpx.HTTPStatusError(message, request=request, response=response)
HTTPStatusError: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_164_processed_250129_182256?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID c61dee2f554fc2fb.
And the following in the shell:
[d03c8f792a002f1d] 127.0.0.1:56801 (admin) - "GET /api/v1/metadata/?fields=structure_family&fields=structure&fields=specs HTTP/1.1" 304 Not Modified
[dd245c2e47d41de7] 127.0.0.1:56802 (admin) - "GET /api/v1/metadata/?fields=structure_family&fields=structure&fields=specs&fields=metadata&fields=sorting&fields=count HTTP/1.1" 304 Not Modified
[0a126aea72e74c3b] 127.0.0.1:56800 (admin) - "GET /api/v1/search/?page[offset]=0&page[limit]=10&fields= HTTP/1.1" 304 Not Modified
[f942f5ef4da1f6d0] 127.0.0.1:56801 (admin) - "GET /api/v1/search/?page[offset]=0&page[limit]=10&fields= HTTP/1.1" 304 Not Modified
[40a531958e8c8e12] 127.0.0.1:56802 (admin) - "GET /api/v1/search/?page[offset]=0&page[limit]=10&fields= HTTP/1.1" 304 Not Modified
[51a88c8624c8d25f] 127.0.0.1:56807 (public) - "GET /api/v1/search/?fields=&sort= HTTP/1.1" 200 OK
[c520edb601e4ede1] 127.0.0.1:56807 (public) - "GET /api/v1/search/?fields=&sort= HTTP/1.1" 200 OK
[53fad7aa6d8feb52] 127.0.0.1:56807 (public) - "GET /api/v1/search/?fields=&sort= HTTP/1.1" 200 OK
[3eeac0e820a7e3de] 127.0.0.1:56807 (public) - "GET /api/v1/metadata/MOUSE_20250125_2_164_processed_250129_182256 HTTP/1.1" 200 OK
[7acfce78f4015989] 127.0.0.1:56807 (public) - "GET /api/v1/search/MOUSE_20250125_2_164_processed_250129_182256?fields=&sort= HTTP/1.1" 200 OK
[c61dee2f554fc2fb] 127.0.0.1:56807 (public) - "GET /api/v1/search/MOUSE_20250125_2_164_processed_250129_182256?page%5Boffset%5D=0&sort= HTTP/1.1" 500 Internal Server Error
[c61dee2f554fc2fb] ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
yield
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 182, in __call__
recv_stream.close()
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 767, in __aexit__
raise BaseExceptionGroup(
exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/fastapi/applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/applications.py", line 112, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 187, in __call__
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 165, in __call__
await self.app(scope, receive, _send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/asgi_correlation_id/middleware.py", line 90, in __call__
await self.app(scope, receive, handle_outgoing_request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 182, in __call__
recv_stream.close()
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/app.py", line 879, in current_principal_logging_filter
response = await call_next(request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 182, in __call__
recv_stream.close()
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/app.py", line 860, in capture_metrics_prometheus
response = await call_next(request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 182, in __call__
recv_stream.close()
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/app.py", line 815, in capture_metrics
response = await call_next(request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 182, in __call__
recv_stream.close()
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/app.py", line 761, in set_cookies
response = await call_next(request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 182, in __call__
recv_stream.close()
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/app.py", line 753, in client_compatibility_check
response = await call_next(request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 182, in __call__
recv_stream.close()
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/app.py", line 714, in double_submit_cookie_csrf_protection
response = await call_next(request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/compression.py", line 27, in __call__
await responder(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/compression.py", line 48, in __call__
await self.app(scope, receive, self.send_compressed)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/cors.py", line 85, in __call__
await self.app(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/starlette/routing.py", line 73, in app
response = await f(request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 301, in app
raw_response = await run_endpoint_function(
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
return await dependant.call(**values)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/router.py", line 290, in route_with_sig
return await route(*args, **kwargs)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/router.py", line 197, in search
resource, metadata_stale_at, must_revalidate = await construct_entries_response(
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/core.py", line 231, in construct_entries_response
resource = await construct_resource(
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/core.py", line 464, in construct_resource
contents[key] = await construct_resource(
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/core.py", line 464, in construct_resource
contents[key] = await construct_resource(
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/server/core.py", line 456, in construct_resource
for key, adapter in entry.items():
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/iterviews.py", line 112, in __iter__
yield from self._items_slice(0, None, 1)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/adapters/hdf5.py", line 255, in _items_slice
items = [(key, self[key]) for key in list(self)]
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/adapters/hdf5.py", line 255, in <listcomp>
items = [(key, self[key]) for key in list(self)]
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/tiled/adapters/hdf5.py", line 154, in __getitem__
value = self._file[key]
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.9/site-packages/h5py/_hl/group.py", line 357, in __getitem__
oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5o.pyx", line 257, in h5py.h5o.open
KeyError: "Unable to open object (unable to open external file, external link file name = 'beam_profile/eiger_511_master.h5')"
Hello @toqduj! I agree. How's this branch work for you?
https://github.com/bluesky/tiled/pull/889
Thanks for looking into this... I installed it using pip install --upgrade git+https://github.com/danielballan/tiled.git
But I must be doing something wrong with the install, I get the following importerror, that does not resolve with an upgrade of dask....:
│ /Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/tiled/server/etag.py:1 in <module> │
│ │
│ ❱ 1 from dask.base import normalize_object, normalize_token │
│ 2 from dask.base import tokenize as dask_tokenize │
│ 3 │
│ 4 │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
ImportError: cannot import name 'normalize_object' from 'dask.base'
(/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/dask/base.py)
Dask version seems to be:
{
"date": "2025-02-13T17:00:59-0600",
"dirty": false,
"error": null,
"full-revisionid": "4d71629d1f22ced0dd780919f22e70a642ec6753",
"version": "2025.2.0"
}
This looks like a very recent backward-incompatible change in dask. Recently there have been a wave of changes to dask APIs that I would have considered "public" based on their names, but are not treated as public by the current maintainers. Try downgrading dask for the purposes of this issue, and we'll open a separate issue to look at managing this change in dask.
Actually, I take that back. This code does address a backward-incompatible change in dask, but it happened in 2024.9.0.
https://github.com/bluesky/tiled/blob/819d194253a888b2a87208524675036baac8a8fa/tiled/server/etag.py#L1-L9
In the current version of dask, the function is still here:
https://github.com/dask/dask/blob/e260e34e6db8b0b883e8323623abfd0e9499e508/dask/tokenize.py#L195
Are you able to import dask.tokenize in your environment?
Thanks for taking a look. dask.tokenize can be imported yes.
Then, the question why you are ending up the dask.base section of the code quoted above. You should be in the dask.tokenize section, I would think.
with me, etag.py starts like this:
from dask.base import normalize_object, normalize_token
from dask.base import tokenize as dask_tokenize
def tokenize(obj):
# This just uses dask for now but may evolve to something custom in future.
return dask_tokenize(obj)
so it seems it's not the right version. it was tiled-0.1.0b6.dev1+g356dbab That is the version that installs when I run pip install --upgrade git+https://github.com/danielballan/tiled.git
I see you're about 13 steps ahead though. So, after cloning and switching to the tree-skip-errors branch, when I run it on my directory, I get a few ... angry comments from tree(client):
├── MOUSE_20250125_2_164_processed_250129_182256
SKIPPING due to error: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_164_processed_250129_182256?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID dfafd026e2c19b7d.
SKIPPING due to error: [Errno 54] Connection reset by peer
├── MOUSE_20250125_2_221_processed_250129_182341
SKIPPING due to error: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_221_processed_250129_182341?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID 7653ac7d2650cb85.
SKIPPING due to error: [Errno 54] Connection reset by peer
├── MOUSE_20250125_2_117_processed_250129_182218
SKIPPING due to error: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_117_processed_250129_182218?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID 7ab64dd0f4d4e499.
SKIPPING due to error: [Errno 54] Connection reset by peer
├── MOUSE_20250125_2_72_processed_250129_182143
SKIPPING due to error: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_72_processed_250129_182143?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID 5671607ebd98683f.
SKIPPING due to error: [Errno 54] Connection reset by peer
├── MOUSE_20250125_2_4_processed_250129_182050
SKIPPING due to error: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_4_processed_250129_182050?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID 86fc4a383f4a6011.
SKIPPING due to error: [Errno 54] Connection reset by peer
├── MOUSE_20250125_2_53_processed_250129_182128
SKIPPING due to error: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_53_processed_250129_182128?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID 52a27e6a5fa9791a.
SKIPPING due to error: [Errno 54] Connection reset by peer
├── MOUSE_20250125_2_40_processed_250129_182117
SKIPPING due to error: Server error '500 Internal Server Error' for url 'http://localhost:8000/api/v1/search/MOUSE_20250125_2_40_processed_250129_182117?page%5Boffset%5D=0&sort='
For more information, server admin can search server logs for correlation ID 203991ceb7859f2e.
<Output truncated at 20 lines. Adjust tree's max_lines parameter to see more.>
And in the terminal running the server, I see it is equally unhappy:
200 OK
[cf7445f9b98f69d5] 127.0.0.1:53651 (public) - "GET /api/v1/search/MOUSE_20250125_2_53_processed_250129_182128?fields=&sort= HTTP/1.1" 200 OK
[52a27e6a5fa9791a] 127.0.0.1:53651 (public) - "GET /api/v1/search/MOUSE_20250125_2_53_processed_250129_182128?page%5Boffset%5D=0&sort= HTTP/1.1" 500 Internal Server Error
[52a27e6a5fa9791a] ERROR: Exception in ASGI application
+ Exception Group Traceback (most recent call last):
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
| yield
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 178, in __call__
| async with anyio.create_task_group() as task_group:
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 767, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
| return await self.app(scope, receive, send)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
| await super().__call__(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
| await self.app(scope, receive, _send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/asgi_correlation_id/middleware.py", line 90, in __call__
| await self.app(scope, receive, handle_outgoing_request)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 879, in current_principal_logging_filter
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 860, in capture_metrics_prometheus
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 815, in capture_metrics
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 761, in set_cookies
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 753, in client_compatibility_check
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 714, in double_submit_cookie_csrf_protection
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 27, in __call__
| await responder(scope, receive, send)
| File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 48, in __call__
| await self.app(scope, receive, self.send_compressed)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
| await self.app(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
| await route.handle(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
| response = await f(request)
| ^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
| raw_response = await run_endpoint_function(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
| return await dependant.call(**values)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 290, in route_with_sig
| return await route(*args, **kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 197, in search
| resource, metadata_stale_at, must_revalidate = await construct_entries_response(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 231, in construct_entries_response
| resource = await construct_resource(
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
| contents[key] = await construct_resource(
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
| contents[key] = await construct_resource(
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 456, in construct_resource
| for key, adapter in entry.items():
| ^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/iterviews.py", line 112, in __iter__
| yield from self._items_slice(0, None, 1)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 245, in _items_slice
| items = [(key, self[key]) for key in list(self)]
| ~~~~^^^^^
| File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 144, in __getitem__
| value = self._file[key]
| ~~~~~~~~~~^^^^^
| File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
| File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/h5py/_hl/group.py", line 357, in __getitem__
| oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
| File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
| File "h5py/h5o.pyx", line 257, in h5py.h5o.open
| KeyError: "Unable to open object (unable to open external file, external link file name = 'beam_profile/eiger_178_master.h5')"
+------------------------------------
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
await self.app(scope, receive, _send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/asgi_correlation_id/middleware.py", line 90, in __call__
await self.app(scope, receive, handle_outgoing_request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 879, in current_principal_logging_filter
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 860, in capture_metrics_prometheus
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 815, in capture_metrics
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 761, in set_cookies
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 753, in client_compatibility_check
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 714, in double_submit_cookie_csrf_protection
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 27, in __call__
await responder(scope, receive, send)
File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 48, in __call__
await self.app(scope, receive, self.send_compressed)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
await self.app(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 290, in route_with_sig
return await route(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 197, in search
resource, metadata_stale_at, must_revalidate = await construct_entries_response(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 231, in construct_entries_response
resource = await construct_resource(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
contents[key] = await construct_resource(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
contents[key] = await construct_resource(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 456, in construct_resource
for key, adapter in entry.items():
^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/iterviews.py", line 112, in __iter__
yield from self._items_slice(0, None, 1)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 245, in _items_slice
items = [(key, self[key]) for key in list(self)]
~~~~^^^^^
File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 144, in __getitem__
value = self._file[key]
~~~~~~~~~~^^^^^
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/h5py/_hl/group.py", line 357, in __getitem__
oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5o.pyx", line 257, in h5py.h5o.open
KeyError: "Unable to open object (unable to open external file, external link file name = 'beam_profile/eiger_178_master.h5')"
[eb60abfe6cfc28ba] 127.0.0.1:53653 (public) - "GET /api/v1/metadata/MOUSE_20250125_2_40_processed_250129_182117 HTTP/1.1" 200 OK
[c65c66ca90d6aea3] 127.0.0.1:53653 (public) - "GET /api/v1/search/MOUSE_20250125_2_40_processed_250129_182117?fields=&sort= HTTP/1.1" 200 OK
[203991ceb7859f2e] 127.0.0.1:53653 (public) - "GET /api/v1/search/MOUSE_20250125_2_40_processed_250129_182117?page%5Boffset%5D=0&sort= HTTP/1.1" 500 Internal Server Error
[203991ceb7859f2e] ERROR: Exception in ASGI application
+ Exception Group Traceback (most recent call last):
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
| yield
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 178, in __call__
| async with anyio.create_task_group() as task_group:
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 767, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
| return await self.app(scope, receive, send)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
| await super().__call__(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
| await self.app(scope, receive, _send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/asgi_correlation_id/middleware.py", line 90, in __call__
| await self.app(scope, receive, handle_outgoing_request)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 879, in current_principal_logging_filter
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 860, in capture_metrics_prometheus
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 815, in capture_metrics
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 761, in set_cookies
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 753, in client_compatibility_check
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
| with recv_stream, send_stream, collapse_excgroups():
| ^^^^^^^^^^^^^^^^^^^^
| File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
| self.gen.throw(value)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
| response = await self.dispatch_func(request, call_next)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 714, in double_submit_cookie_csrf_protection
| response = await call_next(request)
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
| raise app_exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
| await self.app(scope, receive_or_disconnect, send_no_error)
| File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 27, in __call__
| await responder(scope, receive, send)
| File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 48, in __call__
| await self.app(scope, receive, self.send_compressed)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
| await self.app(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
| await route.handle(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
| response = await f(request)
| ^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
| raw_response = await run_endpoint_function(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
| return await dependant.call(**values)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 290, in route_with_sig
| return await route(*args, **kwargs)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 197, in search
| resource, metadata_stale_at, must_revalidate = await construct_entries_response(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 231, in construct_entries_response
| resource = await construct_resource(
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
| contents[key] = await construct_resource(
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
| contents[key] = await construct_resource(
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 456, in construct_resource
| for key, adapter in entry.items():
| ^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/iterviews.py", line 112, in __iter__
| yield from self._items_slice(0, None, 1)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 245, in _items_slice
| items = [(key, self[key]) for key in list(self)]
| ~~~~^^^^^
| File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 144, in __getitem__
| value = self._file[key]
| ~~~~~~~~~~^^^^^
| File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
| File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
| File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/h5py/_hl/group.py", line 357, in __getitem__
| oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
| File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
| File "h5py/h5o.pyx", line 257, in h5py.h5o.open
| KeyError: "Unable to open object (unable to open external file, external link file name = 'beam_profile/eiger_139_master.h5')"
+------------------------------------
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
await self.app(scope, receive, _send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/asgi_correlation_id/middleware.py", line 90, in __call__
await self.app(scope, receive, handle_outgoing_request)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 879, in current_principal_logging_filter
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 860, in capture_metrics_prometheus
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 815, in capture_metrics
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 761, in set_cookies
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 753, in client_compatibility_check
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 177, in __call__
with recv_stream, send_stream, collapse_excgroups():
^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.8/Frameworks/Python.framework/Versions/3.12/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 179, in __call__
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/app.py", line 714, in double_submit_cookie_csrf_protection
response = await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 154, in call_next
raise app_exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/base.py", line 141, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 27, in __call__
await responder(scope, receive, send)
File "/Users/bpauw/Code/tiled/tiled/server/compression.py", line 48, in __call__
await self.app(scope, receive, self.send_compressed)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
await self.app(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
await route.handle(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
raise exc
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
await app(scope, receive, sender)
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
response = await f(request)
^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
raw_response = await run_endpoint_function(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 290, in route_with_sig
return await route(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/router.py", line 197, in search
resource, metadata_stale_at, must_revalidate = await construct_entries_response(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 231, in construct_entries_response
resource = await construct_resource(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
contents[key] = await construct_resource(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 464, in construct_resource
contents[key] = await construct_resource(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/server/core.py", line 456, in construct_resource
for key, adapter in entry.items():
^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/iterviews.py", line 112, in __iter__
yield from self._items_slice(0, None, 1)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 245, in _items_slice
items = [(key, self[key]) for key in list(self)]
~~~~^^^^^
File "/Users/bpauw/Code/tiled/tiled/adapters/hdf5.py", line 144, in __getitem__
value = self._file[key]
~~~~~~~~~~^^^^^
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "/Users/bpauw/Code/Julias_camonitor_log/.venv/lib/python3.12/site-packages/h5py/_hl/group.py", line 357, in __getitem__
oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5o.pyx", line 257, in h5py.h5o.open
KeyError: "Unable to open object (unable to open external file, external link file name = 'beam_profile/eiger_139_master.h5')"
To make this easier to debug, I will try to make a few test files available on WeTransfer.. to be continued...
WeTransfer link to the example files is here: https://we.tl/t-RBFzOMNA7T
A possible fix is in PR #904 This will read what it can from the HDF5 tree, and put a small warning in the dataset when it encounters a KeyError.