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/24 00:12:27 UTC
[1/2] git commit: Added a re-registration time for slaves.
Updated Branches:
refs/heads/master 82fa5bff4 -> 58c400745
Added a re-registration time for slaves.
Review: https://reviews.apache.org/r/13743
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/58c40074
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/58c40074
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/58c40074
Branch: refs/heads/master
Commit: 58c4007450eb3541de0619e929dca386f81c60c3
Parents: 450e3aa
Author: Benjamin Mahler <bm...@twitter.com>
Authored: Thu Aug 22 10:52:50 2013 -0700
Committer: Benjamin Mahler <bm...@twitter.com>
Committed: Fri Aug 23 14:40:30 2013 -0700
----------------------------------------------------------------------
src/master/http.cpp | 5 +++++
src/master/master.cpp | 3 +++
src/master/master.hpp | 7 +++++++
src/webui/master/static/slaves.html | 16 ++++++++++++++++
4 files changed, 31 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 1ac84a9..f2a535a 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -208,6 +208,11 @@ JSON::Object model(const Slave& slave)
object.values["pid"] = string(slave.pid);
object.values["hostname"] = slave.info.hostname();
object.values["registered_time"] = slave.registeredTime.secs();
+
+ if (slave.reregisteredTime.isSome()) {
+ object.values["reregistered_time"] = slave.reregisteredTime.get().secs();
+ }
+
object.values["resources"] = model(slave.info.resources());
object.values["attributes"] = model(slave.info.attributes());
return object;
http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index d53b8bb..69479e4 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -1075,6 +1075,8 @@ void Master::reregisterSlave(const SlaveID& slaveId,
} else {
Slave* slave = getSlave(slaveId);
if (slave != NULL) {
+ slave->reregisteredTime = Clock::now();
+
// NOTE: This handles the case where a slave tries to
// re-register with an existing master (e.g. because of a
// spurious Zookeeper session expiration or after the slave
@@ -1119,6 +1121,7 @@ void Master::reregisterSlave(const SlaveID& slaveId,
// NOTE: This handles the case when the slave tries to
// re-register with a failed over master.
slave = new Slave(slaveInfo, slaveId, from, Clock::now());
+ slave->reregisteredTime = Clock::now();
LOG(INFO) << "Attempting to re-register slave " << slave->id << " at "
<< slave->pid << " (" << slave->info.hostname() << ")";
http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 30752d2..6bd8998 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -247,6 +247,12 @@ private:
hashmap<FrameworkID, Framework*> frameworks;
hashmap<SlaveID, Slave*> slaves;
+
+ // Ideally we could use SlaveIDs to track deactivated slaves.
+ // However, we would not know when to remove the SlaveID from this
+ // set. After deactivation, the same slave machine can register with
+ // the same. Using PIDs allows us to remove the deactivated
+ // slave PID once any slave registers with the same PID!
hashset<UPID> deactivatedSlaves;
hashmap<OfferID, Offer*> offers;
@@ -383,6 +389,7 @@ struct Slave
UPID pid;
Time registeredTime;
+ Option<Time> reregisteredTime;
Time lastHeartbeat;
// We mark a slave 'disconnected' when it has checkpointing
http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/webui/master/static/slaves.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/slaves.html b/src/webui/master/static/slaves.html
index 15877b7..99b1c35 100644
--- a/src/webui/master/static/slaves.html
+++ b/src/webui/master/static/slaves.html
@@ -36,6 +36,10 @@
ng-click="selectColumn('slaves', 'registered_time')">
Registered
</th>
+ <th ng-class="columnClass('slaves', 'reregistered_time')"
+ ng-click="selectColumn('slaves', 'reregistered_time')">
+ Re-Registered
+ </th>
</tr>
</thead>
<tr ng-repeat="slave in _.values(slaves) | orderBy:tables['slaves'].selected_column:tables['slaves'].reverse">
@@ -66,5 +70,17 @@
<i class="icon-file"></i>
</button>
</td>
+ <td>
+ <abbr title="{{slave.reregistered_time * 1000 | isoDate}}">
+ {{slave.reregistered_time * 1000 | relativeDate}}</abbr>
+ <button class="btn btn-mini btn-toggle"
+ clipboard
+ data-clipboard-text="{{slave.reregistered_time * 1000 | isoDate}}"
+ tooltip="Copy timestamp"
+ tooltip-placement="right"
+ tooltip-trigger="clipboardhover">
+ <i class="icon-file"></i>
+ </button>
+ </td>
</tr>
</table>
[2/2] git commit: Removed internal logging from state::checkpoint().
Posted by bm...@apache.org.
Removed internal logging from state::checkpoint().
Review: https://reviews.apache.org/r/13698
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/450e3aa1
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/450e3aa1
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/450e3aa1
Branch: refs/heads/master
Commit: 450e3aa199987f03d72c66526e6477d8768d8b1c
Parents: 82fa5bf
Author: Benjamin Mahler <bm...@twitter.com>
Authored: Tue Aug 20 19:56:49 2013 -0700
Committer: Benjamin Mahler <bm...@twitter.com>
Committed: Fri Aug 23 14:40:30 2013 -0700
----------------------------------------------------------------------
src/launcher/launcher.cpp | 13 +++++++++++--
src/slave/slave.cpp | 10 ++++++++++
src/slave/state.cpp | 8 --------
src/slave/status_update_manager.hpp | 2 +-
4 files changed, 22 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/450e3aa1/src/launcher/launcher.cpp
----------------------------------------------------------------------
diff --git a/src/launcher/launcher.cpp b/src/launcher/launcher.cpp
index 8d4e53d..004d90e 100644
--- a/src/launcher/launcher.cpp
+++ b/src/launcher/launcher.cpp
@@ -105,8 +105,17 @@ int ExecutorLauncher::setup()
frameworkId,
executorId,
uuid);
- cout << "Checkpointing forked pid " << getpid() << endl;
- slave::state::checkpoint(path, stringify(getpid()));
+ cout << "Checkpointing executor's forked pid " << getpid()
+ << " to '" << path << "'" << endl;
+
+ Try<Nothing> checkpoint =
+ slave::state::checkpoint(path, stringify(getpid()));
+
+ if (checkpoint.isError()) {
+ cerr << "Failed to checkpoint executor's forked pid to '"
+ << path << "': " << checkpoint.error();
+ return -1;
+ }
}
const string& cwd = os::getcwd();
http://git-wip-us.apache.org/repos/asf/mesos/blob/450e3aa1/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 563a099..dd599a7 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -619,6 +619,7 @@ void Slave::registered(const SlaveID& slaveId)
// Checkpoint slave info.
const string& path = paths::getSlaveInfoPath(metaDir, slaveId);
+ LOG(INFO) << "Checkpointing SlaveInfo to '" << path << "'";
CHECK_SOME(state::checkpoint(path, info));
}
break;
@@ -1336,6 +1337,8 @@ void Slave::updateFramework(const FrameworkID& frameworkId, const string& pid)
const string& path = paths::getFrameworkPidPath(
metaDir, info.id(), frameworkId);
+ LOG(INFO) << "Checkpointing framework pid '"
+ << framework->pid << "' to '" << path << "'";
CHECK_SOME(state::checkpoint(path, framework->pid));
}
break;
@@ -1519,6 +1522,8 @@ void Slave::registerExecutor(
executor->id,
executor->uuid);
+ LOG(INFO) << "Checkpointing executor pid '"
+ << executor->pid << "' to '" << path << "'";
CHECK_SOME(state::checkpoint(path, executor->pid));
}
@@ -2807,12 +2812,15 @@ Framework::Framework(
string path = paths::getFrameworkInfoPath(
slave->metaDir, slave->info.id(), id);
+ LOG(INFO) << "Checkpointing FrameworkInfo to '" << path << "'";
CHECK_SOME(state::checkpoint(path, info));
// Checkpoint the framework pid.
path = paths::getFrameworkPidPath(
slave->metaDir, slave->info.id(), id);
+ LOG(INFO) << "Checkpointing framework pid '"
+ << pid << "' to '" << path << "'";
CHECK_SOME(state::checkpoint(path, pid));
}
}
@@ -3051,6 +3059,7 @@ Executor::Executor(
const string& path = paths::getExecutorInfoPath(
slave->metaDir, slave->info.id(), frameworkId, id);
+ LOG(INFO) << "Checkpointing ExecutorInfo to '" << path << "'";
CHECK_SOME(state::checkpoint(path, info));
// Create the meta executor directory.
@@ -3138,6 +3147,7 @@ void Executor::checkpointTask(const TaskInfo& task)
const string& path = paths::getTaskInfoPath(
slave->metaDir, slave->info.id(), frameworkId, id, uuid, t.task_id());
+ LOG(INFO) << "Checkpointing TaskInfo to '" << path << "'";
CHECK_SOME(state::checkpoint(path, t));
}
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/450e3aa1/src/slave/state.cpp
----------------------------------------------------------------------
diff --git a/src/slave/state.cpp b/src/slave/state.cpp
index aab8d0b..b66aaa3 100644
--- a/src/slave/state.cpp
+++ b/src/slave/state.cpp
@@ -548,16 +548,11 @@ Try<TaskState> TaskState::recover(
// Helpers to checkpoint string/protobuf to disk, with necessary error checking.
-// NOTE: We don't use 'glog' to log these messages because they could be
-// called from within a forked executor process, leading to potential deadlock.
Try<Nothing> checkpoint(
const string& path,
const google::protobuf::Message& message)
{
- std::cout << "Checkpointing " << message.GetDescriptor()->name()
- << " to '" << path << "'" << std::endl;
-
// Create the base directory.
Try<Nothing> result = os::mkdir(os::dirname(path).get());
if (result.isError()) {
@@ -578,9 +573,6 @@ Try<Nothing> checkpoint(
Try<Nothing> checkpoint(const std::string& path, const std::string& message)
{
- std::cout << "Checkpointing '" << message << "' to '" << path << "'"
- << std::endl;
-
// Create the base directory.
Try<Nothing> result = os::mkdir(os::dirname(path).get());
if (result.isError()) {
http://git-wip-us.apache.org/repos/asf/mesos/blob/450e3aa1/src/slave/status_update_manager.hpp
----------------------------------------------------------------------
diff --git a/src/slave/status_update_manager.hpp b/src/slave/status_update_manager.hpp
index a032646..1f55f86 100644
--- a/src/slave/status_update_manager.hpp
+++ b/src/slave/status_update_manager.hpp
@@ -177,7 +177,7 @@ struct StatusUpdateStream
O_CREAT | O_WRONLY | O_APPEND | O_SYNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IRWXO);
- if(result.isError()) {
+ if (result.isError()) {
error = "Failed to open '" + path.get() + "' for status updates";
return;
}