Skip to content

Commit f2d8f12

Browse files
committed
Improve SSL context handling
Following v3io#137. [ML-9894](https://iguazio.atlassian.net/browse/ML-9894)
1 parent d72029b commit f2d8f12

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

v3io/dataplane/transport/httpclient.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,14 @@ def _send_request_on_connection(self, request, connection):
199199
# ML-9894
200200
if isinstance(e, ssl.SSLError):
201201
ssl_context_before_lock = self._ssl_context
202-
with self._ssl_context_lock:
203-
# Only if it wasn't changed concurrently
204-
if self._ssl_context is ssl_context_before_lock:
205-
self._logger.info(f"Replacing SSL context due to SSLError: {e}")
206-
self._ssl_context = self._create_ssl_context()
202+
# Only replace shared SSL context if it hasn't been replaced already due to the same error
203+
# on another connection.
204+
if ssl_context_before_lock is connection._context:
205+
with self._ssl_context_lock:
206+
# Only if it wasn't changed concurrently
207+
if self._ssl_context is ssl_context_before_lock:
208+
self._logger.info(f"Replacing SSL context due to SSLError: {e}")
209+
self._ssl_context = self._create_ssl_context()
207210
connection = self._create_connection(self._host, self._ssl_context)
208211
request.transport.connection_used = connection
209212
except BaseException as e:

0 commit comments

Comments
 (0)