You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2015/10/26 23:47:14 UTC
mesos git commit: Fixed quotation of interpolated variables in log
messages.
Repository: mesos
Updated Branches:
refs/heads/master 64c37b493 -> d69e786e3
Fixed quotation of interpolated variables in log messages.
Specifically, we should always quote executor IDs (because they are
user-supplied and might contain whitespace), but we don't need to quote
framework IDs. There's a bunch more work we could do here (e.g.,
escaping punctuation), but this is a start.
Also fix a few style issues with usage of "<<" operators.
Review: https://reviews.apache.org/r/39497
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/d69e786e
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/d69e786e
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/d69e786e
Branch: refs/heads/master
Commit: d69e786e3c0117f9ef85e97d65147ea5d34e2d57
Parents: 64c37b4
Author: Neil Conway <ne...@gmail.com>
Authored: Mon Oct 26 17:13:55 2015 -0500
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Mon Oct 26 17:44:02 2015 -0500
----------------------------------------------------------------------
src/exec/exec.cpp | 2 +-
src/master/master.cpp | 20 +--
src/master/master.hpp | 14 +--
.../mesos/isolators/network/port_mapping.cpp | 10 +-
src/slave/slave.cpp | 121 ++++++++++---------
src/slave/state.cpp | 4 +-
src/tests/containerizer.cpp | 8 +-
7 files changed, 91 insertions(+), 88 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/d69e786e/src/exec/exec.cpp
----------------------------------------------------------------------
diff --git a/src/exec/exec.cpp b/src/exec/exec.cpp
index c99dc07..76599bf 100644
--- a/src/exec/exec.cpp
+++ b/src/exec/exec.cpp
@@ -310,7 +310,7 @@ protected:
{
if (aborted.load()) {
VLOG(1) << "Ignoring kill task message for task " << taskId
- <<" because the driver is aborted!";
+ << " because the driver is aborted!";
return;
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/d69e786e/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 0981428..39ce9bc 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -2746,8 +2746,8 @@ Resources Master::addTask(
// TODO(benh): Refactor this code into Slave::addTask.
if (!slave->hasExecutor(framework->id(), task.executor().executor_id())) {
CHECK(!framework->hasExecutor(slave->id, task.executor().executor_id()))
- << "Executor " << task.executor().executor_id()
- << " known to the framework " << *framework
+ << "Executor '" << task.executor().executor_id()
+ << "' known to the framework " << *framework
<< " but unknown to the slave " << *slave;
slave->addExecutor(framework->id(), task.executor());
@@ -3635,8 +3635,8 @@ void Master::schedulerMessage(
if (framework->pid != from) {
LOG(WARNING)
- << "Ignoring framework message for executor " << executorId
- << " of framework " << *framework
+ << "Ignoring framework message for executor '" << executorId
+ << "' of framework " << *framework
<< " because it is not expected from " << from;
metrics->invalid_framework_to_executor_messages++;
return;
@@ -4502,8 +4502,8 @@ void Master::exitedExecutor(
return;
}
- LOG(INFO) << "Executor " << executorId
- << " of framework " << frameworkId
+ LOG(INFO) << "Executor '" << executorId
+ << "' of framework " << frameworkId
<< " on slave " << *slave << ": "
<< WSTRINGIFY(status);
@@ -5295,8 +5295,8 @@ void Master::reconcile(
// in the scheduler driver.
if (!executor.has_framework_id()) {
LOG(ERROR) << "Slave " << *slave
- << " re-registered with executor " << executor.executor_id()
- << " without setting the framework id";
+ << " re-registered with executor '" << executor.executor_id()
+ << "' without setting the framework id";
continue;
}
slaveExecutors.put(executor.framework_id(), executor.executor_id());
@@ -5311,8 +5311,8 @@ void Master::reconcile(
// TODO(bmahler): Reconcile executors correctly between the
// master and the slave, see:
// MESOS-1466, MESOS-1800, and MESOS-1720.
- LOG(WARNING) << "Executor " << executorId
- << " of framework " << frameworkId
+ LOG(WARNING) << "Executor '" << executorId
+ << "' of framework " << frameworkId
<< " possibly unknown to the slave " << *slave;
removeExecutor(slave, frameworkId, executorId);
http://git-wip-us.apache.org/repos/asf/mesos/blob/d69e786e/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 3aa7017..b76d301 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -263,8 +263,8 @@ struct Slave
const ExecutorInfo& executorInfo)
{
CHECK(!hasExecutor(frameworkId, executorInfo.executor_id()))
- << "Duplicate executor " << executorInfo.executor_id()
- << " of framework " << frameworkId;
+ << "Duplicate executor '" << executorInfo.executor_id()
+ << "' of framework " << frameworkId;
executors[frameworkId][executorInfo.executor_id()] = executorInfo;
usedResources[frameworkId] += executorInfo.resources();
@@ -274,7 +274,7 @@ struct Slave
const ExecutorID& executorId)
{
CHECK(hasExecutor(frameworkId, executorId))
- << "Unknown executor " << executorId << " of framework " << frameworkId;
+ << "Unknown executor '" << executorId << "' of framework " << frameworkId;
usedResources[frameworkId] -=
executors[frameworkId][executorId].resources();
@@ -1622,8 +1622,8 @@ struct Framework
const ExecutorInfo& executorInfo)
{
CHECK(!hasExecutor(slaveId, executorInfo.executor_id()))
- << "Duplicate executor " << executorInfo.executor_id()
- << " on slave " << slaveId;
+ << "Duplicate executor '" << executorInfo.executor_id()
+ << "' on slave " << slaveId;
executors[slaveId][executorInfo.executor_id()] = executorInfo;
totalUsedResources += executorInfo.resources();
@@ -1634,8 +1634,8 @@ struct Framework
const ExecutorID& executorId)
{
CHECK(hasExecutor(slaveId, executorId))
- << "Unknown executor " << executorId
- << " of framework " << id()
+ << "Unknown executor '" << executorId
+ << "' of framework " << id()
<< " of slave " << slaveId;
totalUsedResources -= executors[slaveId][executorId].resources();
http://git-wip-us.apache.org/repos/asf/mesos/blob/d69e786e/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
index 565f9cc..1911ba6 100644
--- a/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+++ b/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
@@ -2103,8 +2103,8 @@ Future<Option<ContainerPrepareInfo>> PortMappingIsolatorProcess::prepare(
if (resources.ephemeral_ports().isSome()) {
LOG(WARNING) << "Ignoring the specified ephemeral_ports '"
<< resources.ephemeral_ports().get()
- << "' for container" << containerId
- << " of executor " << executorInfo.executor_id();
+ << "' for container " << containerId
+ << " of executor '" << executorInfo.executor_id() << "'";
}
// Allocate the ephemeral ports used by this container.
@@ -2118,8 +2118,8 @@ Future<Option<ContainerPrepareInfo>> PortMappingIsolatorProcess::prepare(
LOG(INFO) << "Using non-ephemeral ports " << nonEphemeralPorts
<< " and ephemeral ports " << ephemeralPorts.get()
- << " for container " << containerId << " of executor "
- << executorInfo.executor_id();
+ << " for container " << containerId << " of executor '"
+ << executorInfo.executor_id() << "'";
ContainerPrepareInfo prepareInfo;
prepareInfo.add_commands()->set_value(scripts(infos[containerId]));
@@ -3530,7 +3530,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
// Configure lo and eth0.
script << "ip link set " << lo << " address " << hostMAC
- << " mtu "<< hostEth0MTU << " up\n";
+ << " mtu " << hostEth0MTU << " up\n";
script << "ip link set " << eth0 << " address " << hostMAC << " up\n";
script << "ip addr add " << hostIPNetwork << " dev " << eth0 << "\n";
http://git-wip-us.apache.org/repos/asf/mesos/blob/d69e786e/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 837e403..5f9b52b 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -1215,8 +1215,8 @@ void Slave::doReliableRegistration(Duration maxBackoff)
foreach (const Owned<Executor>& executor,
completedFramework->completedExecutors) {
- VLOG(2) << "Reregistering completed executor " << executor->id
- << " with " << executor->terminatedTasks.size()
+ VLOG(2) << "Reregistering completed executor '" << executor->id
+ << "' with " << executor->terminatedTasks.size()
<< " terminated tasks, " << executor->completedTasks.size()
<< " completed tasks";
@@ -1528,8 +1528,8 @@ void Slave::_runTask(
foreach (const Resource& resource, checkpointedExecutorResources) {
if (!checkpointedResources.contains(resource)) {
LOG(WARNING) << "Unknown checkpointed resource " << resource
- << " for executor " << task.executor().executor_id()
- << " of framework " << frameworkId;
+ << " for executor '" << task.executor().executor_id()
+ << "' of framework " << frameworkId;
const StatusUpdate update = protobuf::createStatusUpdate(
frameworkId,
@@ -1618,7 +1618,7 @@ void Slave::_runTask(
// Queue task if the executor has not yet registered.
LOG(INFO) << "Queuing task '" << task.task_id()
- << "' for executor " << *executor;
+ << "' for executor '" << *executor << "'";
executor->queuedTasks[task.task_id()] = task;
break;
@@ -1631,7 +1631,7 @@ void Slave::_runTask(
// Queue task until the containerizer is updated with new
// resource limits (MESOS-998).
LOG(INFO) << "Queuing task '" << task.task_id()
- << "' for executor " << *executor;
+ << "' for executor '" << *executor << "'";
executor->queuedTasks[task.task_id()] = task;
@@ -1783,7 +1783,7 @@ void Slave::runTasks(
executor->addTask(task);
LOG(INFO) << "Sending queued task '" << task.task_id()
- << "' to executor " << *executor;
+ << "' to executor '" << *executor << "'";
RunTaskMessage message;
message.mutable_framework()->MergeFrom(framework->info);
@@ -1923,8 +1923,8 @@ void Slave::killTask(
// task within a timeout.
if (executor->queuedTasks.empty()) {
CHECK(executor->launchedTasks.empty())
- << " Unregistered executor " << executor->id
- << " has launched tasks";
+ << " Unregistered executor '" << executor->id
+ << "' has launched tasks";
LOG(WARNING) << "Killing the unregistered executor " << *executor
<< " because it has no tasks";
@@ -1971,8 +1971,8 @@ void Slave::killTask(
break;
}
default:
- LOG(FATAL) << "Executor " << *executor
- << " is in unexpected state " << executor->state;
+ LOG(FATAL) << "Executor '" << *executor
+ << "' is in unexpected state " << executor->state;
break;
}
}
@@ -2075,7 +2075,7 @@ void Slave::schedulerMessage(
<< state;
if (state != RUNNING) {
- LOG(WARNING) << "Dropping message from framework "<< frameworkId
+ LOG(WARNING) << "Dropping message from framework " << frameworkId
<< " because the slave is in " << state << " state";
metrics.invalid_framework_messages++;
return;
@@ -2084,7 +2084,7 @@ void Slave::schedulerMessage(
Framework* framework = getFramework(frameworkId);
if (framework == NULL) {
- LOG(WARNING) << "Dropping message from framework "<< frameworkId
+ LOG(WARNING) << "Dropping message from framework " << frameworkId
<< " because framework does not exist";
metrics.invalid_framework_messages++;
return;
@@ -2095,7 +2095,7 @@ void Slave::schedulerMessage(
<< framework->state;
if (framework->state == Framework::TERMINATING) {
- LOG(WARNING) << "Dropping message from framework "<< frameworkId
+ LOG(WARNING) << "Dropping message from framework " << frameworkId
<< " because framework is terminating";
metrics.invalid_framework_messages++;
return;
@@ -2132,8 +2132,8 @@ void Slave::schedulerMessage(
break;
}
default:
- LOG(FATAL) << "Executor " << *executor
- << " is in unexpected state " << executor->state;
+ LOG(FATAL) << "Executor '" << *executor
+ << "' is in unexpected state " << executor->state;
break;
}
}
@@ -2148,7 +2148,7 @@ void Slave::updateFramework(
<< state;
if (state != RUNNING) {
- LOG(WARNING) << "Dropping updateFramework message for "<< frameworkId
+ LOG(WARNING) << "Dropping updateFramework message for " << frameworkId
<< " because the slave is in " << state << " state";
metrics.invalid_framework_messages++;
return;
@@ -2420,7 +2420,7 @@ void Slave::registerExecutor(
Framework* framework = getFramework(frameworkId);
if (framework == NULL) {
- LOG(WARNING) << " Shutting down executor '" << executorId
+ LOG(WARNING) << "Shutting down executor '" << executorId
<< "' as the framework " << frameworkId
<< " does not exist";
@@ -2433,7 +2433,7 @@ void Slave::registerExecutor(
<< framework->state;
if (framework->state == Framework::TERMINATING) {
- LOG(WARNING) << " Shutting down executor '" << executorId
+ LOG(WARNING) << "Shutting down executor '" << executorId
<< "' as the framework " << frameworkId
<< " is terminating";
@@ -2542,8 +2542,8 @@ void Slave::reregisterExecutor(
return;
}
- LOG(INFO) << "Re-registering executor " << executorId
- << " of framework " << frameworkId;
+ LOG(INFO) << "Re-registering executor '" << executorId
+ << "' of framework " << frameworkId;
CHECK(frameworks.contains(frameworkId))
<< "Unknown framework " << frameworkId;
@@ -2555,7 +2555,7 @@ void Slave::reregisterExecutor(
<< framework->state;
if (framework->state == Framework::TERMINATING) {
- LOG(WARNING) << " Shutting down executor '" << executorId
+ LOG(WARNING) << "Shutting down executor '" << executorId
<< "' as the framework " << frameworkId
<< " is terminating";
@@ -2628,8 +2628,8 @@ void Slave::reregisterExecutor(
if (task->state() == TASK_STAGING &&
!unackedTasks.contains(task->task_id())) {
LOG(INFO) << "Transitioning STAGED task " << task->task_id()
- << " to LOST because it is unknown to the executor "
- << executorId;
+ << " to LOST because it is unknown to the executor '"
+ << executorId << "'";
const StatusUpdate update = protobuf::createStatusUpdate(
frameworkId,
@@ -2888,8 +2888,8 @@ void Slave::statusUpdate(StatusUpdate update, const UPID& pid)
executor->pid.isSome() &&
executor->pid.get() != pid) {
LOG(WARNING) << "Received status update " << update << " from " << pid
- << " on behalf of a different executor " << executor->id
- << " (" << executor->pid.get() << ")";
+ << " on behalf of a different executor '" << executor->id
+ << "' (" << executor->pid.get() << ")";
}
metrics.valid_status_updates++;
@@ -2947,8 +2947,8 @@ void Slave::_statusUpdate(
{
if (future.isSome() && !future->isReady()) {
LOG(ERROR) << "Failed to update resources for container " << containerId
- << " of executor " << executorId
- << " running task " << update.status().task_id()
+ << " of executor '" << executorId
+ << "' running task " << update.status().task_id()
<< " on status update for terminal task, destroying container: "
<< (future->isFailed() ? future->failure() : "discarded");
@@ -3095,8 +3095,8 @@ void Slave::executorMessage(
<< state;
if (state != RUNNING) {
- LOG(WARNING) << "Dropping framework message from executor "
- << executorId << " to framework " << frameworkId
+ LOG(WARNING) << "Dropping framework message from executor '"
+ << executorId << "' to framework " << frameworkId
<< " because the slave is in " << state << " state";
metrics.invalid_framework_messages++;
return;
@@ -3104,8 +3104,8 @@ void Slave::executorMessage(
Framework* framework = getFramework(frameworkId);
if (framework == NULL) {
- LOG(WARNING) << "Cannot send framework message from executor "
- << executorId << " to framework " << frameworkId
+ LOG(WARNING) << "Cannot send framework message from executor '"
+ << executorId << "' to framework " << frameworkId
<< " because framework does not exist";
metrics.invalid_framework_messages++;
return;
@@ -3116,8 +3116,8 @@ void Slave::executorMessage(
<< framework->state;
if (framework->state == Framework::TERMINATING) {
- LOG(WARNING) << "Ignoring framework message from executor "
- << executorId << " to framework " << frameworkId
+ LOG(WARNING) << "Ignoring framework message from executor '"
+ << executorId << "' to framework " << frameworkId
<< " because framework is terminating";
metrics.invalid_framework_messages++;
return;
@@ -3365,8 +3365,8 @@ void Slave::executorLaunched(
if (!future.isReady()) {
LOG(ERROR) << "Container '" << containerId
<< "' for executor '" << executorId
- << "' of framework '" << frameworkId
- << "' failed to start: "
+ << "' of framework " << frameworkId
+ << " failed to start: "
<< (future.isFailed() ? future.failure() : " future discarded");
++metrics.container_launch_errors;
@@ -3391,10 +3391,10 @@ void Slave::executorLaunched(
} else if (!future.get()) {
LOG(ERROR) << "Container '" << containerId
<< "' for executor '" << executorId
- << "' of framework '" << frameworkId
- << "' failed to start: None of the enabled containerizers ("
+ << "' of framework " << frameworkId
+ << " failed to start: None of the enabled containerizers ("
<< flags.containerizers << ") could create a container for the "
- << "provided TaskInfo/ExecutorInfo message.";
+ << "provided TaskInfo/ExecutorInfo message";
++metrics.container_launch_errors;
return;
@@ -3414,8 +3414,8 @@ void Slave::executorLaunched(
if (framework->state == Framework::TERMINATING) {
LOG(WARNING) << "Killing executor '" << executorId
- << "' of framework '" << frameworkId
- << "' because the framework is terminating";
+ << "' of framework " << frameworkId
+ << " because the framework is terminating";
containerizer->destroy(containerId);
return;
}
@@ -3423,15 +3423,16 @@ void Slave::executorLaunched(
Executor* executor = framework->getExecutor(executorId);
if (executor == NULL) {
LOG(WARNING) << "Killing unknown executor '" << executorId
- << "' of framework '" << frameworkId << "'";
+ << "' of framework " << frameworkId;
containerizer->destroy(containerId);
return;
}
switch (executor->state) {
case Executor::TERMINATING:
- LOG(WARNING) << "Killing executor " << *executor
+ LOG(WARNING) << "Killing executor '" << *executor
<< "' because the executor is terminating";
+
containerizer->destroy(containerId);
break;
case Executor::REGISTERING:
@@ -3439,8 +3440,9 @@ void Slave::executorLaunched(
break;
case Executor::TERMINATED:
default:
- LOG(FATAL) << "Executor " << *executor
+ LOG(FATAL) << "Executor '" << *executor
<< "' is in an unexpected state " << executor->state;
+
break;
}
}
@@ -3459,8 +3461,8 @@ void Slave::executorTerminated(
// this occurs.
if (!termination.isReady()) {
LOG(ERROR) << "Termination of executor '" << executorId
- << "' of framework '" << frameworkId
- << "' failed: "
+ << "' of framework " << frameworkId
+ << " failed: "
<< (termination.isFailed()
? termination.failure()
: "discarded");
@@ -3725,7 +3727,7 @@ void Slave::shutdownExecutor(
}
LOG(INFO) << "Asked to shut down executor '" << executorId
- << "' of framework "<< frameworkId << " by " << from;
+ << "' of framework " << frameworkId << " by " << from;
CHECK(state == RECOVERING || state == DISCONNECTED ||
state == RUNNING || state == TERMINATING)
@@ -3908,8 +3910,8 @@ void Slave::registerExecutorTimeout(
// Ignore the registration timeout.
break;
case Executor::REGISTERING: {
- LOG(INFO) << "Terminating executor " << *executor
- << " because it did not register within "
+ LOG(INFO) << "Terminating executor '" << *executor
+ << "' because it did not register within "
<< flags.executor_registration_timeout;
// Immediately kill the executor.
@@ -4091,17 +4093,18 @@ Future<Nothing> Slave::_recover()
// Note that recovered http executors are marked with
// http.isNone and pid.isNone (see comments in the header).
if (executor->pid.isSome() && executor->pid.get()) {
- LOG(INFO) << "Sending reconnect request to executor " << *executor;
+ LOG(INFO)
+ << "Sending reconnect request to executor '" << *executor << "'";
ReconnectExecutorMessage message;
message.mutable_slave_id()->MergeFrom(info.id());
send(executor->pid.get(), message);
} else if (executor->pid.isNone()) {
- LOG(INFO) << "Waiting for executor " << *executor
- << " to subscribe";
+ LOG(INFO) << "Waiting for executor '" << *executor
+ << "' to subscribe";
} else {
- LOG(INFO) << "Unable to reconnect to executor " << *executor
- << " because no pid or http checkpoint file was found";
+ LOG(INFO) << "Unable to reconnect to executor '" << *executor
+ << "' because no pid or http checkpoint file was found";
}
} else {
// For PID-based executors, we ask the executor to shut
@@ -4110,11 +4113,11 @@ Future<Nothing> Slave::_recover()
// when the executor subscribes.
if ((executor->pid.isSome() && executor->pid.get()) ||
executor->pid.isNone()) {
- LOG(INFO) << "Sending shutdown to executor " << *executor;
+ LOG(INFO) << "Sending shutdown to executor '" << *executor << "'";
_shutdownExecutor(framework, executor);
} else {
- LOG(INFO) << "Killing executor " << *executor
- << " because no pid or http checkpoint file was found";
+ LOG(INFO) << "Killing executor '" << *executor
+ << "' because no pid or http checkpoint file was found";
containerizer->destroy(executor->containerId);
}
@@ -4492,8 +4495,8 @@ void Slave::_qosCorrections(const Future<list<QoSCorrection>>& future)
<< executor->state << " state";
break;
default:
- LOG(FATAL) << "Executor " << *executor
- << " is in unexpected state " << executor->state;
+ LOG(FATAL) << "Executor '" << *executor
+ << "' is in unexpected state " << executor->state;
break;
}
} else {
http://git-wip-us.apache.org/repos/asf/mesos/blob/d69e786e/src/slave/state.cpp
----------------------------------------------------------------------
diff --git a/src/slave/state.cpp b/src/slave/state.cpp
index 81c4b96..d14159f 100644
--- a/src/slave/state.cpp
+++ b/src/slave/state.cpp
@@ -287,8 +287,8 @@ Try<FrameworkState> FrameworkState::recover(
ExecutorState::recover(rootDir, slaveId, frameworkId, executorId, strict);
if (executor.isError()) {
- return Error("Failed to recover executor " + executorId.value() +
- ": " + executor.error());
+ return Error("Failed to recover executor '" + executorId.value() +
+ "': " + executor.error());
}
state.executors[executorId] = executor.get();
http://git-wip-us.apache.org/repos/asf/mesos/blob/d69e786e/src/tests/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer.cpp b/src/tests/containerizer.cpp
index 451c7be..e3cf10b 100644
--- a/src/tests/containerizer.cpp
+++ b/src/tests/containerizer.cpp
@@ -88,13 +88,13 @@ Future<bool> TestContainerizer::_launch(
bool checkpoint)
{
CHECK(!drivers.contains(containerId))
- << "Failed to launch executor " << executorInfo.executor_id()
- << " of framework " << executorInfo.framework_id()
+ << "Failed to launch executor '" << executorInfo.executor_id()
+ << "' of framework " << executorInfo.framework_id()
<< " because it is already launched";
CHECK(executors.contains(executorInfo.executor_id()))
- << "Failed to launch executor " << executorInfo.executor_id()
- << " of framework " << executorInfo.framework_id()
+ << "Failed to launch executor '" << executorInfo.executor_id()
+ << "' of framework " << executorInfo.framework_id()
<< " because it is unknown to the containerizer";
// Store mapping from (frameworkId, executorId) -> containerId to facilitate