Repository: mesos Updated Branches: refs/heads/master 39b949b31 -> 6d28a8474
Made slave version required in master.cpp. Slave version is being set by the slave since 0.21.0. Cleaned up the code in master that expected it to be optional. Review: https://reviews.apache.org/r/39827 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/c8277ef2 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/c8277ef2 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/c8277ef2 Branch: refs/heads/master Commit: c8277ef2a7a4ec88b1d09d8cdc35d1cd5e1e0e20 Parents: 48a96ac Author: Vinod Kone <[email protected]> Authored: Fri Nov 6 09:28:42 2015 -0800 Committer: Vinod Kone <[email protected]> Committed: Fri Nov 6 10:09:58 2015 -0800 ---------------------------------------------------------------------- src/master/http.cpp | 4 +-- src/master/master.cpp | 64 +++++++++++++++------------------------------- src/master/master.hpp | 6 ++--- 3 files changed, 23 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/c8277ef2/src/master/http.cpp ---------------------------------------------------------------------- diff --git a/src/master/http.cpp b/src/master/http.cpp index 9d20346..3b2cded 100644 --- a/src/master/http.cpp +++ b/src/master/http.cpp @@ -295,10 +295,8 @@ JSON::Object summarize(const Slave& slave) object.values["attributes"] = model(slave.info.attributes()); object.values["active"] = slave.active; + object.values["version"] = slave.version; - if (slave.version.isSome()) { - object.values["version"] = slave.version.get(); - } return object; } http://git-wip-us.apache.org/repos/asf/mesos/blob/c8277ef2/src/master/master.cpp ---------------------------------------------------------------------- diff --git a/src/master/master.cpp b/src/master/master.cpp index 8107960..bad38ff 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -3906,7 +3906,7 @@ void Master::_registerSlave( slaveInfo, pid, machineId, - version.empty() ? Option<string>::none() : version, + version, Clock::now(), checkpointedResources); @@ -4147,7 +4147,7 @@ void Master::_reregisterSlave( slaveInfo, pid, machineId, - version.empty() ? Option<string>::none() : version, + version, Clock::now(), checkpointedResources, executorInfos, @@ -5243,51 +5243,27 @@ void Master::reconcile( LOG(WARNING) << "Task " << task->task_id() << " of framework " << task->framework_id() << " unknown to the slave " << *slave - << " during re-registration" - << (slave->version.isSome() - ? ": reconciling with the slave" - : ": sending TASK_LOST"); - - if (slave->version.isSome()) { - // NOTE: Currently the slave doesn't look at the task state - // when it reconciles the task state; we include the correct - // state for correctness and consistency. - const TaskState& state = task->has_status_update_state() - ? task->status_update_state() - : task->state(); - - TaskStatus* status = reconcile.add_statuses(); - status->mutable_task_id()->CopyFrom(task->task_id()); - status->mutable_slave_id()->CopyFrom(slave->id); - status->set_state(state); - status->set_source(TaskStatus::SOURCE_MASTER); - status->set_message("Reconciliation request"); - status->set_reason(TaskStatus::REASON_RECONCILIATION); - status->set_timestamp(Clock::now().secs()); - } else { - // TODO(bmahler): Remove this case in 0.22.0. - const StatusUpdate& update = protobuf::createStatusUpdate( - task->framework_id(), - slave->id, - task->task_id(), - TASK_LOST, - TaskStatus::SOURCE_MASTER, - None(), - "Task is unknown to the slave", - TaskStatus::REASON_TASK_UNKNOWN); - - updateTask(task, update); - removeTask(task); - - Framework* framework = getFramework(frameworkId); - if (framework != NULL) { - forward(update, UPID(), framework); - } - } + << " during re-registration : reconciling with the slave"; + + // NOTE: Currently the slave doesn't look at the task state + // when it reconciles the task state; we include the correct + // state for correctness and consistency. + const TaskState& state = task->has_status_update_state() + ? task->status_update_state() + : task->state(); + + TaskStatus* status = reconcile.add_statuses(); + status->mutable_task_id()->CopyFrom(task->task_id()); + status->mutable_slave_id()->CopyFrom(slave->id); + status->set_state(state); + status->set_source(TaskStatus::SOURCE_MASTER); + status->set_message("Reconciliation request"); + status->set_reason(TaskStatus::REASON_RECONCILIATION); + status->set_timestamp(Clock::now().secs()); } } - if (slave->version.isSome() && reconcile.statuses_size() > 0) { + if (reconcile.statuses_size() > 0) { reregistered.add_reconciliations()->CopyFrom(reconcile); } } http://git-wip-us.apache.org/repos/asf/mesos/blob/c8277ef2/src/master/master.hpp ---------------------------------------------------------------------- diff --git a/src/master/master.hpp b/src/master/master.hpp index d692185..ead8520 100644 --- a/src/master/master.hpp +++ b/src/master/master.hpp @@ -111,7 +111,7 @@ struct Slave Slave(const SlaveInfo& _info, const process::UPID& _pid, const MachineID& _machineId, - const Option<std::string> _version, + const std::string& _version, const process::Time& _registeredTime, const Resources& _checkpointedResources, const std::vector<ExecutorInfo> executorInfos = @@ -303,10 +303,8 @@ struct Slave process::UPID pid; - // The Mesos version of the slave. If set, the slave is >= 0.21.0. // TODO(bmahler): Use stout's Version when it can parse labels, etc. - // TODO(bmahler): Make this required once it is always set. - const Option<std::string> version; + const std::string version; process::Time registeredTime; Option<process::Time> reregisteredTime;
