Skip to content

Commit

Permalink
print any collected debug output when returning a timeout error
Browse files Browse the repository at this point in the history
  • Loading branch information
lonvia committed Jan 28, 2024
1 parent 3cc3e3b commit 76eadc5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
12 changes: 10 additions & 2 deletions nominatim/server/falcon/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

from nominatim.api import NominatimAPIAsync
import nominatim.api.v1 as api_impl
import nominatim.api.logging as loglib
from nominatim.config import Configuration

class HTTPNominatimError(Exception):
Expand Down Expand Up @@ -45,8 +46,15 @@ async def timeout_error_handler(req: Request, resp: Response, #pylint: disable=u
per exception info.
"""
resp.status = 503
resp.text = "Query took too long to process."
resp.content_type = 'text/plain; charset=utf-8'

loglib.log().comment('Aborted: Query took too long to process.')
logdata = loglib.get_and_disable()
if logdata:
resp.text = logdata
resp.content_type = 'text/html; charset=utf-8'
else:
resp.text = "Query took too long to process."
resp.content_type = 'text/plain; charset=utf-8'


class ParamWrapper(api_impl.ASGIAdaptor):
Expand Down
9 changes: 8 additions & 1 deletion nominatim/server/starlette/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,15 @@
from starlette.applications import Starlette
from starlette.routing import Route
from starlette.exceptions import HTTPException
from starlette.responses import Response, PlainTextResponse
from starlette.responses import Response, PlainTextResponse, HTMLResponse
from starlette.requests import Request
from starlette.middleware import Middleware
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
from starlette.middleware.cors import CORSMiddleware

from nominatim.api import NominatimAPIAsync
import nominatim.api.v1 as api_impl
import nominatim.api.logging as loglib
from nominatim.config import Configuration

class ParamWrapper(api_impl.ASGIAdaptor):
Expand Down Expand Up @@ -115,6 +116,12 @@ async def timeout_error(request: Request, #pylint: disable=unused-argument
_: Exception) -> Response:
""" Error handler for query timeouts.
"""
loglib.log().comment('Aborted: Query took too long to process.')
logdata = loglib.get_and_disable()

if logdata:
return HTMLResponse(logdata)

return PlainTextResponse("Query took too long to process.", status_code=503)


Expand Down

0 comments on commit 76eadc5

Please sign in to comment.