Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle File not found error for s3 #21

Open
100mi opened this issue Jan 26, 2023 · 0 comments
Open

Handle File not found error for s3 #21

100mi opened this issue Jan 26, 2023 · 0 comments
Assignees
Labels
priority:medium Issue priority is Medium

Comments

@100mi
Copy link
Contributor

100mi commented Jan 26, 2023

Description

When file is not present , then hunting server is popping out Internal Error with the following Traceback:

hunting-hunting-server-1  | INFO:     172.31.0.1:56404 - "GET /api/v1/profile/description/?source=s3%3A%2F%2Fdgca%2Fprocessed%2Fquaterly-int-traffic-stats%2Fintl-traffic-stats-citypair%2Foutput.csv&minimal=true&samples_to_show=10 HTTP/1.1" 500 Internal Server Error
hunting-hunting-server-1  | ERROR:    Exception in ASGI application
hunting-hunting-server-1  | Traceback (most recent call last):
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/anyio/streams/memory.py", line 94, in receive
hunting-hunting-server-1  |     return self.receive_nowait()
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/anyio/streams/memory.py", line 89, in receive_nowait
hunting-hunting-server-1  |     raise WouldBlock
hunting-hunting-server-1  | anyio.WouldBlock
hunting-hunting-server-1  | 
hunting-hunting-server-1  | During handling of the above exception, another exception occurred:
hunting-hunting-server-1  | 
hunting-hunting-server-1  | Traceback (most recent call last):
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/base.py", line 43, in call_next
hunting-hunting-server-1  |     message = await recv_stream.receive()
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/anyio/streams/memory.py", line 114, in receive
hunting-hunting-server-1  |     raise EndOfStream
hunting-hunting-server-1  | anyio.EndOfStream
hunting-hunting-server-1  | 
hunting-hunting-server-1  | During handling of the above exception, another exception occurred:
hunting-hunting-server-1  | 
hunting-hunting-server-1  | Traceback (most recent call last):
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/uvicorn/protocols/http/httptools_impl.py", line 419, in run_asgi
hunting-hunting-server-1  |     result = await app(  # type: ignore[func-returns-value]
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
hunting-hunting-server-1  |     return await self.app(scope, receive, send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/applications.py", line 270, in __call__
hunting-hunting-server-1  |     await super().__call__(scope, receive, send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/applications.py", line 124, in __call__
hunting-hunting-server-1  |     await self.middleware_stack(scope, receive, send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 184, in __call__
hunting-hunting-server-1  |     raise exc
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 162, in __call__
hunting-hunting-server-1  |     await self.app(scope, receive, _send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/base.py", line 72, in __call__
hunting-hunting-server-1  |     response = await self.dispatch_func(request, call_next)
hunting-hunting-server-1  |   File "/app/./app/main.py", line 26, in add_process_time_header
hunting-hunting-server-1  |     response = await call_next(request)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/base.py", line 46, in call_next
hunting-hunting-server-1  |     raise app_exc
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/base.py", line 36, in coro
hunting-hunting-server-1  |     await self.app(scope, request.receive, send_stream.send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/cors.py", line 84, in __call__
hunting-hunting-server-1  |     await self.app(scope, receive, send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 75, in __call__
hunting-hunting-server-1  |     raise exc
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 64, in __call__
hunting-hunting-server-1  |     await self.app(scope, receive, sender)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
hunting-hunting-server-1  |     raise e
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
hunting-hunting-server-1  |     await self.app(scope, receive, send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 680, in __call__
hunting-hunting-server-1  |     await route.handle(scope, receive, send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 275, in handle
hunting-hunting-server-1  |     await self.app(scope, receive, send)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 65, in app
hunting-hunting-server-1  |     response = await func(request)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 231, in app
hunting-hunting-server-1  |     raw_response = await run_endpoint_function(
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fastapi/routing.py", line 160, in run_endpoint_function
hunting-hunting-server-1  |     return await dependant.call(**values)
hunting-hunting-server-1  |   File "/app/./app/api/api_v1/routers/profile.py", line 211, in profile_description
hunting-hunting-server-1  |     return await get_profile(
hunting-hunting-server-1  |   File "/app/./app/utils/profile_db.py", line 113, in get_profile
hunting-hunting-server-1  |     description = await save_profile(url, minimal, samples_to_show)
hunting-hunting-server-1  |   File "/app/./app/utils/profile_db.py", line 28, in save_profile
hunting-hunting-server-1  |     dataframe = await get_dataframe_async(url)
hunting-hunting-server-1  |   File "/app/./app/utils/dataframes.py", line 136, in get_dataframe_async
hunting-hunting-server-1  |     with fs.open(f"{url.netloc}{url.path}", "rb") as f:
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fsspec/spec.py", line 1106, in open
hunting-hunting-server-1  |     f = self._open(
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/s3fs/core.py", line 640, in _open
hunting-hunting-server-1  |     return S3File(
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/s3fs/core.py", line 1989, in __init__
hunting-hunting-server-1  |     super().__init__(
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fsspec/spec.py", line 1462, in __init__
hunting-hunting-server-1  |     self.size = self.details["size"]
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fsspec/spec.py", line 1475, in details
hunting-hunting-server-1  |     self._details = self.fs.info(self.path)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fsspec/asyn.py", line 113, in wrapper
hunting-hunting-server-1  |     return sync(self.loop, func, *args, **kwargs)
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fsspec/asyn.py", line 98, in sync
hunting-hunting-server-1  |     raise return_result
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/fsspec/asyn.py", line 53, in _runner
hunting-hunting-server-1  |     result[0] = await coro
hunting-hunting-server-1  |   File "/usr/local/lib/python3.9/site-packages/s3fs/core.py", line 1257, in _info
hunting-hunting-server-1  |     raise FileNotFoundError(path)
hunting-hunting-server-1  | FileNotFoundError: dgca/processed/quaterly-int-traffic-stats/intl-traffic-stats-citypair/output.csv

Task

Provide a meaningful status code and message to handle error at server level

@100mi 100mi added the priority:medium Issue priority is Medium label Jan 26, 2023
@100mi 100mi self-assigned this Jan 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority:medium Issue priority is Medium
Projects
None yet
Development

No branches or pull requests

1 participant