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());