Commit 3782acd7 authored by Iustin Pop's avatar Iustin Pop
Browse files

Try to reduce wrong errors in InstanceShutdown



In backend.InstanceShutdown(), there is a race condition between
checking that the instance exists and trying to shut it down which
translates sometime in error messages like:

Tue Oct 20 20:08:30 2009 - WARNING: Could not shutdown instance: Failed
to force stop instance instance9: Failed to stop instance instance9:
exited with exit code 1, Error: Domain 'instance9' does not exist.

To fix this, we ignore any hypervisor StopInstance() errors if the
instance doesn't exist anymore, since our purpose (to make the instance
go away) is already accomplished.
Signed-off-by: default avatarIustin Pop <iustin@google.com>
Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
parent 7734de0a
......@@ -1001,6 +1001,10 @@ def InstanceShutdown(instance, timeout):
try:
hyper.StopInstance(instance, retry=tried_once)
except errors.HypervisorError, err:
if instance.name not in hyper.ListInstances():
# if the instance is no longer existing, consider this a
# success and go to cleanup
break
_Fail("Failed to stop instance %s: %s", iname, err)
tried_once = True
time.sleep(sleep_time)
......@@ -1013,7 +1017,10 @@ def InstanceShutdown(instance, timeout):
try:
hyper.StopInstance(instance, force=True)
except errors.HypervisorError, err:
_Fail("Failed to force stop instance %s: %s", iname, err)
if instance.name in hyper.ListInstances():
# only raise an error if the instance still exists, otherwise
# the error could simply be "instance ... unknown"!
_Fail("Failed to force stop instance %s: %s", iname, err)
time.sleep(1)
if instance.name in GetInstanceList([hv_name]):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment