You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by me...@apache.org on 2015/03/24 02:53:49 UTC

mesos git commit: Remove the checkpoint variable entirely from slave/flags.hpp.

Repository: mesos
Updated Branches:
  refs/heads/master 89186759a -> b2f73095f


Remove the checkpoint variable entirely from slave/flags.hpp.

As a number of tests rely on the checkpointing flag to be false, a few
tests had to be adapted. Removed the following test as the tested logic
is specific to (old) non-checkpointing slaves:
SlaveRecoveryTest.NonCheckpointingSlave: This test checks whether a
non-checkpointing slave is not scheduled to a checkpointing framework.
It can be removed as all slaves are now checkpointing slaves.

Review: https://reviews.apache.org/r/31539


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/b2f73095
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/b2f73095
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/b2f73095

Branch: refs/heads/master
Commit: b2f73095fd168a75c2754f26d5368f4cff414752
Parents: 8918675
Author: Joerg Schad <jo...@mesosphere.io>
Authored: Mon Mar 23 17:03:28 2015 -0700
Committer: Adam B <ad...@mesosphere.io>
Committed: Mon Mar 23 18:53:19 2015 -0700

----------------------------------------------------------------------
 include/mesos/mesos.proto                 |  2 +
 src/slave/flags.hpp                       | 12 ++---
 src/slave/slave.cpp                       | 28 +++++------
 src/tests/disk_quota_tests.cpp            |  1 -
 src/tests/docker_containerizer_tests.cpp  | 10 ----
 src/tests/fault_tolerance_tests.cpp       |  4 +-
 src/tests/gc_tests.cpp                    | 10 ++--
 src/tests/master_allocator_tests.cpp      |  5 +-
 src/tests/master_authorization_tests.cpp  | 22 ++++-----
 src/tests/master_tests.cpp                | 39 +++++----------
 src/tests/master_validation_tests.cpp     |  1 -
 src/tests/mesos.cpp                       |  3 --
 src/tests/partition_tests.cpp             |  5 +-
 src/tests/persistent_volume_tests.cpp     |  3 --
 src/tests/reconciliation_tests.cpp        |  3 +-
 src/tests/slave_recovery_tests.cpp        | 67 +-------------------------
 src/tests/status_update_manager_tests.cpp | 25 +++-------
 17 files changed, 62 insertions(+), 178 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/include/mesos/mesos.proto
----------------------------------------------------------------------
diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto
index faa56cc..3c592d5 100644
--- a/include/mesos/mesos.proto
+++ b/include/mesos/mesos.proto
@@ -315,6 +315,8 @@ message SlaveInfo {
   repeated Resource resources = 3;
   repeated Attribute attributes = 5;
   optional SlaveID id = 6;
+  // TODO(joerg84): Remove checkpoint field as with 0.22.0
+  // slave checkpointing is enabled for all slaves (MESOS-2317).
   optional bool checkpoint = 7 [default = false];
 }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/slave/flags.hpp
