Story #1866
closedAs a user, I'd like pulp-admin to gracefully handle connection failures
0%
Description
The following traceback was observed by a Katello user to happen intermittently:
message: (None, 'wrong version number', None)
Traceback (most recent call last):
File \"/usr/lib/python2.7/site-packages/pulp/agent/lib/dispatcher.py\", line 108, in update
report = handler.update(conduit, units, dict(options))
File \"/usr/lib/python2.7/site-packages/pulp_node/handlers/handler.py\", line 161, in update
bindings = RepositoryBinding.fetch(pulp_bindings, conduit.consumer_id, repo_ids)
File \"/usr/lib/python2.7/site-packages/pulp_node/handlers/model.py\",
line 534, in fetch\n binds.extend(RepositoryBinding.filtered(http.response_body))
File \"/usr/lib/python2.7/site-packages/pulp/bindings/consumer.py\", line 158, in find_by_id
return self.server.GET(path)
File \"/usr/lib/python2.7/site-packages/pulp/bindings/server.py\", line 92, in GET
return self._request('GET', path, queries)
File \"/usr/lib/python2.7/site-packages/pulp/bindings/server.py\", line 142, in _request
response_code, response_body = self.server_wrapper.request(method, url, body)
File \"/usr/lib/python2.7/site-packages/pulp/bindings/server.py\", line 332, in request
# Attempt to deserialize the body (should pass unless the server is busted)
ConnectionException: (None, 'wrong version number', None)
This happens when the TLS handshake fails to complete successfully. That can happen due to a real mis-match in supported protocol versions or because the underlying TCP connection came to a premature end.
It would be nice if we retried when certain connection errors occurred (initial connections, timeouts for safe HTTP methods, etc) automatically with pulp-admin. All this would be provided if we switched to the requests library for pulp-admin.
If you're interested in the OpenSSL code that causes this error, it can be found at https://github.com/openssl/openssl/blob/83f68df32f0067ee7b092f70568fc33e526fd4fd/ssl/record/ssl3_record.c#L306-L320
Related issues