dask / dask/distributed

Secure websockets where a security object has not been provided fails with an opaque error

Open
#5,038 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Python
Stars
1.7k
Forks
778
Avg merge
2h 50m
Merged PRs (30d)
3

Description

**What happened**:

```bash
$ dask-worker wss://localhost:443
distributed.dask_worker - INFO - End worker
Traceback (most recent call last):
File "/Users/jtomlinson/miniconda3/envs/dask/bin/dask-worker", line 33, in
sys.exit(load_entry_point('distributed', 'console_scripts', 'dask-worker')())
File "/Users/jtomlinson/Projects/dask/distributed/distributed/cli/dask_worker.py", line 462, in go
main()
File "/Users/jtomlinson/miniconda3/envs/dask/lib/python3.8/site-packages/click/core.py", line 1137, in __call__
return self.main(*args, **kwargs)
File "/Users/jtomlinson/miniconda3/envs/dask/lib/python3.8/site-packages/click/core.py", line 1062, in main
rv = self.invoke(ctx)
File "/Users/jtomlinson/miniconda3/envs/dask/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/jtomlinson/miniconda3/envs/dask/lib/python3.8/site-packages/click/core.py", line 763, in invoke
return __callback(*args, **kwargs)
File "/Users/jtomlinson/Projects/dask/distributed/distributed/cli/dask_worker.py", line 448, in main
loop.run_sync(run)
File "/Users/jtomlinson/miniconda3/envs/dask/lib/python3.8/site-packages/tornado/ioloop.py", line 530, in run_sync
return future_cell[0].result()
File "/Users/jtomlinson/Projects/dask/distributed/distributed/cli/dask_worker.py", line 442, in run
await asyncio.gather(*nannies)
File "/Users/jtomlinson/miniconda3/envs/dask/lib/python3.8/asyncio/tasks.py", line 695, in _wrap_awaitable
return (yield from awaitable.__await__())
File "/Users/jtomlinson/Projects/dask/distributed/distributed/core.py", line 283, in _
await self.start()
File "/Users/jtomlinson/Projects/dask/distributed/distributed/nanny.py", line 275, in start
await self.listen(
File "/Users/jtomlinson/Projects/dask/distributed/distributed/core.py", line 401, in listen
listener = await listen(
File "/Users/jtomlinson/Projects/dask/distributed/distributed/comm/core.py", line 361, in listen
return backend.get_listener(loc, handle_comm, deserialize, **kwargs)
File "/Users/jtomlinson/Projects/dask/distributed/distributed/comm/tcp.py", line 564, in get_listener
return self._listener_class(loc, handle_comm, deserialize, **connection_args)
File "/Users/jtomlinson/Projects/dask/distributed/distributed/comm/ws.py", line 287, in __init__
self.server_args = self._get_server_args(**connection_args)
File "/Users/jtomlinson/Projects/dask/distributed/distributed/comm/ws.py", line 361, in _get_server_args
ctx = _expect_tls_context(connection_args)
File "/Users/jtomlinson/Projects/dask/distributed/distributed/comm/tcp.py", line 347, in _expect_tls_context
raise TypeError(
TypeError: TLS expects a `ssl_context` argument of type ssl.SSLContext (perhaps check your TLS configuration?) Instead got None
```

**What you expected to happen**:

Secure websockets requires certs to be configured either in your config or via the `--tls-ca-file`/`--tls-cert`/`--tls-key` flags. So an error here makes sense, but it is not very clear what the user needs to do.

It would be great to catch this and provide more useful error message.

cc @marcosmoyano

**Environment**:

- Dask version: 2021.06.2
- Python version: 3.8
- Operating System: macos
- Install method (conda, pip, source): source

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.