tiled icon indicating copy to clipboard operation
tiled copied to clipboard

Fix extraneous requests from UI

Open danielballan opened this issue 3 years ago • 0 comments

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.

danielballan avatar Nov 02 '22 19:11 danielballan