----------------------------------------------------------------------
diff --git a/src/slave/flags.hpp b/src/slave/flags.hpp
index dbaf5f5..3da71af 100644
--- a/src/slave/flags.hpp
+++ b/src/slave/flags.hpp
@@ -47,7 +47,6 @@ class Flags : public logging::Flags
 {
 public:
   Flags()
-    : checkpoint(true)
   {
     add(&Flags::hostname,
         "hostname",
@@ -180,17 +179,14 @@ public:
         "reconnect: Reconnect with any old live executors.\n"
         "cleanup  : Kill any old live executors and exit.\n"
         "           Use this option when doing an incompatible slave\n"
-        "           or executor upgrade!).\n"
-        "NOTE: If checkpointed slave doesn't exist, no recovery is performed\n"
-        "      and the slave registers with the master as a new slave.",
+        "           or executor upgrade!).",
         "reconnect");
 
     add(&Flags::recovery_timeout,
         "recovery_timeout",
         "Amount of time alloted for the slave to recover. If the slave takes\n"
         "longer than recovery_timeout to recover, any executors that are\n"
-        "waiting to reconnect to the slave will self-terminate.\n"
-        "NOTE: This flag is only applicable when checkpoint is enabled.\n",
+        "waiting to reconnect to the slave will self-terminate.\n",
         RECOVERY_TIMEOUT);
 
     add(&Flags::strict,
@@ -482,9 +478,7 @@ public:
   double gc_disk_headroom;
   Duration disk_watch_interval;
   Duration resource_monitoring_interval;
-  // TODO(cmaloney): Remove checkpoint variable entirely, fixing tests
-  // which depend upon it. See MESOS-444 for more details.
-  bool checkpoint;
+
   std::string recover;
   Duration recovery_timeout;
   bool strict;

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index f1f2100..c7e65a6 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -325,15 +325,15 @@ void Slave::initialize()
   info.set_port(self().address.port);
   info.mutable_resources()->CopyFrom(resources.get());
   info.mutable_attributes()->CopyFrom(attributes);
-  info.set_checkpoint(flags.checkpoint);
+  // Checkpointing of slaves is always enabled.
+  info.set_checkpoint(true);
 
   LOG(INFO) << "Slave hostname: " << info.hostname();
-  LOG(INFO) << "Slave checkpoint: " << stringify(flags.checkpoint);
-  if (!flags.checkpoint) {
-    LOG(WARNING) << "Disabling checkpointing is deprecated and the --checkpoint"
-                    " flag will be removed in a future release. Please avoid"
-                    " using this flag";
-  }
+  // Checkpointing of slaves is always enabled.
+  // We keep this line to be compatible with
+  // older monitoring tools.
+  // TODO(joerg84): Delete after 0.23.
+  LOG(INFO) << "Slave checkpoint: " << stringify(true);
 
   statusUpdateManager->initialize(defer(self(), &Slave::forward, lambda::_1));
 
@@ -786,16 +786,14 @@ void Slave::registered(const UPID& from, const SlaveID& slaveId)
 
       info.mutable_id()->CopyFrom(slaveId); // Store the slave id.
 
-      if (flags.checkpoint) {
-        // Create the slave meta directory.
-        paths::createSlaveDirectory(metaDir, slaveId);
+      // Create the slave meta directory.
+      paths::createSlaveDirectory(metaDir, slaveId);
 
-        // Checkpoint slave info.
-        const string& path = paths::getSlaveInfoPath(metaDir, slaveId);
+      // Checkpoint slave info.
+      const string& path = paths::getSlaveInfoPath(metaDir, slaveId);
 
-        VLOG(1) << "Checkpointing SlaveInfo to '" << path << "'";
-        CHECK_SOME(state::checkpoint(path, info));
-      }
+      VLOG(1) << "Checkpointing SlaveInfo to '" << path << "'";
+      CHECK_SOME(state::checkpoint(path, info));
 
       // If we don't get a ping from the master, trigger a
       // re-registration. This needs to be done once registered,

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/disk_quota_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/disk_quota_tests.cpp b/src/tests/disk_quota_tests.cpp
index 9c3a881..ca5ea86 100644
--- a/src/tests/disk_quota_tests.cpp
+++ b/src/tests/disk_quota_tests.cpp
@@ -413,7 +413,6 @@ TEST_F(DiskQuotaTest, SlaveRecovery)
   ASSERT_SOME(master);
 
   slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
   flags.isolation = "posix/cpu,posix/mem,posix/disk";
   flags.container_disk_watch_interval = Milliseconds(1);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/docker_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/docker_containerizer_tests.cpp b/src/tests/docker_containerizer_tests.cpp
index 06cd3d8..fdd706a 100644
--- a/src/tests/docker_containerizer_tests.cpp
+++ b/src/tests/docker_containerizer_tests.cpp
@@ -1777,11 +1777,6 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_SlaveRecoveryTaskContainer)
 
   slave::Flags flags = CreateSlaveFlags();
 
-  // Setup recovery slave flags.
-  flags.checkpoint = true;
-  flags.recover = "reconnect";
-  flags.strict = true;
-
   MockDocker* mockDocker = new MockDocker(tests::flags.docker);
   Shared<Docker> docker(mockDocker);
 
@@ -1950,11 +1945,6 @@ TEST_F(DockerContainerizerTest,
 
   slave::Flags flags = CreateSlaveFlags();
 
-  // Setup recovery slave flags.
-  flags.checkpoint = true;
-  flags.recover = "reconnect";
-  flags.strict = true;
-
   MockDocker* mockDocker = new MockDocker(tests::flags.docker);
   Shared<Docker> docker(mockDocker);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/fault_tolerance_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/fault_tolerance_tests.cpp b/src/tests/fault_tolerance_tests.cpp
index 9ac75b1..a637c32 100644
--- a/src/tests/fault_tolerance_tests.cpp
+++ b/src/tests/fault_tolerance_tests.cpp
@@ -120,7 +120,9 @@ TEST_F(FaultToleranceTest, SlaveLost)
   EXPECT_CALL(sched, slaveLost(&driver, offers.get()[0].slave_id()))
     .WillOnce(FutureSatisfy(&slaveLost));
 
-  ShutdownSlaves();
+  // Stop the checkpointing slave with explicit shutdown message
+  // so that the master does not wait for it to reconnect.
+  Stop(slave.get(), true);
 
   AWAIT_READY(offerRescinded);
   AWAIT_READY(slaveLost);

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/gc_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/gc_tests.cpp b/src/tests/gc_tests.cpp
index deaa6b1..5666cd1 100644
--- a/src/tests/gc_tests.cpp
+++ b/src/tests/gc_tests.cpp
@@ -249,6 +249,8 @@ TEST_F(GarbageCollectorTest, Prune)
 class GarbageCollectorIntegrationTest : public MesosTest {};
 
 
+// This test ensures that garbage collection removes
+// the slave working directory after a slave restart.
 TEST_F(GarbageCollectorIntegrationTest, Restart)
 {
   Try<PID<Master> > master = StartMaster();
@@ -313,8 +315,6 @@ TEST_F(GarbageCollectorIntegrationTest, Restart)
 
   ASSERT_TRUE(os::exists(slaveDir));
 
-  Clock::pause();
-
   EXPECT_CALL(exec, shutdown(_))
     .Times(AtMost(1));
 
@@ -325,10 +325,14 @@ TEST_F(GarbageCollectorIntegrationTest, Restart)
   EXPECT_CALL(sched, slaveLost(_, _))
     .WillOnce(FutureSatisfy(&slaveLost));
 
-  Stop(slave.get());
+  // Stop the slave with explicit shutdown as otherwise with
+  // checkpointing the master will wait for the slave to reconnect.
+  Stop(slave.get(), true);
 
   AWAIT_READY(slaveLost);
 
+  Clock::pause();
+
   Future<Nothing> schedule =
     FUTURE_DISPATCH(_, &GarbageCollectorProcess::schedule);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/master_allocator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_allocator_tests.cpp b/src/tests/master_allocator_tests.cpp
index a432d02..03a1bb8 100644
--- a/src/tests/master_allocator_tests.cpp
+++ b/src/tests/master_allocator_tests.cpp
@@ -511,7 +511,6 @@ TYPED_TEST(MasterAllocatorTest, FrameworkExited)
   TestContainerizer containerizer(execs);
 
   slave::Flags flags = this->CreateSlaveFlags();
-
   flags.resources = Some("cpus:3;mem:1024");
 
   EXPECT_CALL(this->allocator, addSlave(_, _, _, _));
@@ -704,7 +703,9 @@ TYPED_TEST(MasterAllocatorTest, SlaveLost)
 
   EXPECT_CALL(sched, slaveLost(_, _));
 
-  this->ShutdownSlaves();
+  // Stop the checkpointing slave with explicit shutdown message
+  // so that the master does not wait for it to reconnect.
+  this->Stop(slave1.get(), true);
 
   AWAIT_READY(removeSlave);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/master_authorization_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_authorization_tests.cpp b/src/tests/master_authorization_tests.cpp
index ff706ed..ac79303 100644
--- a/src/tests/master_authorization_tests.cpp
+++ b/src/tests/master_authorization_tests.cpp
@@ -341,8 +341,9 @@ TEST_F(MasterAuthorizationTest, SlaveRemoved)
   EXPECT_CALL(sched, slaveLost(&driver, _))
     .WillOnce(FutureSatisfy(&slaveLost));
 
-  // Now stop the slave.
-  Stop(slave.get());
+  // Stop the slave with explicit shutdown as otherwise with
+  // checkpointing the master will wait for the slave to reconnect.
+  Stop(slave.get(), true);
 
   AWAIT_READY(slaveLost);
 
@@ -385,16 +386,12 @@ TEST_F(MasterAuthorizationTest, SlaveRemoved)
 TEST_F(MasterAuthorizationTest, SlaveDisconnected)
 {
   MockAuthorizer authorizer;
-  Try<PID<Master> > master = StartMaster(&authorizer);
+  Try<PID<Master>> master = StartMaster(&authorizer);
   ASSERT_SOME(master);
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  // Create a checkpointing slave so that a disconnected slave is not
-  // immediately removed.
-  slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
-  Try<PID<Slave> > slave = StartSlave(&exec, flags);
+  Try<PID<Slave> > slave = StartSlave(&exec);
   ASSERT_SOME(slave);
 
   MockScheduler sched;
@@ -436,8 +433,9 @@ TEST_F(MasterAuthorizationTest, SlaveDisconnected)
   Future<Nothing> deactivateSlave =
     FUTURE_DISPATCH(_, &MesosAllocatorProcess::deactivateSlave);
 
-  // Now stop the slave.
-  Stop(slave.get());
+  // Stop the checkpointing slave with explicit shutdown message
+  // so that the master does not wait for it to reconnect.
+  Stop(slave.get(), true);
 
   AWAIT_READY(deactivateSlave);
 
@@ -465,10 +463,10 @@ TEST_F(MasterAuthorizationTest, SlaveDisconnected)
   EXPECT_EQ(1u, stats.values["master/tasks_lost"]);
   EXPECT_EQ(1u,
             stats.values.count(
-                "master/task_lost/source_master/reason_slave_disconnected"));
+                "master/task_lost/source_master/reason_slave_removed"));
   EXPECT_EQ(
       1u,
-      stats.values["master/task_lost/source_master/reason_slave_disconnected"]);
+      stats.values["master/task_lost/source_master/reason_slave_removed"]);
 
   driver.stop();
   driver.join();

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/master_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp
index e69348b..78e775d 100644
--- a/src/tests/master_tests.cpp
+++ b/src/tests/master_tests.cpp
@@ -456,9 +456,8 @@ TEST_F(MasterTest, KillUnknownTaskSlaveInTransition)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  // Start a checkpointing slave.
+  // Reuse slaveFlags so both StartSlave() use the same work_dir.
   slave::Flags slaveFlags = CreateSlaveFlags();
-  slaveFlags.checkpoint = true;
 
   Try<PID<Slave> > slave = StartSlave(&exec, slaveFlags);
   ASSERT_SOME(slave);
@@ -1301,7 +1300,6 @@ TEST_F(MasterTest, LaunchAcrossSlavesTest)
   Resources twoSlaves = fullSlave + fullSlave;
 
   slave::Flags flags = CreateSlaveFlags();
-
   flags.resources = Option<string>(stringify(fullSlave));
 
   Try<PID<Slave> > slave1 = StartSlave(&containerizer, flags);
@@ -1331,7 +1329,11 @@ TEST_F(MasterTest, LaunchAcrossSlavesTest)
     .WillOnce(FutureArg<1>(&offers2))
     .WillRepeatedly(Return()); // Ignore subsequent offers.
 
-  Try<PID<Slave> > slave2 = StartSlave(&containerizer, flags);
+  // Create new Flags as we require another work_dir for checkpoints.
+  slave::Flags flags2 = CreateSlaveFlags();
+  flags2.resources = Option<string>(stringify(fullSlave));
+
+  Try<PID<Slave>> slave2 = StartSlave(&containerizer, flags2);
   ASSERT_SOME(slave2);
 
   AWAIT_READY(offers2);
@@ -1681,13 +1683,9 @@ TEST_F(MasterTest, RecoveredSlaveDoesNotReregister)
   Future<SlaveRegisteredMessage> slaveRegisteredMessage =
     FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get(), _);
 
+  // Reuse slaveFlags so both StartSlave() use the same work_dir.
   slave::Flags slaveFlags = this->CreateSlaveFlags();
 
-  // Setup recovery slave flags.
-  slaveFlags.checkpoint = true;
-  slaveFlags.recover = "reconnect";
-  slaveFlags.strict = true;
-
   Try<PID<Slave> > slave = StartSlave(slaveFlags);
   ASSERT_SOME(slave);
 
@@ -1761,13 +1759,9 @@ TEST_F(MasterTest, NonStrictRegistryWriteOnly)
   Future<SlaveRegisteredMessage> slaveRegisteredMessage =
     FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get(), _);
 
