[Devel] cleaning statistics retrieval

Dan Kenigsberg danken at redhat.com
Tue Apr 8 16:57:15 UTC 2014


On Tue, Apr 08, 2014 at 06:52:50AM -0400, Francesco Romani wrote:
> Hello VDSM developers,

Please use devel at ovirt, and mention "vdsm" at the subject. This thread
in particular involves Engine as well.

> 
> I'd like to discuss and explain the plans for cleaning up Vm.getStats()
> in vdsm/virt/vm.py, and how it affects a bug we have: https://bugzilla.redhat.com/show_bug.cgi?id=1073478
> 
> Let's start from the bug.
> 
> To make a long story short, there is a (small) race in VDSM, probably introduced by commit
> 8fedf8bde3c28edb07add23c3e9b72681cb48e49
> The race can actually be triggered only if the VM is shutting down, so it is not that bad.
> 
> Fixing the reported issue in the specific case can be done with a trivial if, and that it what I did
> in my initial http://gerrit.ovirt.org/#/c/25803/1/vdsm/vm.py,cm

Could you explain how an AttributeError there moved the VM to Down?

> 
> However, this is just a bandaid and a proper solution is needed. This is the reason why
> the following versions of http://gerrit.ovirt.org/#/c/25803 changed direction toward a more comprehensive
> approach.
> 
> And this is the core of the issue.
> My initial idea is to either return success and a complete, well formed statistics set, or return an error.
> However current engine seems to not cope properly with this, and we cannot break backward compatibility.

Would you be more precise? If getAllVmStats returns an errCode for one
of the Vms, what happens?

> 
> Looks like the only way to go is to always return success and to add a field to describe the content of the
> statistics (partial, complete...). THis is admittedly a far cry from the ideal solution, but it is dictated
> by the need to preserve the compatibility with current/old engines.

I don't think that I understand your suggestion, but it does not sound
right to send a partial dictionary and to "appologize" about its
paritiality elsewhere. The dictionary may be "partial" for engine-4.0
yet "complete" for engine-3.5. It's not for Vdsm to grade its own
output.

> 
> Moreover, I would like to take the chance and cleanup/refactor the statistics collection. I already started
> adding the test infrastructure: http://gerrit.ovirt.org/#/c/26536/
> 
> To summarize, what I suggest to do is:
> 
> * fix https://bugzilla.redhat.com/show_bug.cgi?id=1073478 using a simple ugly fix like the original 
>   http://gerrit.ovirt.org/#/c/25803/1/vdsm/vm.py,cm (which I'll resubmit as new change)
> * refactor and clean getStats() and friends
> * on the cleaner base, properly fix the statistics collection by let getStats() always succeed and return
>   possibly partial stats, with a new field describing the content
> 
> please note that I'm not really happy about this solution, but, given the constraint, I don't see better
> alternatives.

Please explain the benefits of describing the partial content, as I do
not see them.



More information about the Devel mailing list