classification
Title: OSError is not documented in ssl library, but still can be thrown
Type: behavior Stage: resolved
Components: Library (Lib), SSL Versions: Python 3.10, Python 3.9, Python 3.8
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: orsenthil Nosy List: Dima.Tisnek, Jeffrey.Kintscher, christian.heimes, docs@python, martin.panter, orsenthil, paxdiablo, sibiryakov
Priority: normal Keywords:

Created on 2020-07-31 14:36 by sibiryakov, last changed 2020-12-27 20:04 by orsenthil. This issue is now closed.

Messages (4)
msg374644 - (view) Author: Alexander Sibiryakov (sibiryakov) Date: 2020-07-31 14:36
See stack trace
[07/15/2020 08:51:14.799: ERROR/kafka.producer.sender] Uncaught error in kafka producer I/O thread
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/kafka/producer/sender.py", line 60, in run
self.run_once()
File "/usr/local/lib/python3.6/site-packages/kafka/producer/sender.py", line 160, in run_once
self._client.poll(timeout_ms=poll_timeout_ms)
File "/usr/local/lib/python3.6/site-packages/kafka/client_async.py", line 580, in poll
self._maybe_connect(node_id)
File "/usr/local/lib/python3.6/site-packages/kafka/client_async.py", line 390, in _maybe_connect
conn.connect()
File "/usr/local/lib/python3.6/site-packages/kafka/conn.py", line 426, in connect
if self._try_handshake():
File "/usr/local/lib/python3.6/site-packages/kafka/conn.py", line 505, in _try_handshake
self._sock.do_handshake()
File "/usr/local/lib/python3.6/ssl.py", line 1077, in do_handshake
self._sslobj.do_handshake()
File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
self._sslobj.do_handshake()
OSError: [Errno 0] Error

See docs
https://docs.python.org/3.8/library/ssl.html

and see source code:
https://github.com/python/cpython/blob/3.8/Modules/_ssl.c

Probably the best would be to proceed with using SSLError, but short term OSError could be documented.
msg374651 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2020-08-01 03:29
Issue 31122 is also open about fixing this long-term, but I agree it would be good to document this quirk / bug.
msg374731 - (view) Author: Allan Chandler (paxdiablo) Date: 2020-08-03 09:53
If you look through the source for PyExc, you'll find items for (over and above OsError) ValueError, NotImplementedError, TypeError, OverflowError, AttributeError, MemoryError, UnicodeEncodeError, and RuntimeWarning. I don't think ANY of those are documented so are we going to fix them all? Or should we just list them as possibilities in the doco (or, even more vaguely, state that exceptions other than the documented SSL ones are also possible)?
msg383858 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2020-12-27 20:04
This is resolved by Issue 31122 and code now raises SSLEOFError instead of OSError.

The reason for OSError in the first place was PySSL_SetError function had the following call s->errorhandler();

https://github.com/python/cpython/blob/3.7/Modules/_ssl.c#L782

Where the errorhandler of socketmodule.c was called, and error message that raised was OSError (https://github.com/python/cpython/blob/master/Modules/socketmodule.c#L607)

---

In issue31122, Dima.Tisnek contributed a patch to remove the s-errorhandler() and replace it with  SSLEOFError https://github.com/python/cpython/commit/495bd035662fda29639f9d52bb6baebea31d72fa 

Since the patch was ported to 3.8 and 3.9, OSError is no longer raised by the ssl module for the do_handshake call or wherever PySSL_SetError is utilized.

Closing this bug report as resolved.
History
Date User Action Args
2020-12-27 20:04:38orsenthilsetcomponents: + Library (Lib), - Documentation
versions: + Python 3.9, Python 3.10
2020-12-27 20:04:17orsenthilsetstatus: open -> closed

assignee: docs@python -> orsenthil

nosy: + orsenthil, Dima.Tisnek
messages: + msg383858
resolution: fixed
stage: resolved
2020-08-06 00:52:36Jeffrey.Kintschersetnosy: + Jeffrey.Kintscher
2020-08-03 09:53:19paxdiablosetnosy: + paxdiablo
messages: + msg374731
2020-08-01 03:29:57martin.pantersetnosy: + martin.panter
messages: + msg374651
2020-07-31 15:10:49xtreaksetnosy: + christian.heimes
2020-07-31 15:10:28xtreaksetcomponents: + SSL
2020-07-31 14:36:27sibiryakovcreate