+  // Reuse slaveFlags so both StartSlave() use the same work_dir.
   slave::Flags slaveFlags = this->CreateSlaveFlags();
 
-  // Setup recovery slave flags.
-  slaveFlags.checkpoint = true;
-  slaveFlags.recover = "reconnect";
-  slaveFlags.strict = true;
-
   Try<PID<Slave> > slave = StartSlave(slaveFlags);
   ASSERT_SOME(slave);
 
@@ -1916,11 +1910,9 @@ TEST_F(MasterTest, CancelRecoveredSlaveRemoval)
   Future<SlaveRegisteredMessage> slaveRegisteredMessage =
     FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get(), _);
 
-  // Start a slave with checkpointing.
+  // Reuse slaveFlags so both StartSlave() use the same work_dir.
   slave::Flags slaveFlags = CreateSlaveFlags();
-  slaveFlags.checkpoint = true;
-  slaveFlags.recover = "reconnect";
-  slaveFlags.strict = true;
+
   Try<PID<Slave> > slave = StartSlave(slaveFlags);
   ASSERT_SOME(slave);
 
@@ -2011,13 +2003,9 @@ TEST_F(MasterTest, RecoveredSlaveReregisters)
   Future<SlaveRegisteredMessage> slaveRegisteredMessage =
     FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get(), _);
 
