Ensure shutdown migrations actually time out
Without this a VM that fails to respond to a shutdown will just spin forever, blocking state changes.
This commit is contained in:
parent
7b85d5e3f3
commit
284c581845
|
@ -531,8 +531,20 @@ class VMInstance(object):
|
||||||
self.zkhandler.write([
|
self.zkhandler.write([
|
||||||
(('domain.state', self.domuuid), 'shutdown')
|
(('domain.state', self.domuuid), 'shutdown')
|
||||||
])
|
])
|
||||||
|
|
||||||
|
ticks = 0
|
||||||
while self.zkhandler.read(('domain.state', self.domuuid)) != 'stop':
|
while self.zkhandler.read(('domain.state', self.domuuid)) != 'stop':
|
||||||
|
ticks += 1
|
||||||
|
if ticks > self.config['vm_shutdown_timeout'] * 2:
|
||||||
|
# We've hit the timeout, forcibly stop the VM and continue
|
||||||
|
self.zkhandler.write([
|
||||||
|
(('domain.state', self.domuuid), 'stop')
|
||||||
|
])
|
||||||
|
# Wait 1/2 of a second for the state propagation
|
||||||
|
time.sleep(0.5)
|
||||||
|
break
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
do_migrate_shutdown = False
|
do_migrate_shutdown = False
|
||||||
|
|
Loading…
Reference in New Issue