Revision 1b429e2a
b/lib/daemon.py | ||
---|---|---|
166 | 166 |
@return: True if some data has been handled, False otherwise |
167 | 167 |
|
168 | 168 |
""" |
169 |
if utils.WaitForFdCondition(self, select.POLLIN, timeout) & select.POLLIN: |
|
169 |
result = utils.WaitForFdCondition(self, select.POLLIN, timeout) |
|
170 |
if result is not None and result & select.POLLIN: |
|
170 | 171 |
self.do_read() |
171 | 172 |
return True |
172 | 173 |
else: |
b/lib/utils.py | ||
---|---|---|
1579 | 1579 |
""" |
1580 | 1580 |
if timeout is not None: |
1581 | 1581 |
retrywaiter = FdConditionWaiterHelper(timeout) |
1582 |
result = Retry(retrywaiter.Poll, RETRY_REMAINING_TIME, timeout, |
|
1583 |
args=(fdobj, event), wait_fn=retrywaiter.UpdateTimeout) |
|
1582 |
try: |
|
1583 |
result = Retry(retrywaiter.Poll, RETRY_REMAINING_TIME, timeout, |
|
1584 |
args=(fdobj, event), wait_fn=retrywaiter.UpdateTimeout) |
|
1585 |
except RetryTimeout: |
|
1586 |
result = None |
|
1584 | 1587 |
else: |
1585 | 1588 |
result = None |
1586 | 1589 |
while result is None: |
... | ... | |
2606 | 2609 |
return fn(*args) |
2607 | 2610 |
except RetryAgain: |
2608 | 2611 |
pass |
2612 |
except RetryTimeout: |
|
2613 |
raise errors.ProgrammerError("Nested retry loop detected that didn't" |
|
2614 |
" handle RetryTimeout") |
|
2609 | 2615 |
|
2610 | 2616 |
remaining_time = end_time - _time_fn() |
2611 | 2617 |
|
b/test/ganeti.utils_unittest.py | ||
---|---|---|
1535 | 1535 |
self.assert_(os.path.isdir(path)) |
1536 | 1536 |
|
1537 | 1537 |
|
1538 |
class TestRetry(testutils.GanetiTestCase): |
|
1539 |
@staticmethod |
|
1540 |
def _RaiseRetryAgain(): |
|
1541 |
raise utils.RetryAgain() |
|
1542 |
|
|
1543 |
def _WrongNestedLoop(self): |
|
1544 |
return utils.Retry(self._RaiseRetryAgain, 0.01, 0.02) |
|
1545 |
|
|
1546 |
def testRaiseTimeout(self): |
|
1547 |
self.failUnlessRaises(utils.RetryTimeout, utils.Retry, |
|
1548 |
self._RaiseRetryAgain, 0.01, 0.02) |
|
1549 |
|
|
1550 |
def testComplete(self): |
|
1551 |
self.failUnlessEqual(utils.Retry(lambda: True, 0, 1), True) |
|
1552 |
|
|
1553 |
def testNestedLoop(self): |
|
1554 |
try: |
|
1555 |
self.failUnlessRaises(errors.ProgrammerError, utils.Retry, |
|
1556 |
self._WrongNestedLoop, 0, 1) |
|
1557 |
except utils.RetryTimeout: |
|
1558 |
self.fail("Didn't detect inner loop's exception") |
|
1559 |
|
|
1560 |
|
|
1538 | 1561 |
if __name__ == '__main__': |
1539 | 1562 |
testutils.GanetiTestProgram() |
Also available in: Unified diff