Prevent WantReadError when using https
If the glance client is instantiated when the socket module has been monkey patched requests to the server can yield a WantReadError because the socket has been set to non-blocking but this is not being handled correctly. When this is the case use eventlet's GreenConnection which handles non-blocking sockets correctly. Also, for now, add a required getsockopt method to GreenConnection. This can be removed once the eventlet fix (https://bitbucket.org/eventlet/eventlet/commits/609f230) lands. Fixes bug 1157864. Change-Id: I187b69f75b8bcfe16facd41e69b1cd0490dae605
This commit is contained in:
@@ -263,3 +263,14 @@ def ensure_str(text, incoming=None,
|
||||
return text.encode(encoding, errors)
|
||||
|
||||
return text
|
||||
|
||||
|
||||
def getsockopt(self, *args, **kwargs):
|
||||
"""
|
||||
A function which allows us to monkey patch eventlet's
|
||||
GreenSocket, adding a required 'getsockopt' method.
|
||||
TODO: (mclaren) we can remove this once the eventlet fix
|
||||
(https://bitbucket.org/eventlet/eventlet/commits/609f230)
|
||||
lands in mainstream packages.
|
||||
"""
|
||||
return self.fd.getsockopt(*args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user