]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Event: complete all pending events
authorHaomai Wang <haomai@xsky.com>
Mon, 29 Feb 2016 17:42:50 +0000 (01:42 +0800)
committerHaomai Wang <haomai@xsky.com>
Mon, 29 Feb 2016 17:42:50 +0000 (01:42 +0800)
Fix #14925
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/msg/async/Event.cc

index adc266e40982f144f96f0683127e2e0649d4a869..54218e75372feaaf8a687fedea7ab8da1912ac1d 100644 (file)
@@ -116,7 +116,17 @@ int EventCenter::init(int n)
 
 EventCenter::~EventCenter()
 {
-  assert(external_events.empty() && time_events.empty());
+  {
+    Mutex::Locker l(external_lock);
+    while (!external_events.empty()) {
+      EventCallbackRef e = external_events.front();
+      if (e)
+        e->do_request(0);
+      external_events.pop_front();
+    }
+  }
+  assert(time_events.empty());
+
   if (notify_receive_fd >= 0) {
     delete_file_event(notify_receive_fd, EVENT_READABLE);
     ::close(notify_receive_fd);