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

About Internal Server Error on HTTP status page #783

Closed
ma-anazawa opened this issue Apr 20, 2023 · 0 comments · Fixed by #801
Closed

About Internal Server Error on HTTP status page #783

ma-anazawa opened this issue Apr 20, 2023 · 0 comments · Fixed by #801

Comments

@ma-anazawa
Copy link

Describe the bug
We are setting up multiple sources, but if there is at least one source that cannot perform a WHOIS query against the nrtm_host (*), and we try to display the HTTP status page, an Internal Server Error occurs and the page cannot be displayed. Is this a bug?

[Log when access to "http://.../v1/status/" fails (Internal Server Error)]

2023-04-18 00:15:26,686 irrd[722779]: [irrd.utils.whois_client#DEBUG] Running IRRD whois query !jARIN on rr.arin.net port 43
2023-04-18 00:15:41,707 irrd[722779]: [uvicorn.access#INFO] ::ffff:192.168.1.75:55378 - "GET /v1/status/ HTTP/1.1" 500
2023-04-18 00:15:41,708 irrd[722779]: [uvicorn.error#ERROR] Exception in ASGI application
Traceback (most recent call last):
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/uvicorn/protocols/http/h11_impl.py", line 373, in run_asgi
result = await app(self.scope, self.receive, self.send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/uvicorn/middleware/proxy_headers.py", line 75, in call
return await self.app(scope, receive, send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/uvicorn/middleware/message_logger.py", line 82, in call
raise exc from None
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/uvicorn/middleware/message_logger.py", line 78, in call
await self.app(scope, inner_receive, inner_send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/applications.py", line 112, in call
await self.middleware_stack(scope, receive, send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/middleware/errors.py", line 181, in call
raise exc from None
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/middleware/errors.py", line 159, in call
await self.app(scope, receive, _send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/irrd/server/http/app.py", line 85, in call
await self.app(scope, receive, send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/exceptions.py", line 82, in call
raise exc from None
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/exceptions.py", line 71, in call
await self.app(scope, receive, sender)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/routing.py", line 580, in call
await route.handle(scope, receive, send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/routing.py", line 390, in handle
await self.app(scope, receive, send)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/endpoints.py", line 32, in dispatch
response = await run_in_threadpool(handler, request)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/starlette/concurrency.py", line 40, in run_in_threadpool
return await loop.run_in_executor(None, func, *args)
File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/irrd/server/http/endpoints.py", line 26, in get
response = StatusGenerator().generate_status()
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/irrd/server/http/status_generator.py", line 34, in generate_status
self._generate_source_detail(database_handler)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/irrd/server/http/status_generator.py", line 115, in _generate_source_detail
remote_information = self._generate_remote_status_info(nrtm_host, nrtm_port, source)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/irrd/server/http/status_generator.py", line 151, in _generate_remote_status_info
source_status = whois_query_source_status(nrtm_host, nrtm_port, source)
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/irrd/utils/whois_client.py", line 111, in whois_query_source_status
remote_status = whois_query_irrd(host, port, f'!j{source}')
File "/home/irrd/irrd-venv/lib/python3.6/site-packages/irrd/utils/whois_client.py", line 55, in whois_query_irrd
s = socket.create_connection((host, port), timeout=5)
File "/usr/lib64/python3.6/socket.py", line 724, in create_connection
raise err
File "/usr/lib64/python3.6/socket.py", line 713, in create_connection
sock.connect(sa)
OSError: [Errno 101] Network is unreachable

To Reproduce
[Example configuration of sources]

    ARIN:
        authoritative: false
        keep_journal: true
        import_serial_source: 'ftp://ftp.arin.net/pub/rr/ARIN.CURRENTSERIAL'
        import_source: 'ftp://ftp.arin.net/pub/rr/arin.db.gz'
        import_timer: 3600
      ※nrtm_host: rr.arin.net
        nrtm_port: 43
        object_class_filter:
            - as-set
            - aut-num
            - filter-set
            - inet-rtr
            - key-cert
            - mntner
            - peering-set
            - route
            - route6
            - route-set
            - rtr-set

IRRd version you are running
IRRD version 4.2.4

mergify bot pushed a commit that referenced this issue Apr 26, 2023
(cherry picked from commit 572d903)

# Conflicts:
#	irrd/server/http/status_generator.py
mxsasha added a commit that referenced this issue Apr 26, 2023
mxsasha added a commit that referenced this issue Apr 26, 2023
…uery (#788) (#789)

(cherry picked from commit 572d903)

Co-authored-by: Sasha Romijn <github@mxsasha.eu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant