You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2017/11/13 20:53:11 UTC
[1/4] mesos git commit: Refactored scheduler test driver to avoid
using uninitialized object.
Repository: mesos
Updated Branches:
refs/heads/master 7955dc9dc -> 57eeef056
Refactored scheduler test driver to avoid using uninitialized object.
The shared pointer to MockHTTPScheduler is initialized after the
library, while the library may start using it right after its
initialization via the `events` callback. This change removes the
shared pointer altogether and hence prevents possible segfaults.
Review: https://reviews.apache.org/r/63611/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/75f12742
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/75f12742
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/75f12742
Branch: refs/heads/master
Commit: 75f1274221de5169024008a4187ddb4edd3f9be3
Parents: 7955dc9
Author: Alexander Rukletsov <ru...@gmail.com>
Authored: Mon Nov 13 21:52:05 2017 +0100
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Mon Nov 13 21:52:05 2017 +0100
----------------------------------------------------------------------
src/tests/mesos.hpp | 94 ++++++++++++++++++++++--------------------------
1 file changed, 43 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/75f12742/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index 13a4b94..30c8108 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -2300,45 +2300,50 @@ public:
MOCK_METHOD2_T(failure, void(Mesos*, const typename Event::Failure&));
MOCK_METHOD2_T(error, void(Mesos*, const typename Event::Error&));
- void event(Mesos* mesos, const Event& event)
+ void events(Mesos* mesos, std::queue<Event> events)
{
- switch (event.type()) {
- case Event::SUBSCRIBED:
- subscribed(mesos, event.subscribed());
- break;
- case Event::OFFERS:
- offers(mesos, event.offers());
- break;
- case Event::INVERSE_OFFERS:
- inverseOffers(mesos, event.inverse_offers());
- break;
- case Event::RESCIND:
- rescind(mesos, event.rescind());
- break;
- case Event::RESCIND_INVERSE_OFFER:
- rescindInverseOffers(mesos, event.rescind_inverse_offer());
- break;
- case Event::UPDATE:
- update(mesos, event.update());
+ while (!events.empty()) {
+ Event event = std::move(events.front());
+ events.pop();
+
+ switch (event.type()) {
+ case Event::SUBSCRIBED:
+ subscribed(mesos, event.subscribed());
+ break;
+ case Event::OFFERS:
+ offers(mesos, event.offers());
+ break;
+ case Event::INVERSE_OFFERS:
+ inverseOffers(mesos, event.inverse_offers());
+ break;
+ case Event::RESCIND:
+ rescind(mesos, event.rescind());
+ break;
+ case Event::RESCIND_INVERSE_OFFER:
+ rescindInverseOffers(mesos, event.rescind_inverse_offer());
+ break;
+ case Event::UPDATE:
+ update(mesos, event.update());
break;
case Event::OFFER_OPERATION_UPDATE:
offerOperationUpdate(mesos, event.offer_operation_update());
- break;
- case Event::MESSAGE:
- message(mesos, event.message());
- break;
- case Event::FAILURE:
- failure(mesos, event.failure());
- break;
- case Event::ERROR:
- error(mesos, event.error());
- break;
- case Event::HEARTBEAT:
- heartbeat(mesos);
- break;
- case Event::UNKNOWN:
- LOG(FATAL) << "Received unexpected UNKNOWN event";
- break;
+ break;
+ case Event::MESSAGE:
+ message(mesos, event.message());
+ break;
+ case Event::FAILURE:
+ failure(mesos, event.failure());
+ break;
+ case Event::ERROR:
+ error(mesos, event.error());
+ break;
+ case Event::HEARTBEAT:
+ heartbeat(mesos);
+ break;
+ case Event::UNKNOWN:
+ LOG(FATAL) << "Received unexpected UNKNOWN event";
+ break;
+ }
}
}
};
@@ -2367,12 +2372,12 @@ public:
lambda::bind(&MockHTTPScheduler<Mesos, Event>::disconnected,
_scheduler.get(),
this),
- lambda::bind(&TestMesos<Mesos, Event>::events,
+ lambda::bind(&MockHTTPScheduler<Mesos, Event>::events,
+ _scheduler,
this,
lambda::_1),
v1::DEFAULT_CREDENTIAL,
- detector),
- scheduler(_scheduler) {}
+ detector) {}
virtual ~TestMesos()
{
@@ -2395,19 +2400,6 @@ public:
process::Clock::resume();
}
}
-
-protected:
- void events(std::queue<Event> events)
- {
- while (!events.empty()) {
- Event event = std::move(events.front());
- events.pop();
- scheduler->event(this, event);
- }
- }
-
-private:
- std::shared_ptr<MockHTTPScheduler<Mesos, Event>> scheduler;
};
} // namespace scheduler {
[4/4] mesos git commit: Passed scheduler as a shared pointer into the
callback.
Posted by al...@apache.org.
Passed scheduler as a shared pointer into the callback.
To ensure the lifetime of the scheduler is longer than the lifetime
of the scheduler library driver, pass scheduler as a shared_ptr.
Review: https://reviews.apache.org/r/63615/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/57eeef05
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/57eeef05
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/57eeef05
Branch: refs/heads/master
Commit: 57eeef05668bf73cbc3c0c38ca28dbf0b90ab8b1
Parents: 8194e7c
Author: Alexander Rukletsov <ru...@gmail.com>
Authored: Mon Nov 13 21:52:35 2017 +0100
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Mon Nov 13 21:52:35 2017 +0100
----------------------------------------------------------------------
src/tests/mesos.hpp | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/57eeef05/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index 495c5a0..f251732 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -2358,22 +2358,20 @@ public:
TestMesos(
const std::string& master,
ContentType contentType,
- const std::shared_ptr<MockHTTPScheduler<Mesos, Event>>& _scheduler,
+ const std::shared_ptr<MockHTTPScheduler<Mesos, Event>>& scheduler,
const Option<std::shared_ptr<mesos::master::detector::MasterDetector>>&
detector = None())
: Mesos(
master,
contentType,
- // We don't pass the `_scheduler` shared pointer as the library
- // interface expects a `std::function` object.
lambda::bind(&MockHTTPScheduler<Mesos, Event>::connected,
- _scheduler.get(),
+ scheduler,
this),
lambda::bind(&MockHTTPScheduler<Mesos, Event>::disconnected,
- _scheduler.get(),
+ scheduler,
this),
lambda::bind(&MockHTTPScheduler<Mesos, Event>::events,
- _scheduler,
+ scheduler,
this,
lambda::_1),
v1::DEFAULT_CREDENTIAL,
[2/4] mesos git commit: Refactored executor test driver to avoid
using uninitialized object.
Posted by al...@apache.org.
Refactored executor test driver to avoid using uninitialized object.
The shared pointer to MockHTTPExecutor is initialized after the library,
while the library may start using it right after its initialization via
the `events` callback. This change removes the shared pointer altogether
and hence prevents possible segfaults.
Review: https://reviews.apache.org/r/63613/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/f221d8eb
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/f221d8eb
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/f221d8eb
Branch: refs/heads/master
Commit: f221d8ebb1846e43d8c319bdcaf2694b1601f55b
Parents: 75f1274
Author: Alexander Rukletsov <ru...@gmail.com>
Authored: Mon Nov 13 21:52:22 2017 +0100
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Mon Nov 13 21:52:22 2017 +0100
----------------------------------------------------------------------
src/tests/mesos.hpp | 95 ++++++++++++++++++++----------------------------
1 file changed, 40 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/f221d8eb/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index 30c8108..495c5a0 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -2483,36 +2483,41 @@ public:
MOCK_METHOD2_T(acknowledged,
void(Mesos*, const typename Event::Acknowledged&));
- void event(Mesos* mesos, const Event& event)
+ void events(Mesos* mesos, std::queue<Event> events)
{
- switch (event.type()) {
- case Event::SUBSCRIBED:
- subscribed(mesos, event.subscribed());
- break;
- case Event::LAUNCH:
- launch(mesos, event.launch());
- break;
- case Event::LAUNCH_GROUP:
- launchGroup(mesos, event.launch_group());
- break;
- case Event::KILL:
- kill(mesos, event.kill());
- break;
- case Event::ACKNOWLEDGED:
- acknowledged(mesos, event.acknowledged());
- break;
- case Event::MESSAGE:
- message(mesos, event.message());
- break;
- case Event::SHUTDOWN:
- shutdown(mesos);
- break;
- case Event::ERROR:
- error(mesos, event.error());
- break;
- case Event::UNKNOWN:
- LOG(FATAL) << "Received unexpected UNKNOWN event";
- break;
+ while (!events.empty()) {
+ Event event = std::move(events.front());
+ events.pop();
+
+ switch (event.type()) {
+ case Event::SUBSCRIBED:
+ subscribed(mesos, event.subscribed());
+ break;
+ case Event::LAUNCH:
+ launch(mesos, event.launch());
+ break;
+ case Event::LAUNCH_GROUP:
+ launchGroup(mesos, event.launch_group());
+ break;
+ case Event::KILL:
+ kill(mesos, event.kill());
+ break;
+ case Event::ACKNOWLEDGED:
+ acknowledged(mesos, event.acknowledged());
+ break;
+ case Event::MESSAGE:
+ message(mesos, event.message());
+ break;
+ case Event::SHUTDOWN:
+ shutdown(mesos);
+ break;
+ case Event::ERROR:
+ error(mesos, event.error());
+ break;
+ case Event::UNKNOWN:
+ LOG(FATAL) << "Received unexpected UNKNOWN event";
+ break;
+ }
}
}
};
@@ -2526,39 +2531,19 @@ class TestMesos : public Mesos
public:
TestMesos(
ContentType contentType,
- const std::shared_ptr<MockHTTPExecutor<Mesos, Event>>& _executor)
+ const std::shared_ptr<MockHTTPExecutor<Mesos, Event>>& executor)
: Mesos(
contentType,
lambda::bind(&MockHTTPExecutor<Mesos, Event>::connected,
- _executor,
+ executor,
this),
lambda::bind(&MockHTTPExecutor<Mesos, Event>::disconnected,
- _executor,
+ executor,
this),
- lambda::bind(&TestMesos<Mesos, Event>::events,
+ lambda::bind(&MockHTTPExecutor<Mesos, Event>::events,
+ executor,
this,
- lambda::_1)),
- executor(_executor) {}
-
-protected:
- void events(std::queue<Event> events)
- {
- while (!events.empty()) {
- Event event = std::move(events.front());
- events.pop();
- executor->event(this, event);
- }
- }
-
-private:
- // TODO(bmahler): This is a shared pointer because the `Mesos`
- // library copies the pointer into callbacks that can execute
- // after `Mesos` is destructed. We can avoid this by ensuring
- // that `~Mesos()` blocks until deferred callbacks are cleared
- // (merely grabbing the `process::Mutex` lock is sufficient).
- // The `Mesos` library can also provide a `Future<Nothing> stop()`
- // to allow callers to wait for all events to be flushed.
- std::shared_ptr<MockHTTPExecutor<Mesos, Event>> executor;
+ lambda::_1)) {}
};
} // namespace executor {
[3/4] mesos git commit: Removed unnecessary check in v1 scheduler
library.
Posted by al...@apache.org.
Removed unnecessary check in v1 scheduler library.
Review: https://reviews.apache.org/r/63614/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8194e7ca
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8194e7ca
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8194e7ca
Branch: refs/heads/master
Commit: 8194e7cac77571f74c89f824ce3fe2afb5397cc5
Parents: f221d8e
Author: Alexander Rukletsov <ru...@gmail.com>
Authored: Mon Nov 13 21:52:28 2017 +0100
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Mon Nov 13 21:52:28 2017 +0100
----------------------------------------------------------------------
src/scheduler/scheduler.cpp | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/8194e7ca/src/scheduler/scheduler.cpp
----------------------------------------------------------------------
diff --git a/src/scheduler/scheduler.cpp b/src/scheduler/scheduler.cpp
index ba61969..286a760 100644
--- a/src/scheduler/scheduler.cpp
+++ b/src/scheduler/scheduler.cpp
@@ -910,9 +910,7 @@ Mesos::Mesos(
Mesos::~Mesos()
{
- if (process != nullptr) {
- stop();
- }
+ stop();
}