You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2013/08/06 23:09:06 UTC

git commit: Fixed process::collect to handle an empty list.

Updated Branches:
  refs/heads/master edc436a7c -> febd337ae


Fixed process::collect to handle an empty list.

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


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

Branch: refs/heads/master
Commit: febd337aedfcb68eb620229c3a69ce949c5df9bc
Parents: edc436a
Author: Benjamin Mahler <bm...@twitter.com>
Authored: Tue Aug 6 13:04:36 2013 -0700
Committer: Benjamin Mahler <bm...@twitter.com>
Committed: Tue Aug 6 13:05:17 2013 -0700

----------------------------------------------------------------------
 3rdparty/libprocess/include/process/collect.hpp | 4 ++++
 3rdparty/libprocess/src/tests/process_tests.cpp | 8 +++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/febd337a/3rdparty/libprocess/include/process/collect.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/include/process/collect.hpp b/3rdparty/libprocess/include/process/collect.hpp
index a08fb20..3c620aa 100644
--- a/3rdparty/libprocess/include/process/collect.hpp
+++ b/3rdparty/libprocess/include/process/collect.hpp
@@ -119,6 +119,10 @@ inline Future<std::list<T> > collect(
     std::list<Future<T> >& futures,
     const Option<Timeout>& timeout)
 {
+  if (futures.empty()) {
+    return std::list<T>();
+  }
+
   Promise<std::list<T> >* promise = new Promise<std::list<T> >();
   Future<std::list<T> > future = promise->future();
   spawn(new internal::CollectProcess<T>(futures, timeout, promise), true);

http://git-wip-us.apache.org/repos/asf/mesos/blob/febd337a/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 1d49c87..ed510be 100644
--- a/3rdparty/libprocess/src/tests/process_tests.cpp
+++ b/3rdparty/libprocess/src/tests/process_tests.cpp
@@ -838,6 +838,12 @@ TEST(Process, collect)
 {
   ASSERT_TRUE(GTEST_IS_THREADSAFE);
 
+  // First ensure an empty list functions correctly.
+  std::list<Future<int> > empty;
+  Future<std::list<int> > future = collect(empty);
+  EXPECT_TRUE(future.await());
+  EXPECT_TRUE(future.get().empty());
+
   Promise<int> promise1;
   Promise<int> promise2;
   Promise<int> promise3;
@@ -855,7 +861,7 @@ TEST(Process, collect)
   promise1.set(1);
   promise3.set(3);
 
-  Future<std::list<int> > future = collect(futures);
+  future = collect(futures);
 
   EXPECT_TRUE(future.await());
   EXPECT_TRUE(future.isReady());