+  // Reuse slaveFlags so both StartSlave() use the same work_dir.
   slave::Flags slaveFlags = this->CreateSlaveFlags();
 
-  // Setup recovery slave flags.
-  slaveFlags.checkpoint = true;
-  slaveFlags.recover = "reconnect";
-  slaveFlags.strict = true;
-
   Try<PID<Slave> > slave = StartSlave(slaveFlags);
   ASSERT_SOME(slave);
 
@@ -2960,10 +2948,7 @@ TEST_F(MasterTest, SlaveActiveEndpoint)
   Future<process::Message> slaveRegisteredMessage =
     FUTURE_MESSAGE(Eq(SlaveRegisteredMessage().GetTypeName()), _, _);
 
-  // Start a checkpointing slave.
-  slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
-  Try<PID<Slave>> slave = StartSlave(flags);
+  Try<PID<Slave>> slave = StartSlave();
   ASSERT_SOME(slave);
 
   AWAIT_READY(slaveRegisteredMessage);

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/master_validation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_validation_tests.cpp b/src/tests/master_validation_tests.cpp
index c874292..4f2ad58 100644
--- a/src/tests/master_validation_tests.cpp
+++ b/src/tests/master_validation_tests.cpp
@@ -206,7 +206,6 @@ TEST_F(CreateOperationValidationTest, InsufficientDiskResource)
   ASSERT_SOME(master);
 
   slave::Flags slaveFlags = CreateSlaveFlags();
