Story #1866
Updated by jcline@redhat.com over 8 years ago
The following traceback was observed by a Katello user to happen intermittently: <pre> 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) </pre> 'wrong version number' comes from OpenSSL (by way of M2Crypt). I believe[0] indicates that the protocol version number provided during the handshake is invalid. This could happen due to a very old version of OpenSSL (or a very oddly configured cipher set for Apache), but more likely it happened or potentially because the handshake failed in some other odd way (socket read error or similiar). error?). It would be nice if we retried when certain connection errors occurred (initial connections, timeouts for In any case, since it happens intermittently, it seems unlikely that it's a protocol version mis-match and is more likely a network problem. We should retry safe HTTP methods, etc) automatically with pulp-admin. All methods. Python's requests library lets us do this would (and also causes us to stop using M2Crypto here which could be provided if we switched to the requests library source of the trouble with the above traceback, for pulp-admin. all I know). [0] https://github.com/openssl/openssl/blob/83f68df32f0067ee7b092f70568fc33e526fd4fd/ssl/record/ssl3_record.c#L306-L320