Change in vdsm[master]: utils: Add changehash function for change detection

nsoffer at redhat.com nsoffer at redhat.com
Sun Sep 21 12:04:23 UTC 2014


Nir Soffer has posted comments on this change.

Change subject: utils: Add changehash function for change detection
......................................................................


Patch Set 1:

(1 comment)

http://gerrit.ovirt.org/#/c/33045/1//COMMIT_MSG
Commit Message:

Line 6: 
Line 7: utils: Add changehash function for change detection
Line 8: 
Line 9: We use Python built-in hash to detect changes in vm state without sending
Line 10: the state in each response. This function is not suitable for this
> Could you explain why the lightweight hash() is not good enough for our use
Using the built-in hash may be good enough, specially on 64 bit systems. The reason I suggest to use md5 instead is that this is the right tool for this job.

Why md5 is favorable:

- Output is stable, will not change between versions of Python, or even between runs. For example, when using the -R option, Python will randomize the hash on each run, invalidating engine hashes without change in vm state.
- Easier to compose multiple hashes. For example, when we hash multiple hashes using a tuple (http://gerrit.ovirt.org/#/c/31701/13/vdsm/virt/vm.py), we are using different hash, is is good enough as the string hash?
- Standard
- Documented

The built-in hash is much faster then md5, but we don't use it in a tight loop, and md5 should be fast enough to use when devices change on a vm. Computing the digest will probably be hidden by the cost of parsing and formatting the xml anyway.

For example, on a minidell (9020):
    >>> timeit.timeit('hashlib.md5(s).hexdigest()', 'import hashlib; s = open("domain.xml").read()', number=1000)
    0.007387876510620117
Line 11: usage. Now we use generic utils.changehash(), implemented using md5
Line 12: hexdigest.
Line 13: 
Line 14: Change-Id: I2242a594383e2d2fe64e3a581f18b8ac662648b0


-- 
To view, visit http://gerrit.ovirt.org/33045
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I2242a594383e2d2fe64e3a581f18b8ac662648b0
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Nir Soffer <nsoffer at redhat.com>
Gerrit-Reviewer: Adam Litke <alitke at redhat.com>
Gerrit-Reviewer: Allon Mureinik <amureini at redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken at redhat.com>
Gerrit-Reviewer: Francesco Romani <fromani at redhat.com>
Gerrit-Reviewer: Nir Soffer <nsoffer at redhat.com>
Gerrit-Reviewer: Roy Golan <rgolan at redhat.com>
Gerrit-Reviewer: Vinzenz Feenstra <vfeenstr at redhat.com>
Gerrit-Reviewer: automation at ovirt.org
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes


More information about the vdsm-patches mailing list