tiled
tiled copied to clipboard
Fix extraneous requests from UI
The UI is making an extraneous request when it displays anything that is not a node, leading to an error and 500 response:
tiled.server.core.WrongTypeForRoute: This is not a Node; it cannot be searched or listed.
It seems to be running /node/search on all nodes. Likely this came in during the xarray dataset refactor and wasn't noticed. It does not adversely affect the user experience, but it spams the console and the server logs with errors. Full server-side error log below:
INFO: 127.0.0.1:34024 - "GET /api/v1/node/search/A?page[offset]=0&page[limit]=10&fields= HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/anyio/streams/memory.py", line 94, in receive
return self.receive_nowait()
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/anyio/streams/memory.py", line 89, in receive_nowait
raise WouldBlock
anyio.WouldBlock
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 43, in call_next
message = await recv_stream.receive()
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/anyio/streams/memory.py", line 114, in receive
raise EndOfStream
anyio.EndOfStream
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 404, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
return await self.app(scope, receive, send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/fastapi/applications.py", line 270, in __call__
await super().__call__(scope, receive, send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/applications.py", line 124, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/errors.py", line 184, in __call__
raise exc
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/cors.py", line 84, in __call__
await self.app(scope, receive, send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 72, in __call__
response = await self.dispatch_func(request, call_next)
File "/home/dallan/Repos/bnl/tiled/tiled/server/app.py", line 554, in set_cookies
response = await call_next(request)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 46, in call_next
raise app_exc
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 36, in coro
await self.app(scope, request.receive, send_stream.send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 72, in __call__
response = await self.dispatch_func(request, call_next)
File "/home/dallan/Repos/bnl/tiled/tiled/server/app.py", line 538, in double_submit_cookie_csrf_protection
response = await call_next(request)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 46, in call_next
raise app_exc
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 36, in coro
await self.app(scope, request.receive, send_stream.send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 72, in __call__
response = await self.dispatch_func(request, call_next)
File "/home/dallan/Repos/bnl/tiled/tiled/server/app.py", line 491, in capture_metrics
response = await call_next(request)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 46, in call_next
raise app_exc
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/base.py", line 36, in coro
await self.app(scope, request.receive, send_stream.send)
File "/home/dallan/Repos/bnl/tiled/tiled/server/compression.py", line 27, in __call__
await responder(scope, receive, send)
File "/home/dallan/Repos/bnl/tiled/tiled/server/compression.py", line 48, in __call__
await self.app(scope, receive, self.send_compressed)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 75, in __call__
raise exc
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 64, in __call__
await self.app(scope, receive, sender)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
raise e
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/routing.py", line 680, in __call__
await route.handle(scope, receive, send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/routing.py", line 275, in handle
await self.app(scope, receive, send)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/starlette/routing.py", line 65, in app
response = await func(request)
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/fastapi/routing.py", line 231, in app
raw_response = await run_endpoint_function(
File "/home/dallan/miniconda3/envs/py39/lib/python3.9/site-packages/fastapi/routing.py", line 160, in run_endpoint_function
return await dependant.call(**values)
File "/home/dallan/Repos/bnl/tiled/tiled/server/router.py", line 169, in node_search
raise WrongTypeForRoute(
tiled.server.core.WrongTypeForRoute: This is not a Node; it cannot be searched or listed.