Bug 1022975

Summary: [vdsm] storage domain upgrade fails with attributeError
Product: Red Hat Enterprise Virtualization Manager Reporter: Gadi Ickowicz <gickowic>
Component: vdsmAssignee: Federico Simoncelli <fsimonce>
Status: CLOSED ERRATA QA Contact: Gadi Ickowicz <gickowic>
Severity: high Docs Contact:
Priority: unspecified    
Version: 3.3.0CC: abaron, amureini, bazulay, danken, dougsland, fsimonce, iheim, lpeer, nlevinki, scohen, ybronhei, yeylon
Target Milestone: ---Keywords: Regression
Target Release: 3.3.0Flags: amureini: Triaged+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: storage
Fixed In Version: is22 Doc Type: Bug Fix
Doc Text:
The v3ResetMetaVolSize argument was changed from volume object to volume UUID, which triggered attribute errors during the execution. Consequently, upgrading a storage pool or domain from 3.0 compatibility mode to 3.1 failed. This update reintroduces volume objects as accepted arguments and correctly handles such exceptions.
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-01-21 16:19:08 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Storage RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1019391, 1032811    
Attachments:
Description Flags
vdsm + engine logs
none
vdsm logs none

Description Gadi Ickowicz 2013-10-24 11:48:45 UTC
Created attachment 815741 [details]
vdsm + engine logs

Description of problem:
Upgrading a storage pool/domain from 3.0 compatibility mode to 3.1 fails with attribute error:

Thread-241::DEBUG::2013-10-22 08:58:07,378::resourceManager::648::ResourceManager::(releaseResource) No one is waiting for resource 'Storage.upgrade_7f288a0e-90d3-47ae-b2d2-7892bb42b950', Clearing records.
Thread-241::ERROR::2013-10-22 08:58:07,379::task::850::TaskManager.Task::(_setError) Task=`4b3edc02-9877-4b63-8518-294d68c1dbc2`::Unexpected error
Traceback (most recent call last):
  File "/usr/share/vdsm/storage/task.py", line 857, in _run
    return fn(*args, **kargs)
  File "/usr/share/vdsm/logUtils.py", line 45, in wrapper
    res = f(*args, **kwargs)
  File "/usr/share/vdsm/storage/hsm.py", line 3565, in upgradeStoragePool
    pool._upgradePool(targetDomVersion)
  File "/usr/share/vdsm/storage/securable.py", line 68, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/share/vdsm/storage/sp.py", line 445, in _upgradePool
    self._convertDomain(self.masterDomain, str(targetDomVersion))
  File "/usr/share/vdsm/storage/sp.py", line 1093, in _convertDomain
    targetFormat)
  File "/usr/share/vdsm/storage/imageRepository/formatConverter.py", line 356, in convert
    converter(repoPath, hostId, imageRepo, isMsd)
  File "/usr/share/vdsm/storage/imageRepository/formatConverter.py", line 279, in v3DomainConverter
    v3ResetMetaVolSize(vol)  # BZ#811880
  File "/usr/share/vdsm/storage/imageRepository/formatConverter.py", line 132, in v3ResetMetaVolSize
    log.debug("Checking the volume size for the volume %s", vol.volUUID)
AttributeError: 'str' object has no attribute 'volUUID'
Thread-241::DEBUG::2013-10-22 08:58:07,382::task::869::TaskManager.Task::(_run) Task=`4b3edc02-9877-4b63-8518-294d68c1dbc2`::Task._run: 4b3edc02-9877-4b63-8518-294d68c1dbc2 ('7f288a0e-90d3-47ae-b2d2-7892bb42b950', '3') {} failed - stopping task


Version-Release number of selected component (if applicable):
vdsm-4.13.0-0.3.beta1.el6ev.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Create dc+cluster with 3.0 compatiblity mode
2. Upgrade dc to 3.1 

Actual results:
Engine reports upgrade as successful however vdsm logs show upgrade process was terminated in the middle due to attribute error listed above

Expected results:
Upgrade should succeed

Additional info:

Comment 1 Federico Simoncelli 2013-10-30 23:50:50 UTC
This regression was introduced in commit:

 c072945 One shot prepare.

where img.prepare was replaced by sd.getVolsOfImage:


+            imgVolumes = sd.getVolsOfImage(allVolumes, imgUUID).keys()
             try:
-                for vol in img.prepare(domain.sdUUID, imgUUID):
+                try:
+                    domain.activateVolumes(imgUUID, imgVolumes)
+                except (OSError, se.CannotActivateLogicalVolumes):
+                    log.error("Image %s can't be activated.",
+                              imgUUID, exc_info=True)
+
+                for vol in imgVolumes:
                     try:
                         v3ResetMetaVolSize(vol)  # BZ#811880

The patch changed the v3ResetMetaVolSize argument from a volume object to the volume uuid (string), therefore triggering the attribute error, e.g.:

 AttributeError: 'str' object has no attribute 'volUUID'

Comment 2 Gadi Ickowicz 2013-11-10 13:44:58 UTC
Created attachment 822076 [details]
vdsm logs

verified on is22 (vdsm-4.13.0-0.7.beta1.el6ev.x86_64) upgrade from 3.0 to 3.1 successful

Comment 3 Charlie 2013-11-28 00:35:24 UTC
This bug is currently attached to errata RHBA-2013:15291. If this change is not to be documented in the text for this errata please either remove it from the errata, set the requires_doc_text flag to 
minus (-), or leave a "Doc Text" value of "--no tech note required" if you do not have permission to alter the flag.

Otherwise to aid in the development of relevant and accurate release documentation, please fill out the "Doc Text" field above with these four (4) pieces of information:

* Cause: What actions or circumstances cause this bug to present.
* Consequence: What happens when the bug presents.
* Fix: What was done to fix the bug.
* Result: What now happens when the actions or circumstances above occur. (NB: this is not the same as 'the bug doesn't present anymore')

Once filled out, please set the "Doc Type" field to the appropriate value for the type of change made and submit your edits to the bug.

For further details on the Cause, Consequence, Fix, Result format please refer to:

https://bugzilla.redhat.com/page.cgi?id=fields.html#cf_release_notes 

Thanks in advance.

Comment 4 errata-xmlrpc 2014-01-21 16:19:08 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2014-0040.html