Revision 0cc00929
b/lib/locking.py | ||
---|---|---|
389 | 389 |
except (KeyError): |
390 | 390 |
raise errors.LockError('non-existing lock in set (%s)' % lname) |
391 | 391 |
|
392 |
# This will hold the locknames we effectively acquired. |
|
393 |
acquired = set() |
|
392 | 394 |
# Now acquire_list contains a sorted list of resources and locks we want. |
393 | 395 |
# In order to get them we loop on this (private) list and acquire() them. |
394 | 396 |
# We gave no real guarantee they will still exist till this is done but |
... | ... | |
399 | 401 |
try: |
400 | 402 |
# now the lock cannot be deleted, we have it! |
401 | 403 |
self._add_owned(lname) |
404 |
acquired.add(lname) |
|
402 | 405 |
except: |
403 | 406 |
# We shouldn't have problems adding the lock to the owners list, but |
404 | 407 |
# if we did we'll try to release this lock and re-raise exception. |
... | ... | |
413 | 416 |
self._del_owned(lname) |
414 | 417 |
raise errors.LockError('non-existing lock in set (%s)' % name_fail) |
415 | 418 |
|
416 |
return True
|
|
419 |
return acquired
|
|
417 | 420 |
|
418 | 421 |
def release(self, names=None): |
419 | 422 |
"""Release a set of resource locks, at the same level. |
b/test/ganeti.locking_unittest.py | ||
---|---|---|
245 | 245 |
self.assertEquals(newls._names(), set()) |
246 | 246 |
|
247 | 247 |
def testAcquireRelease(self): |
248 |
self.ls.acquire('one')
|
|
248 |
self.assert_(self.ls.acquire('one'))
|
|
249 | 249 |
self.assertEquals(self.ls._list_owned(), set(['one'])) |
250 | 250 |
self.ls.release() |
251 | 251 |
self.assertEquals(self.ls._list_owned(), set()) |
252 |
self.ls.acquire(['one'])
|
|
252 |
self.assertEquals(self.ls.acquire(['one']), set(['one']))
|
|
253 | 253 |
self.assertEquals(self.ls._list_owned(), set(['one'])) |
254 | 254 |
self.ls.release() |
255 | 255 |
self.assertEquals(self.ls._list_owned(), set()) |
... | ... | |
261 | 261 |
self.assertEquals(self.ls._list_owned(), set(['two'])) |
262 | 262 |
self.ls.release() |
263 | 263 |
self.assertEquals(self.ls._list_owned(), set()) |
264 |
self.ls.acquire(['one', 'three'])
|
|
264 |
self.assertEquals(self.ls.acquire(['one', 'three']), set(['one', 'three']))
|
|
265 | 265 |
self.assertEquals(self.ls._list_owned(), set(['one', 'three'])) |
266 | 266 |
self.ls.release() |
267 | 267 |
self.assertEquals(self.ls._list_owned(), set()) |
Also available in: Unified diff