Liron Aravot has uploaded a new change for review.

Change subject: sp: startSpm - clusterlock inquire leads to failure
......................................................................

sp: startSpm - clusterlock inquire leads to failure

Currently startSpm() is responsible for the pool upgrade, it attempts to
upgrade the pool domains to the desired version. During the execution of
startSpm() we attempt to retrieve the current spm status in order to compare
it with the engine sent parameters - and in case of difference we log
the info to the user.

When a DC upgrade is performed when the DC is down from a version that uses
V1 as the domains version to a version that uses the StoragePoolMemoryBackend
we'll encounter a problem - because the StoragePoolMemoryBackend uses
the information from the clusterlock only and the current clusterlock
that is used on the domain might not support inquiring (safelease for
example) which will cause it to throw InquireNotSupportError.
As we use the inquired information just to display a warning, in case of
a clusterlock that doesn't support inquiring we should just log it to
the user and continue with starting the spm.

Change-Id: I082dc83ea410768db3819e7259089c20c2614b07
Bug-Url: https://bugzilla.redhat.com/1242092
Signed-off-by: Liron Aravot <[email protected]>
---
M vdsm/storage/sp.py
1 file changed, 11 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/66/45966/1

diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 4a8b67c..c6bbb64 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -237,7 +237,6 @@
                 raise se.MiscOperationInProgress("spm start %s" % self.spUUID)
 
             self.updateMonitoringThreads()
-            oldlver, oldid = self._backend.getSpmStatus()
             masterDomVersion = self.getVersion()
             # If no specific domain version was specified use current master
             # domain version
@@ -249,10 +248,17 @@
                     self.masterDomain.sdUUID, curVer=masterDomVersion,
                     expVer=expectedDomVersion)
 
-            if int(oldlver) != int(prevLVER) or int(oldid) != int(prevID):
-                self.log.info("expected previd:%s lver:%s got request for "
-                              "previd:%s lver:%s" %
-                              (oldid, oldlver, prevID, prevLVER))
+            try:
+                oldlver, oldid = self._backend.getSpmStatus()
+            except se.InquireNotSupportedError:
+                self.log.info("cluster lock inquire isn't supported. "
+                              "proceeding with startSpm()")
+                oldlver = LVER_INVALID
+            else:
+                if int(oldlver) != int(prevLVER) or int(oldid) != int(prevID):
+                    self.log.info("expected previd:%s lver:%s got request for "
+                                  "previd:%s lver:%s" %
+                                  (oldid, oldlver, prevID, prevLVER))
 
             self.spmRole = SPM_CONTEND
 


-- 
To view, visit https://gerrit.ovirt.org/45966
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I082dc83ea410768db3819e7259089c20c2614b07
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: ovirt-3.6
Gerrit-Owner: Liron Aravot <[email protected]>
_______________________________________________
vdsm-patches mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to