xenapi: stop hang during glance download
It seems there are cases when the server gets stuck in a building state because the download from glance fails, but the nova-compute doesn't find out. After some code inspect, a likely cause seems to related to having no socket timeout inside urllib2 when we download the image from glance. A workaround for this issue is to configure the default socket timeout as described here: http://docs.python.org/3.1/howto/urllib2.html#sockets-and-layers Fixes bug 1251650 Change-Id: I8b34d95d3524f3825b28e61cbbb59290653d3711
This commit is contained in:
parent
db86ec9237
commit
89b0d540d5
@ -22,6 +22,7 @@
|
||||
|
||||
import httplib
|
||||
import md5
|
||||
import socket
|
||||
import urllib2
|
||||
|
||||
import utils
|
||||
@ -33,12 +34,19 @@ pluginlib_nova.configure_logging('glance')
|
||||
logging = pluginlib_nova.logging
|
||||
PluginError = pluginlib_nova.PluginError
|
||||
|
||||
DEFAULT_SOCKET_TIMEOUT_SECONDS = 60
|
||||
|
||||
|
||||
class RetryableError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def _download_tarball_and_verify(request, staging_path):
|
||||
# NOTE(johngarbutt) to ensure the script does not hang
|
||||
# if we lose connection to glance we add a default socket
|
||||
# The default is to never timeout.
|
||||
socket.setdefaulttimeout(DEFAULT_SOCKET_TIMEOUT_SECONDS)
|
||||
|
||||
try:
|
||||
response = urllib2.urlopen(request)
|
||||
except urllib2.HTTPError, error:
|
||||
|
Loading…
x
Reference in New Issue
Block a user