summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/config/cc_power_state_change.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/cloudinit/config/cc_power_state_change.py b/cloudinit/config/cc_power_state_change.py
index 22f1aade..02434322 100644
--- a/cloudinit/config/cc_power_state_change.py
+++ b/cloudinit/config/cc_power_state_change.py
@@ -121,6 +121,8 @@ def run_after_pid_gone(pid, pidcmdline, timeout, log, func, args):
log.warn(msg)
doexit(EXIT_FAIL)
+ known_errnos = (errno.ENOENT, errno.ESRCH)
+
while True:
if time.time() > end_time:
msg = "timeout reached before %s ended" % pid
@@ -135,8 +137,8 @@ def run_after_pid_gone(pid, pidcmdline, timeout, log, func, args):
break
except IOError as ioerr:
- if ioerr.errno == errno.ENOENT:
- msg = "pidfile '%s' gone" % cmdline_f
+ if ioerr.errno in known_errnos:
+ msg = "pidfile '%s' gone [%d]" % (cmdline_f, ioerr.errno)
else:
fatal("IOError during wait: %s" % ioerr)
break
@@ -144,6 +146,8 @@ def run_after_pid_gone(pid, pidcmdline, timeout, log, func, args):
except Exception as e:
fatal("Unexpected Exception: %s" % e)
+ time.sleep(.25)
+
if not msg:
fatal("Unexpected error in run_after_pid_gone")