-  slaveFlags.checkpoint = true;
   slaveFlags.resources = "disk(role1):1024";
 
   Try<PID<Slave>> slave = StartSlave(slaveFlags);

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/mesos.cpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.cpp b/src/tests/mesos.cpp
index c8f43d2..11e8833 100644
--- a/src/tests/mesos.cpp
+++ b/src/tests/mesos.cpp
@@ -165,9 +165,6 @@ slave::Flags MesosTest::CreateSlaveFlags()
 
   flags.credential = path;
 
-  // TODO(vinod): Consider making this true and fixing the tests.
-  flags.checkpoint = false;
-
   flags.resources = "cpus:2;mem:1024;disk:1024;ports:[31000-32000]";
 
   flags.registration_backoff_factor = Milliseconds(10);

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/partition_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/partition_tests.cpp b/src/tests/partition_tests.cpp
index bb96aed..1018e47 100644
--- a/src/tests/partition_tests.cpp
+++ b/src/tests/partition_tests.cpp
@@ -434,10 +434,7 @@ TEST_F(PartitionTest, OneWayPartitionMasterToSlave)
   // Ensure a ping reaches the slave.
   Future<Message> ping = FUTURE_MESSAGE(Eq("PING"), _, _);
 
-  // Start a checkpointing slave.
-  slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
-  Try<PID<Slave> > slave = StartSlave(flags);
+  Try<PID<Slave>> slave = StartSlave();
   ASSERT_SOME(slave);
 
   AWAIT_READY(slaveRegisteredMessage);

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/persistent_volume_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/persistent_volume_tests.cpp b/src/tests/persistent_volume_tests.cpp
index b617117..c5f72d5 100644
--- a/src/tests/persistent_volume_tests.cpp
+++ b/src/tests/persistent_volume_tests.cpp
@@ -182,7 +182,6 @@ TEST_F(PersistentVolumeTest, ResourcesCheckpointing)
   ASSERT_SOME(master);
 
   slave::Flags slaveFlags = CreateSlaveFlags();
