diff --git a/oslo_utils/eventletutils.py b/oslo_utils/eventletutils.py index 1f90b6e9..30fc41c3 100644 --- a/oslo_utils/eventletutils.py +++ b/oslo_utils/eventletutils.py @@ -165,11 +165,9 @@ class EventletEvent(object): isSet = is_set def set(self): - if self._set: - self._event.reset() - - self._set = True - self._event.send(True) + if not self._set: + self._set = True + self._event.send(True) def wait(self, timeout=None): with timeutils.StopWatch(timeout) as sw: diff --git a/oslo_utils/tests/test_eventletutils.py b/oslo_utils/tests/test_eventletutils.py index 44606490..96205f01 100644 --- a/oslo_utils/tests/test_eventletutils.py +++ b/oslo_utils/tests/test_eventletutils.py @@ -146,12 +146,11 @@ class EventletUtilsTest(test_base.BaseTestCase): self.assertTrue(hasattr(e_event, method)) # Ensure set() allows multiple invocations, same as in - # threading implementation. Must call reset on underlying - # Event before reusing it + # threading implementation. e_event.set() - self.assertEqual(0, mock_eventlet.event.Event().reset.call_count) + self.assertTrue(e_event.isSet()) e_event.set() - self.assertEqual(1, mock_eventlet.event.Event().reset.call_count) + self.assertTrue(e_event.isSet()) def test_event_no_timeout(self): event = eventletutils.EventletEvent()