Unsuccessful controller fs resizing without error indication

This commit ensures that if resizing a drbd filesystem is not successful
the filesystem state will stay in "drbd_fs_resizing_in_progress" state
and the "controller configuration is out-of-date" alarm won't be cleared.

Change-Id: I9a655c4a97836b921b63f10fc425eebfbb5af17a
Closes-Bug: 1812235
Signed-off-by: Wei Zhou <wei.zhou@windriver.com>
This commit is contained in:
Wei Zhou 2019-01-17 10:55:34 -05:00
parent c3f905276d
commit 0bc78c4c44
1 changed files with 36 additions and 30 deletions

View File

@ -7461,6 +7461,7 @@ class ConductorManager(service.PeriodicService):
progress = ""
retry_attempts = 3
rc = False
with open(os.devnull, "w"):
try:
if standby_host:
@ -7490,6 +7491,7 @@ class ConductorManager(service.PeriodicService):
drbd_fs_updated = self._drbd_fs_updated(context)
if drbd_fs_updated:
while(loop_timeout <= 5):
if constants.DRBD_PGSQL in drbd_fs_updated:
if (not pgsql_resized and
(not standby_host or (standby_host and
constants.DRBD_PGSQL in self._drbd_fs_sync()))):
@ -7500,6 +7502,7 @@ class ConductorManager(service.PeriodicService):
LOG.info("Performed %s" % progress)
pgsql_resized = True
if constants.DRBD_CGCS in drbd_fs_updated:
if (not cgcs_resized and
(not standby_host or (standby_host and
constants.DRBD_CGCS in self._drbd_fs_sync()))):
@ -7510,6 +7513,7 @@ class ConductorManager(service.PeriodicService):
LOG.info("Performed %s" % progress)
cgcs_resized = True
if constants.DRBD_EXTENSION in drbd_fs_updated:
if (not extension_resized and
(not standby_host or (standby_host and
constants.DRBD_EXTENSION in self._drbd_fs_sync()))):
@ -7572,12 +7576,14 @@ class ConductorManager(service.PeriodicService):
all_resized = False
if all_resized:
LOG.info("resizing filesystems completed")
rc = True
break
loop_timeout += 1
time.sleep(1)
LOG.info("resizing filesystems completed")
else:
LOG.warn("resizing filesystems not completed")
except exception.ProcessExecutionError as ex:
LOG.warn("Failed to perform storage resizing (cmd: '%(cmd)s', "
@ -7586,7 +7592,7 @@ class ConductorManager(service.PeriodicService):
{"cmd": " ".join(cmd), "stdout": ex.stdout,
"stderr": ex.stderr, "rc": ex.exit_code})
return True
return rc
# Retry in case of errors or racing issues with rmon autoextend. Rmon is pooling at
# 10s intervals and autoextend is fast. Therefore retrying a few times and waiting