-  slaveFlags.checkpoint = true;
   slaveFlags.resources = "disk(role1):1024";
 
   Try<PID<Slave>> slave = StartSlave(slaveFlags);
@@ -413,8 +412,6 @@ TEST_F(PersistentVolumeTest, IncompatibleCheckpointedResources)
   ASSERT_SOME(master);
 
   slave::Flags slaveFlags = CreateSlaveFlags();
-
-  slaveFlags.checkpoint = true;
   slaveFlags.resources = "disk(role1):1024";
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/reconciliation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/reconciliation_tests.cpp b/src/tests/reconciliation_tests.cpp
index acd7002..6042d8c 100644
--- a/src/tests/reconciliation_tests.cpp
+++ b/src/tests/reconciliation_tests.cpp
@@ -383,9 +383,8 @@ TEST_F(ReconciliationTest, SlaveInTransition)
   Try<PID<Master> > master = StartMaster();
   ASSERT_SOME(master);
 
-  // Start a checkpointing slave.
+  // Reuse slaveFlags so both StartSlave() use the same work_dir.
   slave::Flags slaveFlags = CreateSlaveFlags();
-  slaveFlags.checkpoint = true;
 
   Future<SlaveRegisteredMessage> slaveRegisteredMessage =
     FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/slave_recovery_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/slave_recovery_tests.cpp b/src/tests/slave_recovery_tests.cpp
index 53adae0..87f4a6a 100644
--- a/src/tests/slave_recovery_tests.cpp
+++ b/src/tests/slave_recovery_tests.cpp
@@ -134,14 +134,7 @@ class SlaveRecoveryTest : public ContainerizerTest<T>
 public:
   virtual slave::Flags CreateSlaveFlags()
   {
-    slave::Flags flags = ContainerizerTest<T>::CreateSlaveFlags();
-
-    // Setup recovery slave flags.
-    flags.checkpoint = true;
-    flags.recover = "reconnect";
-    flags.strict = true;
-
-    return flags;
+    return ContainerizerTest<T>::CreateSlaveFlags();
   }
 };
 
@@ -1237,64 +1230,6 @@ TYPED_TEST(SlaveRecoveryTest, NonCheckpointingFramework)
 }
 
 
