Description
Bug description
I'm using this extension with The Littlest JupyterHub https://tljh.jupyter.org/en/latest/
I have installed the extension in it using something similar to what is described here https://tljh.jupyter.org/en/latest/howto/admin/enable-extensions.html.
I'm using Arbitrary Port access as described here: https://jupyter-server-proxy.readthedocs.io/en/latest/arbitrary-ports-hosts.html
The extension works fine when there is something serving in the target port.
But if the application is stopped, or if a random port is used as a target, I get an Error 500.
Is that error coming from this extension?
Is there any way to set up a default 404 page to have a nicer error?
How to reproduce
- Use TLJH
- Install this extension
- Then, access an arbitrary port that is not serving any application
- See error screenshot
Expected behaviour
I should get a 404 page or similar saying that nothing is running on that port
Actual behaviour
I get a 500 error page
Your personal set up
- OS: Ubuntu 22.04
- Version(s):
jupyter-admin@ubuntu:~$ jupyter --version
Selected Jupyter core packages...
IPython : 8.17.2
ipykernel : 6.26.0
ipywidgets : 8.1.1
jupyter_client : 8.6.0
jupyter_core : 5.5.0
jupyter_server : 2.10.1
jupyterlab : 4.0.8
nbclient : 0.9.0
nbconvert : 7.11.0
nbformat : 5.9.2
notebook : 7.0.6
qtconsole : not installed
traitlets : 5.13.0
With the latest available TLJH as the Jupyter Hub version
jupyter-admin@ubuntu:~$ jupyterhub --version
4.0.2
I guess the log says that this is coming from the extension :)
# paste relevant logs here, if any
Nov 20 22:35:57 ubuntu jupyterhub-singleuser[21714]: [I 2023-11-20 22:35:57.813 ServerApp] 200 GET /user/admin/api/metrics/v1?1700519757774 ([email protected]) 5.85ms
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: [E 2023-11-20 22:36:00.461 ServerApp] Uncaught exception GET /user/admin/proxy/9999/?redirects=1 (172.24.224.1)
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: HTTPServerRequest(protocol='http', host='172.24.224.106', method='GET', uri='/user/admin/proxy/9999/?redirects=1', version='HTTP/1.1', remote_ip='172.24.224.1')
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: Traceback (most recent call last):
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: File "/opt/tljh/user/lib/python3.10/site-packages/tornado/web.py", line 1786, in _execute
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: result = await result
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: File "/opt/tljh/user/lib/python3.10/site-packages/jupyter_server_proxy/websocket.py", line 111, in get
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: return await self.http_get(*args, **kwargs)
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: File "/opt/tljh/user/lib/python3.10/site-packages/jupyter_server_proxy/handlers.py", line 554, in http_get
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: return await self.proxy(port, proxied_path)
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: File "/opt/tljh/user/lib/python3.10/site-packages/jupyter_server_proxy/handlers.py", line 354, in proxy
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: response = await client.fetch(req, raise_error=False)
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: ConnectionRefusedError: [Errno 111] Connection refused
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: [E 2023-11-20 22:36:00.462 ServerApp] {
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "Host": "172.24.224.106",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "Accept-Encoding": "gzip, deflate",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "Accept-Language": "en-US,en;q=0.9",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "Cache-Control": "max-age=0",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "Cookie": "_xsrf=[secret]; jupyterhub-user-admin=[secret]; jupyterhub-session-id=[secret]; _ga=[secret]; _gid=[secret]; access-token-unsecure-Fn0l6JS6x7n2lMwmvFKTJbrpxwB3fmz7yz-shlQ9CYI=[secret]; access-token-unsecure-jOwhHUkOC3-9auZnRfYfGGIIhzyyHd_OSbVNOcZgLnk=[secret]; access-token-unsecure-JJqraO6yYAbaBKprlRSMpQeSXLZpcJSP2C01eFQcnIg=[secret]; access-token-unsecure-j2YSooBRR0OvMKcAOsemA0dWzVzKTaOlEfZBNeoRP8s=[secret]; access-token-unsecure-fCjQv4gkdXTeA8oa6vVsnYBEYuOC_VwmoJDogHExXNQ=[secret]; access-token-unsecure-hvv8hXk9tzcTaD9_bitZg_37hGIcBu6KuLEUUBU6SnU=[secret]; access-token-unsecure-AWKFAquT_9BQGXi7UZpiqzfNH6Na2Nh253tUX57_0Ac=[secret]; access-token-unsecure-z010dEQQ2BDo2qQyyUjh2s3nHbya4Q8U4YZ0iQQolas=[secret]; _ga_R1FN4KJKJH=[secret]",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "Upgrade-Insecure-Requests": "1",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "X-Forwarded-For": "172.24.224.1",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "X-Forwarded-Host": "172.24.224.106",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "X-Forwarded-Port": "80",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "X-Forwarded-Proto": "http",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "X-Forwarded-Server": "ubuntu",
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: "X-Real-Ip": "172.24.224.1"
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: }
Nov 20 22:36:00 ubuntu jupyterhub-singleuser[21714]: [E 2023-11-20 22:36:00.462 ServerApp] 500 GET /user/admin/proxy/9999/?redirects=1 ([email protected]) 2.18ms
Nov 20 22:36:03 ubuntu jupyterhub-singleuser[21714]: [I 2023-11-20 22:36:03.517 ServerApp] 200 GET /user/admin/api/metrics/v1?1700519763466 ([email protected]) 7.84ms
Full environment
# paste output of `pip freeze` or `conda list` here
Configuration
# jupyterhub_config.py