Repository: mesos Updated Branches: refs/heads/master f8c89e8ed -> 0f7bac864
Always recover 'completed' in RunState. Review: https://reviews.apache.org/r/27738 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0f7bac86 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0f7bac86 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0f7bac86 Branch: refs/heads/master Commit: 0f7bac8643a3a9949dad1d3557dbc4ee4d359367 Parents: f8c89e8 Author: Ian Downes <[email protected]> Authored: Fri Nov 7 11:22:52 2014 -0800 Committer: Ian Downes <[email protected]> Committed: Mon Nov 10 10:36:57 2014 -0800 ---------------------------------------------------------------------- src/slave/state.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/0f7bac86/src/slave/state.cpp ---------------------------------------------------------------------- diff --git a/src/slave/state.cpp b/src/slave/state.cpp index 87e9eb9..48695da 100644 --- a/src/slave/state.cpp +++ b/src/slave/state.cpp @@ -384,6 +384,15 @@ Try<RunState> RunState::recover( state.id = containerId; string message; + // See if the sentinel file exists. This is done first so it is + // known even if partial state is returned, e.g., if the libprocess + // pid file is not recovered. It indicates the slave removed the + // executor. + string path = paths::getExecutorSentinelPath( + rootDir, slaveId, frameworkId, executorId, containerId); + + state.completed = os::exists(path); + // Find the tasks. Try<list<string> > tasks = os::glob(strings::format( paths::TASK_PATH, @@ -418,7 +427,7 @@ Try<RunState> RunState::recover( } // Read the forked pid. - string path = paths::getForkedPidPath( + path = paths::getForkedPidPath( rootDir, slaveId, frameworkId, executorId, containerId); if (!os::exists(path)) { // This could happen if the slave died before the isolator @@ -493,12 +502,6 @@ Try<RunState> RunState::recover( state.libprocessPid = process::UPID(pid.get()); - // See if the sentinel file exists. - path = paths::getExecutorSentinelPath( - rootDir, slaveId, frameworkId, executorId, containerId); - - state.completed = os::exists(path); - return state; }