-// This test ensures that a non-checkpointing slave's resources are not offered
-// to a framework that requires checkpointing.
-TYPED_TEST(SlaveRecoveryTest, NonCheckpointingSlave)
-{
-  Try<PID<Master> > master = this->StartMaster();
-  ASSERT_SOME(master);
-
-  // Disable checkpointing for the slave.
-  slave::Flags flags = this->CreateSlaveFlags();
-  flags.checkpoint = false;
-
-
-  Future<RegisterSlaveMessage> registerSlaveMessage =
-    FUTURE_PROTOBUF(RegisterSlaveMessage(), _, _);
-
-  Fetcher fetcher;
-
-  Try<TypeParam*> containerizer = TypeParam::create(flags, true, &fetcher);
-  ASSERT_SOME(containerizer);
-
-  Try<PID<Slave> > slave = this->StartSlave(containerizer.get(), flags);
-  ASSERT_SOME(slave);
-
-  AWAIT_READY(registerSlaveMessage);
-
-  MockScheduler sched;
-
-  // Enable checkpointing for the framework.
-  FrameworkInfo frameworkInfo;
-  frameworkInfo.CopyFrom(DEFAULT_FRAMEWORK_INFO);
-  frameworkInfo.set_checkpoint(true);
-
-  MesosSchedulerDriver driver(
-      &sched, frameworkInfo, master.get(), DEFAULT_CREDENTIAL);
-
-  Future<Nothing> registered;
-  EXPECT_CALL(sched, registered(_, _, _))
-    .WillOnce(FutureSatisfy(&registered));
-
-  EXPECT_CALL(sched, resourceOffers(_, _))
-    .Times(0); // No offers should be received!
-
-  Clock::pause();
-
-  driver.start();
-
-  // Wait for scheduler to register. We do a Clock::settle() here
-  // to ensure that no offers are received by the scheduler.
-  AWAIT_READY(registered);
-  Clock::settle();
-
-  driver.stop();
-  driver.join();
-
-  this->Shutdown();
-  delete containerizer.get();
-}
-
 // Scheduler asks a restarted slave to kill a task that has been
 // running before the slave restarted. This test ensures that a
 // restarted slave is able to communicate with all components

http://git-wip-us.apache.org/repos/asf/mesos/blob/b2f73095/src/tests/status_update_manager_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/status_update_manager_tests.cpp b/src/tests/status_update_manager_tests.cpp
index 216a22e..36dab42 100644
--- a/src/tests/status_update_manager_tests.cpp
+++ b/src/tests/status_update_manager_tests.cpp
@@ -97,8 +97,9 @@ TEST_F(StatusUpdateManagerTest, CheckpointStatusUpdate)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
+  // Require flags to retrieve work_dir when recovering
+  // the checkpointed data.
   slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
 
   Try<PID<Slave> > slave = StartSlave(&exec, flags);
   ASSERT_SOME(slave);
@@ -192,7 +193,6 @@ TEST_F(StatusUpdateManagerTest, RetryStatusUpdate)
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
   slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
 
   Try<PID<Slave> > slave = StartSlave(&exec, flags);
   ASSERT_SOME(slave);
@@ -266,10 +266,7 @@ TEST_F(StatusUpdateManagerTest, IgnoreDuplicateStatusUpdateAck)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
-
-  Try<PID<Slave> > slave = StartSlave(&exec, flags);
+  Try<PID<Slave> > slave = StartSlave(&exec);
   ASSERT_SOME(slave);
 
   FrameworkInfo frameworkInfo; // Bug in gcc 4.1.*, must assign on next line.
@@ -382,10 +379,7 @@ TEST_F(StatusUpdateManagerTest, IgnoreUnexpectedStatusUpdateAck)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
-
-  Try<PID<Slave> > slave = StartSlave(&exec, flags);
+  Try<PID<Slave> > slave = StartSlave(&exec);
   ASSERT_SOME(slave);
 
   FrameworkInfo frameworkInfo; // Bug in gcc 4.1.*, must assign on next line.
@@ -474,10 +468,7 @@ TEST_F(StatusUpdateManagerTest, DuplicateTerminalUpdateBeforeAck)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
-
-  Try<PID<Slave> > slave = StartSlave(&exec, flags);
+  Try<PID<Slave> > slave = StartSlave(&exec);
   ASSERT_SOME(slave);
 
   FrameworkInfo frameworkInfo; // Bug in gcc 4.1.*, must assign on next line.
@@ -587,7 +578,6 @@ TEST_F(StatusUpdateManagerTest, DuplicateTerminalUpdateAfterAck)
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
   slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
 
   Try<PID<Slave> > slave = StartSlave(&exec, flags);
   ASSERT_SOME(slave);
@@ -685,10 +675,7 @@ TEST_F(StatusUpdateManagerTest, DuplicateUpdateBeforeAck)
 
   MockExecutor exec(DEFAULT_EXECUTOR_ID);
 
-  slave::Flags flags = CreateSlaveFlags();
-  flags.checkpoint = true;
-
-  Try<PID<Slave> > slave = StartSlave(&exec, flags);
+  Try<PID<Slave> > slave = StartSlave(&exec);
   ASSERT_SOME(slave);
 
   FrameworkInfo frameworkInfo; // Bug in gcc 4.1.*, must assign on next line.