Change in vdsm[master]: virt: ExpiringCache: implement __nonzero__

fromani at redhat.com fromani at redhat.com
Thu Mar 26 14:47:21 UTC 2015


Francesco Romani has posted comments on this change.

Change subject: virt: ExpiringCache: implement __nonzero__
......................................................................


Patch Set 1:

(2 comments)

https://gerrit.ovirt.org/#/c/39237/1/tests/vmUtilsTests.py
File tests/vmUtilsTests.py:

Line 103:         clock = FakeClock(0.0)
Line 104:         cache = utils.ExpiringCache(ttl=1.0, clock=clock)
Line 105: 
Line 106:         ITEMS = 10
Line 107:         for i in xrange(ITEMS):
> where size is not the issue, and performance is not a big deal like in test
yes. I have muscle memory wired to 'xrange', even though I agree I should really use 'range' like 90% of times. Will fix.
Line 108:             cache[i] = 'foobar-%d' % i
Line 109:         self.assertTrue(cache)
Line 110: 
Line 111:         clock.now = 1.1


https://gerrit.ovirt.org/#/c/39237/1/vdsm/virt/utils.py
File vdsm/virt/utils.py:

Line 90:         now = self._clock()
Line 91:         with self._lock:
Line 92:             for key in [key
Line 93:                         for key, (expiration, value)
Line 94:                         in self._items.items()
> the cache can get big, can it? maybe use iteritems() and worry about python
The problem I was trying to solve and is that if we use items(), this will going to fail on py3 (dictionary changed while iterating).

Hence, the need for a list of expired keys - and the list comprehension.

Of course, it is foolish to use a list comprehension _AND_ items() at the same time :(
Line 95:                         if expiration <= now]:
Line 96:                 del self._items[key]
Line 97: 
Line 98:             return bool(self._items)


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

Gerrit-MessageType: comment
Gerrit-Change-Id: I15324dc8c43fbb4ef2acb260728f09bcb9a1c975
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani at redhat.com>
Gerrit-Reviewer: Dan Kenigsberg <danken at redhat.com>
Gerrit-Reviewer: Francesco Romani <fromani at redhat.com>
Gerrit-Reviewer: Martin Polednik <mpolednik 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