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 2018/10/05 06:39:07 UTC
[mesos] 01/02: Put `TerminateEvent` at the end of the queue in the
Mesos library.
This is an automated email from the ASF dual-hosted git repository.
alexr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 8f400c3e5abe0fa1810a6efd56bc3fecabf1bbd3
Author: Alexander Rukletsov <al...@apache.org>
AuthorDate: Thu Sep 27 15:20:01 2018 +0200
Put `TerminateEvent` at the end of the queue in the Mesos library.
This is to ensure all pending dispatches are processed. However
multistage events, e.g., `Call`, might still be dropped, because
a continuation (stage) of such event can be dispatched after the
termination event.
Review: https://reviews.apache.org/r/68865
---
src/scheduler/scheduler.cpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/scheduler/scheduler.cpp b/src/scheduler/scheduler.cpp
index 4711529..cb24ba9 100644
--- a/src/scheduler/scheduler.cpp
+++ b/src/scheduler/scheduler.cpp
@@ -1038,7 +1038,12 @@ void Mesos::reconnect()
void Mesos::stop()
{
if (process != nullptr) {
- terminate(process);
+ // We pass 'false' here to add the termination event at the end of the
+ // `MesosProcess` queue. This is to ensure all pending dispatches are
+ // processed. However multistage events, e.g., `Call`, might still be
+ // dropped, because a continuation (stage) of such event can be dispatched
+ // after the termination event, see MESOS-9274.
+ terminate(process, false);
wait(process);
delete process;