You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2014/04/21 23:39:22 UTC

git commit: Discarded the future returned by select when future.discard() is called.

Repository: mesos
Updated Branches:
  refs/heads/master 2271256e2 -> 4ec9352af


Discarded the future returned by select when future.discard() is called.

Review: https://reviews.apache.org/r/20533


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/4ec9352a
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/4ec9352a
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/4ec9352a

Branch: refs/heads/master
Commit: 4ec9352af1b4ff7571ed155f762e9580f4112c7e
Parents: 2271256
Author: Jie Yu <yu...@gmail.com>
Authored: Mon Apr 21 14:38:47 2014 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Mon Apr 21 14:38:47 2014 -0700

----------------------------------------------------------------------
 3rdparty/libprocess/include/process/future.hpp  |  3 +++
 3rdparty/libprocess/src/tests/process_tests.cpp | 13 ++++++++++---
 2 files changed, 13 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/4ec9352a/3rdparty/libprocess/include/process/future.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/include/process/future.hpp b/3rdparty/libprocess/include/process/future.hpp
index f394a96..8bbd14d 100644
--- a/3rdparty/libprocess/include/process/future.hpp
+++ b/3rdparty/libprocess/include/process/future.hpp
@@ -848,6 +848,9 @@ Future<Future<T> > select(const std::set<Future<T> >& futures)
   memory::shared_ptr<Promise<Future<T> > > promise(
       new Promise<Future<T> >());
 
+  promise->future().onDiscard(
+      lambda::bind(&internal::discarded<Future<T> >, promise->future()));
+
 #if __cplusplus >= 201103L
   typename std::set<Future<T>>::iterator iterator;
   for (iterator = futures.begin(); iterator != futures.end(); ++iterator) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/4ec9352a/3rdparty/libprocess/src/tests/process_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/process_tests.cpp b/3rdparty/libprocess/src/tests/process_tests.cpp
index ff0ee75..745c3ad 100644
--- a/3rdparty/libprocess/src/tests/process_tests.cpp
+++ b/3rdparty/libprocess/src/tests/process_tests.cpp
@@ -1070,10 +1070,17 @@ TEST(Process, select)
 
   Future<Future<int> > future = select(futures);
 
-  EXPECT_TRUE(future.await());
-  EXPECT_TRUE(future.isReady());
-  EXPECT_TRUE(future.get().isReady());
+  AWAIT_READY(future);
+  AWAIT_READY(future.get());
   EXPECT_EQ(42, future.get().get());
+
+  futures.erase(promise1.future());
+
+  future = select(futures);
+  EXPECT_TRUE(future.isPending());
+
+  future.discard();
+  AWAIT_DISCARDED(future);
 }