Fixed an exception raised in the master related to task statuses.
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 4f4db93..e18df7c 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -1549,7 +1549,8 @@
LOG(INFO) << "Status update " << update << " from " << pid;
// TODO(brenden) Consider wiping the `data` and `message` fields?
- if (task->state() == status.state()) {
+ if (task->statuses_size() > 0 &&
+ task->statuses(task->statuses_size() - 1).state() == task->state()) {
task->mutable_statuses()->RemoveLast();
}
task->add_statuses()->CopyFrom(status);
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 75d9e5d..9a8b82f 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -3284,7 +3284,8 @@
if (launchedTasks.contains(status.task_id())) {
Task* task = launchedTasks[status.task_id()];
// TODO(brenden): Consider wiping the `data` and `message` fields?
- if (task->state() == status.state()) {
+ if (task->statuses_size() > 0 &&
+ task->statuses(task->statuses_size() - 1).state() == task->state()) {
task->mutable_statuses()->RemoveLast();
}
task->add_statuses()->CopyFrom(status);