]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Fix multiple calls to Event.clear.
authorA. Jesse Jiryu Davis <jesse@mongodb.com>
Wed, 18 Feb 2015 13:56:52 +0000 (08:56 -0500)
committerA. Jesse Jiryu Davis <jesse@mongodb.com>
Wed, 18 Feb 2015 13:56:52 +0000 (08:56 -0500)
tornado/locks.py
tornado/test/locks_test.py

index 62d962b815473396a39cb0ae86a1d403295b757e..73cc9e2b8b8cfb6c379ff0e3f5f249c8e3d23592 100644 (file)
@@ -110,7 +110,8 @@ class Event(object):
         
         Calls to `.wait` will block until `.set` is called.
         """
-        self._future = Future()
+        if self._future.done():
+            self._future = Future()
 
     def wait(self, timeout=None):
         """Block until the internal flag is true.
index 49e6199cce2afc238e0158df73f588c260c463d7..73f0f5911fb2105b5c03804f0438d381fbd691ab 100644 (file)
@@ -206,6 +206,15 @@ class TestEvent(AsyncTestCase):
         e.set()
         self.assertTrue(e.is_set())
 
+    def test_event_wait_clear(self):
+        e = locks.Event()
+        f0 = e.wait()
+        e.clear()
+        f1 = e.wait()
+        e.set()
+        self.assertTrue(f0.done())
+        self.assertTrue(f1.done())
+
 
 if __name__ == '__main__':
     unittest.main()