Revert "Permit aborting loopingcall while sleeping"
This reverts commit ba28d511e0
.
The original change breaks trove and vitrage.
Change-Id: Icb39a334b82834b592932facf93be0687563c316
This commit is contained in:
parent
ba28d511e0
commit
5975da493b
|
@ -17,7 +17,6 @@
|
|||
|
||||
import random
|
||||
import sys
|
||||
import threading
|
||||
import time
|
||||
|
||||
from eventlet import event
|
||||
|
@ -86,25 +85,19 @@ class LoopingCallBase(object):
|
|||
self.args = args
|
||||
self.kw = kw
|
||||
self.f = f
|
||||
self._running = False
|
||||
self._thread = None
|
||||
self.done = None
|
||||
self.abort = threading.Event()
|
||||
|
||||
@property
|
||||
def _running(self):
|
||||
return not self.abort.is_set()
|
||||
|
||||
def stop(self):
|
||||
self.abort.set()
|
||||
self._running = False
|
||||
|
||||
def wait(self):
|
||||
return self.done.wait()
|
||||
|
||||
def _on_done(self, gt, *args, **kwargs):
|
||||
self._thread = None
|
||||
|
||||
def _sleep(self, timeout):
|
||||
return self.abort.wait(timeout)
|
||||
self._running = False
|
||||
|
||||
def _start(self, idle_for, initial_delay=None, stop_on_exception=True):
|
||||
"""Start the looping
|
||||
|
@ -121,8 +114,8 @@ class LoopingCallBase(object):
|
|||
"""
|
||||
if self._thread is not None:
|
||||
raise RuntimeError(self._RUN_ONLY_ONE_MESSAGE)
|
||||
self._running = True
|
||||
self.done = event.Event()
|
||||
self.abort.clear()
|
||||
self._thread = greenthread.spawn(
|
||||
self._run_loop, idle_for,
|
||||
initial_delay=initial_delay, stop_on_exception=stop_on_exception)
|
||||
|
@ -136,7 +129,7 @@ class LoopingCallBase(object):
|
|||
func = self.f if stop_on_exception else _safe_wrapper(self.f, kind,
|
||||
func_name)
|
||||
if initial_delay:
|
||||
self._sleep(initial_delay)
|
||||
greenthread.sleep(initial_delay)
|
||||
try:
|
||||
watch = timeutils.StopWatch()
|
||||
while self._running:
|
||||
|
@ -150,7 +143,7 @@ class LoopingCallBase(object):
|
|||
'for %(idle).02f seconds',
|
||||
{'func_name': func_name, 'idle': idle,
|
||||
'kind': kind})
|
||||
self._sleep(idle)
|
||||
greenthread.sleep(idle)
|
||||
except LoopingCallDone as e:
|
||||
self.done.send(e.retvalue)
|
||||
except Exception:
|
||||
|
|
|
@ -285,7 +285,7 @@ class DynamicLoopingCallTestCase(test_base.BaseTestCase):
|
|||
else:
|
||||
self.num_runs = self.num_runs - 1
|
||||
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_timeout_task_without_return(self, sleep_mock):
|
||||
self.num_runs = 1
|
||||
timer = loopingcall.DynamicLoopingCall(
|
||||
|
@ -294,7 +294,7 @@ class DynamicLoopingCallTestCase(test_base.BaseTestCase):
|
|||
timer.start(periodic_interval_max=5).wait()
|
||||
sleep_mock.assert_has_calls([mock.call(5)])
|
||||
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_interval_adjustment(self, sleep_mock):
|
||||
self.num_runs = 2
|
||||
|
||||
|
@ -303,7 +303,7 @@ class DynamicLoopingCallTestCase(test_base.BaseTestCase):
|
|||
|
||||
sleep_mock.assert_has_calls([mock.call(5), mock.call(1)])
|
||||
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_initial_delay(self, sleep_mock):
|
||||
self.num_runs = 1
|
||||
|
||||
|
@ -315,7 +315,7 @@ class DynamicLoopingCallTestCase(test_base.BaseTestCase):
|
|||
|
||||
class TestBackOffLoopingCall(test_base.BaseTestCase):
|
||||
@mock.patch('random.SystemRandom.gauss')
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_exponential_backoff(self, sleep_mock, random_mock):
|
||||
def false():
|
||||
return False
|
||||
|
@ -340,7 +340,7 @@ class TestBackOffLoopingCall(test_base.BaseTestCase):
|
|||
self.assertEqual(expected_times, sleep_mock.call_args_list)
|
||||
|
||||
@mock.patch('random.SystemRandom.gauss')
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_exponential_backoff_negative_value(self, sleep_mock, random_mock):
|
||||
def false():
|
||||
return False
|
||||
|
@ -366,7 +366,7 @@ class TestBackOffLoopingCall(test_base.BaseTestCase):
|
|||
self.assertEqual(expected_times, sleep_mock.call_args_list)
|
||||
|
||||
@mock.patch('random.SystemRandom.gauss')
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_no_backoff(self, sleep_mock, random_mock):
|
||||
random_mock.return_value = 1
|
||||
func = mock.Mock()
|
||||
|
@ -381,7 +381,7 @@ class TestBackOffLoopingCall(test_base.BaseTestCase):
|
|||
self.assertTrue(retvalue, 'return value')
|
||||
|
||||
@mock.patch('random.SystemRandom.gauss')
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_no_sleep(self, sleep_mock, random_mock):
|
||||
# Any call that executes properly the first time shouldn't sleep
|
||||
random_mock.return_value = 1
|
||||
|
@ -394,7 +394,7 @@ class TestBackOffLoopingCall(test_base.BaseTestCase):
|
|||
self.assertTrue(retvalue, 'return value')
|
||||
|
||||
@mock.patch('random.SystemRandom.gauss')
|
||||
@mock.patch('oslo_service.loopingcall.LoopingCallBase._sleep')
|
||||
@mock.patch('eventlet.greenthread.sleep')
|
||||
def test_max_interval(self, sleep_mock, random_mock):
|
||||
def false():
|
||||
return False
|
||||
|
|
Loading…
Reference in New Issue