You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by da...@apache.org on 2016/01/15 21:00:07 UTC

[2/6] incubator-kudu git commit: Replace BOOST_FOREACH with c++11 range syntax

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/rowset_tree.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/rowset_tree.cc b/src/kudu/tablet/rowset_tree.cc
index d0c55bd..e4c0cd6 100644
--- a/src/kudu/tablet/rowset_tree.cc
+++ b/src/kudu/tablet/rowset_tree.cc
@@ -89,7 +89,7 @@ Status RowSetTree::Reset(const RowSetVector &rowsets) {
 
   // Iterate over each of the provided RowSets, fetching their
   // bounds and adding them to the local vectors.
-  BOOST_FOREACH(const shared_ptr<RowSet> &rs, rowsets) {
+  for (const shared_ptr<RowSet> &rs : rowsets) {
     gscoped_ptr<RowSetWithBounds> rsit(new RowSetWithBounds());
     rsit->rowset = rs.get();
     Slice min_key, max_key;
@@ -139,7 +139,7 @@ void RowSetTree::FindRowSetsIntersectingInterval(const Slice &lower_bound,
   DCHECK(initted_);
 
   // All rowsets with unknown bounds need to be checked.
-  BOOST_FOREACH(const shared_ptr<RowSet> &rs, unbounded_rowsets_) {
+  for (const shared_ptr<RowSet> &rs : unbounded_rowsets_) {
     rowsets->push_back(rs.get());
   }
 
@@ -153,7 +153,7 @@ void RowSetTree::FindRowSetsIntersectingInterval(const Slice &lower_bound,
   from_tree.reserve(all_rowsets_.size());
   tree_->FindIntersectingInterval(&query, &from_tree);
   rowsets->reserve(rowsets->size() + from_tree.size());
-  BOOST_FOREACH(RowSetWithBounds *rs, from_tree) {
+  for (RowSetWithBounds *rs : from_tree) {
     rowsets->push_back(rs->rowset);
   }
 }
@@ -163,7 +163,7 @@ void RowSetTree::FindRowSetsWithKeyInRange(const Slice &encoded_key,
   DCHECK(initted_);
 
   // All rowsets with unknown bounds need to be checked.
-  BOOST_FOREACH(const shared_ptr<RowSet> &rs, unbounded_rowsets_) {
+  for (const shared_ptr<RowSet> &rs : unbounded_rowsets_) {
     rowsets->push_back(rs.get());
   }
 
@@ -173,7 +173,7 @@ void RowSetTree::FindRowSetsWithKeyInRange(const Slice &encoded_key,
   from_tree.reserve(all_rowsets_.size());
   tree_->FindContainingPoint(encoded_key, &from_tree);
   rowsets->reserve(rowsets->size() + from_tree.size());
-  BOOST_FOREACH(RowSetWithBounds *rs, from_tree) {
+  for (RowSetWithBounds *rs : from_tree) {
     rowsets->push_back(rs->rowset);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/svg_dump.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/svg_dump.cc b/src/kudu/tablet/svg_dump.cc
index 290c5ec..514bd03 100644
--- a/src/kudu/tablet/svg_dump.cc
+++ b/src/kudu/tablet/svg_dump.cc
@@ -17,7 +17,6 @@
 
 #include "kudu/tablet/svg_dump.h"
 
-#include <boost/foreach.hpp>
 #include <glog/logging.h>
 #include <time.h>
 
@@ -66,14 +65,14 @@ void OrganizeSVGRows(const vector<RowSetInfo>& candidates,
                      vector<vector<const RowSetInfo*> >* rows) {
   rows->push_back(vector<const RowSetInfo *>());
 
-  BOOST_FOREACH(const RowSetInfo &candidate, candidates) {
+  for (const RowSetInfo &candidate : candidates) {
     // Slot into the first row of the output which fits it
     bool found_slot = false;
-    BOOST_FOREACH(vector<const RowSetInfo *> &row, *rows) {
+    for (vector<const RowSetInfo *> &row : *rows) {
       // If this candidate doesn't intersect any other candidates in this
       // row, we can put it here.
       bool fits_in_row = true;
-      BOOST_FOREACH(const RowSetInfo *already_in_row, row) {
+      for (const RowSetInfo *already_in_row : row) {
         if (candidate.Intersects(*already_in_row)) {
           fits_in_row = false;
           break;
@@ -127,7 +126,7 @@ void DumpSVG(const vector<RowSetInfo>& candidates,
     const vector<const RowSetInfo *> &row = svg_rows[row_index];
 
     int y = kRowHeight * row_index + kHeaderHeight;
-    BOOST_FOREACH(const RowSetInfo *cand, row) {
+    for (const RowSetInfo *cand : row) {
       bool was_picked = ContainsKey(picked, cand->rowset());
       const char *color = was_picked ? kPickedColor : kDefaultColor;
 

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet-pushdown-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet-pushdown-test.cc b/src/kudu/tablet/tablet-pushdown-test.cc
index 7a7c96b..b02e225 100644
--- a/src/kudu/tablet/tablet-pushdown-test.cc
+++ b/src/kudu/tablet/tablet-pushdown-test.cc
@@ -91,7 +91,7 @@ class TabletPushdownTest : public KuduTabletTest,
       ASSERT_OK(IterateToStringList(iter.get(), &results));
     }
     std::sort(results.begin(), results.end());
-    BOOST_FOREACH(const string &str, results) {
+    for (const string &str : results) {
       LOG(INFO) << str;
     }
     ASSERT_EQ(11, results.size());
@@ -133,7 +133,7 @@ class TabletPushdownTest : public KuduTabletTest,
     if (check_stats) {
       vector<IteratorStats> stats;
       iter->GetIteratorStats(&stats);
-      BOOST_FOREACH(const IteratorStats& col_stats, stats) {
+      for (const IteratorStats& col_stats : stats) {
         EXPECT_EQ(expected_blocks_from_disk, col_stats.data_blocks_read_from_disk);
         EXPECT_EQ(expected_rows_from_disk, col_stats.cells_read_from_disk);
       }
@@ -153,7 +153,7 @@ class TabletPushdownTest : public KuduTabletTest,
     vector<string> results;
     ASSERT_OK(IterateToStringList(iter.get(), &results));
     ASSERT_EQ(11, results.size());
-    BOOST_FOREACH(const string& result, results) {
+    for (const string& result : results) {
       ASSERT_EQ("()", result);
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet-schema-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet-schema-test.cc b/src/kudu/tablet/tablet-schema-test.cc
index 08b8bee..8fc2409 100644
--- a/src/kudu/tablet/tablet-schema-test.cc
+++ b/src/kudu/tablet/tablet-schema-test.cc
@@ -82,9 +82,9 @@ class TestTabletSchema : public KuduTabletTest {
 
     vector<string> rows;
     ASSERT_OK(DumpTablet(*tablet(), projection, &rows));
-    BOOST_FOREACH(const string& row, rows) {
+    for (const string& row : rows) {
       bool found = false;
-      BOOST_FOREACH(const StringPair& k, keys) {
+      for (const StringPair& k : keys) {
         if (row.find(k.first) != string::npos) {
           ASSERT_STR_CONTAINS(row, k.second);
           found = true;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet-test-util.h
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet-test-util.h b/src/kudu/tablet/tablet-test-util.h
index 3fae33f..4159405 100644
--- a/src/kudu/tablet/tablet-test-util.h
+++ b/src/kudu/tablet/tablet-test-util.h
@@ -165,7 +165,7 @@ static inline void CollectRowsForSnapshots(Tablet* tablet,
                                            const Schema& schema,
                                            const vector<MvccSnapshot>& snaps,
                                            vector<vector<string>* >* collected_rows) {
-  BOOST_FOREACH(const MvccSnapshot& snapshot, snaps) {
+  for (const MvccSnapshot& snapshot : snaps) {
     DVLOG(1) << "Snapshot: " <<  snapshot.ToString();
     gscoped_ptr<RowwiseIterator> iter;
     ASSERT_OK(tablet->NewRowIterator(schema,
@@ -190,7 +190,7 @@ static inline void VerifySnapshotsHaveSameResult(Tablet* tablet,
                                                  const vector<vector<string>* >& expected_rows) {
   int idx = 0;
   // Now iterate again and make sure we get the same thing.
-  BOOST_FOREACH(const MvccSnapshot& snapshot, snaps) {
+  for (const MvccSnapshot& snapshot : snaps) {
     DVLOG(1) << "Snapshot: " <<  snapshot.ToString();
     gscoped_ptr<RowwiseIterator> iter;
     ASSERT_OK(tablet->NewRowIterator(schema,

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet.cc b/src/kudu/tablet/tablet.cc
index 82852fa..5bfee03 100644
--- a/src/kudu/tablet/tablet.cc
+++ b/src/kudu/tablet/tablet.cc
@@ -17,7 +17,6 @@
 
 #include <algorithm>
 #include <boost/bind.hpp>
-#include <boost/foreach.hpp>
 #include <boost/thread/locks.hpp>
 #include <boost/thread/mutex.hpp>
 #include <iterator>
@@ -186,7 +185,7 @@ Status Tablet::Open() {
   RowSetVector rowsets_opened;
 
   // open the tablet row-sets
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rowset_meta, metadata_->rowsets()) {
+  for (const shared_ptr<RowSetMetadata>& rowset_meta : metadata_->rowsets()) {
     shared_ptr<DiskRowSet> rowset;
     Status s = DiskRowSet::Open(rowset_meta, log_anchor_registry_.get(), &rowset, mem_tracker_);
     if (!s.ok()) {
@@ -286,7 +285,7 @@ Status Tablet::DecodeWriteOperations(const Schema* client_schema,
   // Create RowOp objects for each
   vector<RowOp*> row_ops;
   ops.reserve(ops.size());
-  BOOST_FOREACH(const DecodedRowOperation& op, ops) {
+  for (const DecodedRowOperation& op : ops) {
     row_ops.push_back(new RowOp(op));
   }
 
@@ -302,7 +301,7 @@ Status Tablet::AcquireRowLocks(WriteTransactionState* tx_state) {
   TRACE_EVENT1("tablet", "Tablet::AcquireRowLocks",
                "num_locks", tx_state->row_ops().size());
   TRACE("PREPARE: Acquiring locks for $0 operations", tx_state->row_ops().size());
-  BOOST_FOREACH(RowOp* op, tx_state->row_ops()) {
+  for (RowOp* op : tx_state->row_ops()) {
     RETURN_NOT_OK(AcquireLockForOp(tx_state, op));
   }
   TRACE("PREPARE: locks acquired");
@@ -379,7 +378,7 @@ Status Tablet::InsertUnlocked(WriteTransactionState *tx_state,
     comps->rowsets->FindRowSetsWithKeyInRange(insert->key_probe->encoded_key_slice(),
                                               &to_check);
 
-    BOOST_FOREACH(const RowSet *rowset, to_check) {
+    for (const RowSet *rowset : to_check) {
       bool present = false;
       RETURN_NOT_OK(rowset->CheckRowPresent(*insert->key_probe, &present, &stats));
       if (PREDICT_FALSE(present)) {
@@ -466,7 +465,7 @@ Status Tablet::MutateRowUnlocked(WriteTransactionState *tx_state,
   vector<RowSet *> to_check;
   comps->rowsets->FindRowSetsWithKeyInRange(mutate->key_probe->encoded_key_slice(),
                                             &to_check);
-  BOOST_FOREACH(RowSet *rs, to_check) {
+  for (RowSet *rs : to_check) {
     s = rs->MutateRow(ts,
                       *mutate->key_probe,
                       mutate->decoded_op.changelist,
@@ -496,7 +495,7 @@ void Tablet::StartApplying(WriteTransactionState* tx_state) {
 
 void Tablet::ApplyRowOperations(WriteTransactionState* tx_state) {
   StartApplying(tx_state);
-  BOOST_FOREACH(RowOp* row_op, tx_state->row_ops()) {
+  for (RowOp* row_op : tx_state->row_ops()) {
     ApplyRowOperation(tx_state, row_op);
   }
 }
@@ -528,10 +527,10 @@ void Tablet::ModifyRowSetTree(const RowSetTree& old_tree,
   // the rowsets that were included in the compaction
   int num_removed = 0;
 
-  BOOST_FOREACH(const shared_ptr<RowSet> &rs, old_tree.all_rowsets()) {
+  for (const shared_ptr<RowSet> &rs : old_tree.all_rowsets()) {
     // Determine if it should be removed
     bool should_remove = false;
-    BOOST_FOREACH(const shared_ptr<RowSet> &to_remove, rowsets_to_remove) {
+    for (const shared_ptr<RowSet> &to_remove : rowsets_to_remove) {
       if (to_remove == rs) {
         should_remove = true;
         num_removed++;
@@ -1026,7 +1025,7 @@ Status Tablet::PickRowSetsToCompact(RowSetsInCompaction *picked,
 
   if (flags & FORCE_COMPACT_ALL) {
     // Compact all rowsets, regardless of policy.
-    BOOST_FOREACH(const shared_ptr<RowSet>& rs, rowsets_copy->all_rowsets()) {
+    for (const shared_ptr<RowSet>& rs : rowsets_copy->all_rowsets()) {
       if (rs->IsAvailableForCompaction()) {
         picked_set.insert(rs.get());
       }
@@ -1039,7 +1038,7 @@ Status Tablet::PickRowSetsToCompact(RowSetsInCompaction *picked,
   }
 
   boost::shared_lock<rw_spinlock> lock(component_lock_);
-  BOOST_FOREACH(const shared_ptr<RowSet>& rs, components_->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet>& rs : components_->rowsets->all_rowsets()) {
     if (picked_set.erase(rs.get()) == 0) {
       // Not picked.
       continue;
@@ -1064,7 +1063,7 @@ Status Tablet::PickRowSetsToCompact(RowSetsInCompaction *picked,
   // them out while we were making our selection decision -- that's not possible
   // since we only picked rowsets that were marked as available for compaction.
   if (!picked_set.empty()) {
-    BOOST_FOREACH(const RowSet* not_found, picked_set) {
+    for (const RowSet* not_found : picked_set) {
       LOG(ERROR) << "Rowset selected for compaction but not available anymore: "
                  << not_found->ToString();
     }
@@ -1079,7 +1078,7 @@ void Tablet::GetRowSetsForTests(RowSetVector* out) {
     boost::shared_lock<rw_spinlock> lock(component_lock_);
     rowsets_copy = components_->rowsets;
   }
-  BOOST_FOREACH(const shared_ptr<RowSet>& rs, rowsets_copy->all_rowsets()) {
+  for (const shared_ptr<RowSet>& rs : rowsets_copy->all_rowsets()) {
     out->push_back(rs);
   }
 }
@@ -1102,7 +1101,7 @@ void Tablet::RegisterMaintenanceOps(MaintenanceManager* maint_mgr) {
 }
 
 void Tablet::UnregisterMaintenanceOps() {
-  BOOST_FOREACH(MaintenanceOp* op, maintenance_ops_) {
+  for (MaintenanceOp* op : maintenance_ops_) {
     op->Unregister();
   }
   STLDeleteElements(&maintenance_ops_);
@@ -1112,7 +1111,7 @@ Status Tablet::FlushMetadata(const RowSetVector& to_remove,
                              const RowSetMetadataVector& to_add,
                              int64_t mrs_being_flushed) {
   RowSetMetadataIds to_remove_meta;
-  BOOST_FOREACH(const shared_ptr<RowSet>& rowset, to_remove) {
+  for (const shared_ptr<RowSet>& rowset : to_remove) {
     // Skip MemRowSet & DuplicatingRowSets which don't have metadata.
     if (rowset->metadata().get() == NULL) {
       continue;
@@ -1183,7 +1182,7 @@ Status Tablet::DoCompactionOrFlush(const RowSetsInCompaction &input, int64_t mrs
   CHECK(!new_drs_metas.empty());
   {
     TRACE_EVENT0("tablet", "Opening compaction results");
-    BOOST_FOREACH(const shared_ptr<RowSetMetadata>& meta, new_drs_metas) {
+    for (const shared_ptr<RowSetMetadata>& meta : new_drs_metas) {
       shared_ptr<DiskRowSet> new_rowset;
       Status s = DiskRowSet::Open(meta, log_anchor_registry_.get(), &new_rowset, mem_tracker_);
       if (!s.ok()) {
@@ -1254,7 +1253,7 @@ Status Tablet::DoCompactionOrFlush(const RowSetsInCompaction &input, int64_t mrs
   if (VLOG_IS_ON(1) && !applying_during_swap.empty()) {
     VLOG(1) << "Waiting for " << applying_during_swap.size() << " mid-APPLY txns to commit "
             << "before finishing compaction...";
-    BOOST_FOREACH(const Timestamp& ts, applying_during_swap) {
+    for (const Timestamp& ts : applying_during_swap) {
       VLOG(1) << "  " << ts.value();
     }
   }
@@ -1381,7 +1380,7 @@ Status Tablet::DebugDump(vector<string> *lines) {
   LOG_STRING(INFO, lines) << "MRS " << components_->memrowset->ToString() << ":";
   RETURN_NOT_OK(components_->memrowset->DebugDump(lines));
 
-  BOOST_FOREACH(const shared_ptr<RowSet> &rs, components_->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rs : components_->rowsets->all_rowsets()) {
     LOG_STRING(INFO, lines) << "RowSet " << rs->ToString() << ":";
     RETURN_NOT_OK(rs->DebugDump(lines));
   }
@@ -1416,7 +1415,7 @@ Status Tablet::CaptureConsistentIterators(
         spec->lower_bound_key()->encoded_key(),
         spec->exclusive_upper_bound_key()->encoded_key(),
         &interval_sets);
-    BOOST_FOREACH(const RowSet *rs, interval_sets) {
+    for (const RowSet *rs : interval_sets) {
       gscoped_ptr<RowwiseIterator> row_it;
       RETURN_NOT_OK_PREPEND(rs->NewRowIterator(projection, snap, &row_it),
                             Substitute("Could not create iterator for rowset $0",
@@ -1429,7 +1428,7 @@ Status Tablet::CaptureConsistentIterators(
 
   // If there are no encoded predicates or they represent an open-ended range, then
   // fall back to grabbing all rowset iterators
-  BOOST_FOREACH(const shared_ptr<RowSet> &rs, components_->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rs : components_->rowsets->all_rowsets()) {
     gscoped_ptr<RowwiseIterator> row_it;
     RETURN_NOT_OK_PREPEND(rs->NewRowIterator(projection, snap, &row_it),
                           Substitute("Could not create iterator for rowset $0",
@@ -1449,7 +1448,7 @@ Status Tablet::CountRows(uint64_t *count) const {
 
   // Now sum up the counts.
   *count = comps->memrowset->entry_count();
-  BOOST_FOREACH(const shared_ptr<RowSet> &rowset, comps->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rowset : comps->rowsets->all_rowsets()) {
     rowid_t l_count;
     RETURN_NOT_OK(rowset->CountRows(&l_count));
     *count += l_count;
@@ -1490,7 +1489,7 @@ size_t Tablet::EstimateOnDiskSize() const {
   if (!comps) return 0;
 
   size_t ret = 0;
-  BOOST_FOREACH(const shared_ptr<RowSet> &rowset, comps->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rowset : comps->rowsets->all_rowsets()) {
     ret += rowset->EstimateOnDiskSize();
   }
 
@@ -1502,7 +1501,7 @@ size_t Tablet::DeltaMemStoresSize() const {
   GetComponents(&comps);
 
   size_t ret = 0;
-  BOOST_FOREACH(const shared_ptr<RowSet> &rowset, comps->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rowset : comps->rowsets->all_rowsets()) {
     ret += rowset->DeltaMemStoreSize();
   }
 
@@ -1513,7 +1512,7 @@ bool Tablet::DeltaMemRowSetEmpty() const {
   scoped_refptr<TabletComponents> comps;
   GetComponents(&comps);
 
-  BOOST_FOREACH(const shared_ptr<RowSet> &rowset, comps->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rowset : comps->rowsets->all_rowsets()) {
     if (!rowset->DeltaMemStoreEmpty()) {
       return false;
     }
@@ -1552,7 +1551,7 @@ shared_ptr<RowSet> Tablet::FindBestDMSToFlush(const MaxIdxToSegmentMap&
   int64_t mem_size = 0;
   int64_t retention_size = 0;
   shared_ptr<RowSet> best_dms;
-  BOOST_FOREACH(const shared_ptr<RowSet> &rowset, comps->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rowset : comps->rowsets->all_rowsets()) {
     if (rowset->DeltaMemStoreEmpty()) {
       continue;
     }
@@ -1575,7 +1574,7 @@ int64_t Tablet::GetLogRetentionSizeForIndex(int64_t min_log_index,
     return 0;
   }
   int64_t total_size = 0;
-  BOOST_FOREACH(const MaxIdxToSegmentMap::value_type& entry, max_idx_to_segment_size) {
+  for (const MaxIdxToSegmentMap::value_type& entry : max_idx_to_segment_size) {
     if (min_log_index > entry.first) {
       continue; // We're not in this segment, probably someone else is retaining it.
     }
@@ -1591,7 +1590,7 @@ Status Tablet::FlushBiggestDMS() {
 
   int64_t max_size = -1;
   shared_ptr<RowSet> biggest_drs;
-  BOOST_FOREACH(const shared_ptr<RowSet> &rowset, comps->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rowset : comps->rowsets->all_rowsets()) {
     int64_t current = rowset->DeltaMemStoreSize();
     if (current > max_size) {
       max_size = current;
@@ -1648,7 +1647,7 @@ double Tablet::GetPerfImprovementForBestDeltaCompactUnlocked(RowSet::DeltaCompac
   GetComponents(&comps);
   double worst_delta_perf = 0;
   shared_ptr<RowSet> worst_rs;
-  BOOST_FOREACH(const shared_ptr<RowSet> &rowset, comps->rowsets->all_rowsets()) {
+  for (const shared_ptr<RowSet> &rowset : comps->rowsets->all_rowsets()) {
     if (!rowset->IsAvailableForCompaction()) {
       continue;
     }
@@ -1701,7 +1700,7 @@ void Tablet::PrintRSLayout(ostream* o) {
   *o << "<h2>Compaction policy log</h2>" << std::endl;
 
   *o << "<pre>" << std::endl;
-  BOOST_FOREACH(const string& s, log) {
+  for (const string& s : log) {
     *o << EscapeForHtmlToString(s) << std::endl;
   }
   *o << "</pre>" << std::endl;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet_bootstrap-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet_bootstrap-test.cc b/src/kudu/tablet/tablet_bootstrap-test.cc
index e1507ed..d61c170 100644
--- a/src/kudu/tablet/tablet_bootstrap-test.cc
+++ b/src/kudu/tablet/tablet_bootstrap-test.cc
@@ -151,7 +151,7 @@ class BootstrapTest : public LogTestBase {
     ASSERT_OK(tablet->NewRowIterator(schema_, snap, Tablet::UNORDERED, &iter));
     ASSERT_OK(iter->Init(NULL));
     ASSERT_OK(IterateToStringList(iter.get(), results));
-    BOOST_FOREACH(const string& result, *results) {
+    for (const string& result : *results) {
       VLOG(1) << result;
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet_bootstrap.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet_bootstrap.cc b/src/kudu/tablet/tablet_bootstrap.cc
index 6598329..a1a027c 100644
--- a/src/kudu/tablet/tablet_bootstrap.cc
+++ b/src/kudu/tablet/tablet_bootstrap.cc
@@ -17,7 +17,6 @@
 
 #include "kudu/tablet/tablet_bootstrap.h"
 
-#include <boost/foreach.hpp>
 #include <gflags/gflags.h>
 #include <map>
 #include <string>
@@ -573,7 +572,7 @@ Status TabletBootstrap::PrepareRecoveryDir(bool* needs_recovery) {
   vector<string> children;
   RETURN_NOT_OK_PREPEND(fs_manager->ListDir(log_dir, &children),
                         "Couldn't list log segments.");
-  BOOST_FOREACH(const string& child, children) {
+  for (const string& child : children) {
     if (!log::IsLogFileName(child)) {
       continue;
     }
@@ -710,7 +709,7 @@ struct ReplayState {
   }
 
   void AddEntriesToStrings(const OpIndexToEntryMap& entries, vector<string>* strings) const {
-    BOOST_FOREACH(const OpIndexToEntryMap::value_type& map_entry, entries) {
+    for (const OpIndexToEntryMap::value_type& map_entry : entries) {
       LogEntryPB* entry = DCHECK_NOTNULL(map_entry.second);
       strings->push_back(Substitute("   $0", entry->ShortDebugString()));
     }
@@ -862,8 +861,8 @@ Status TabletBootstrap::HandleCommitMessage(ReplayState* state, LogEntryPB* comm
 }
 
 bool TabletBootstrap::AreAllStoresAlreadyFlushed(const CommitMsg& commit) {
-  BOOST_FOREACH(const OperationResultPB& op_result, commit.result().ops()) {
-    BOOST_FOREACH(const MemStoreTargetPB& mutated_store, op_result.mutated_stores()) {
+  for (const OperationResultPB& op_result : commit.result().ops()) {
+    for (const MemStoreTargetPB& mutated_store : op_result.mutated_stores()) {
       if (!flushed_stores_.WasStoreAlreadyFlushed(mutated_store)) {
         return false;
       }
@@ -873,8 +872,8 @@ bool TabletBootstrap::AreAllStoresAlreadyFlushed(const CommitMsg& commit) {
 }
 
 bool TabletBootstrap::AreAnyStoresAlreadyFlushed(const CommitMsg& commit) {
-  BOOST_FOREACH(const OperationResultPB& op_result, commit.result().ops()) {
-    BOOST_FOREACH(const MemStoreTargetPB& mutated_store, op_result.mutated_stores()) {
+  for (const OperationResultPB& op_result : commit.result().ops()) {
+    for (const MemStoreTargetPB& mutated_store : op_result.mutated_stores()) {
       if (flushed_stores_.WasStoreAlreadyFlushed(mutated_store)) {
         return true;
       }
@@ -1002,7 +1001,7 @@ void TabletBootstrap::DumpReplayStateToLog(const ReplayState& state) {
   // which might be useful for debugging.
   vector<string> state_dump;
   state.DumpReplayStateToStrings(&state_dump);
-  BOOST_FOREACH(const string& string, state_dump) {
+  for (const string& string : state_dump) {
     LOG_WITH_PREFIX(INFO) << string;
   }
 }
@@ -1032,7 +1031,7 @@ Status TabletBootstrap::PlaySegments(ConsensusBootstrapInfo* consensus_info) {
   RETURN_NOT_OK_PREPEND(OpenNewLog(), "Failed to open new log");
 
   int segment_count = 0;
-  BOOST_FOREACH(const scoped_refptr<ReadableLogSegment>& segment, segments) {
+  for (const scoped_refptr<ReadableLogSegment>& segment : segments) {
     vector<LogEntryPB*> entries;
     ElementDeleter deleter(&entries);
     // TODO: Optimize this to not read the whole thing into memory?
@@ -1084,7 +1083,7 @@ Status TabletBootstrap::PlaySegments(ConsensusBootstrapInfo* consensus_info) {
   // If we have non-applied commits they all must belong to pending operations and
   // they should only pertain to unflushed stores.
   if (!state.pending_commits.empty()) {
-    BOOST_FOREACH(const OpIndexToEntryMap::value_type& entry, state.pending_commits) {
+    for (const OpIndexToEntryMap::value_type& entry : state.pending_commits) {
       if (!ContainsKey(state.pending_replicates, entry.first)) {
         DumpReplayStateToLog(state);
         return Status::Corruption("Had orphaned commits at the end of replay.");
@@ -1142,7 +1141,7 @@ Status TabletBootstrap::PlaySegments(ConsensusBootstrapInfo* consensus_info) {
   DumpReplayStateToLog(state);
 
   // Set up the ConsensusBootstrapInfo structure for the caller.
-  BOOST_FOREACH(OpIndexToEntryMap::value_type& e, state.pending_replicates) {
+  for (OpIndexToEntryMap::value_type& e : state.pending_replicates) {
     consensus_info->orphaned_replicates.push_back(e.second->release_replicate());
   }
   consensus_info->last_id = state.prev_op_id;
@@ -1277,7 +1276,7 @@ Status TabletBootstrap::PlayRowOperations(WriteTransactionState* tx_state,
 Status TabletBootstrap::FilterAndApplyOperations(WriteTransactionState* tx_state,
                                                  const TxResultPB& orig_result) {
   int32_t op_idx = 0;
-  BOOST_FOREACH(RowOp* op, tx_state->row_ops()) {
+  for (RowOp* op : tx_state->row_ops()) {
     const OperationResultPB& orig_op_result = orig_result.ops(op_idx++);
 
     // check if the operation failed in the original transaction
@@ -1385,7 +1384,7 @@ Status TabletBootstrap::FilterMutate(WriteTransactionState* tx_state,
   // The mutation may have been duplicated, so we'll check whether any of the
   // output targets was "unflushed".
   int num_unflushed_stores = 0;
-  BOOST_FOREACH(const MemStoreTargetPB& mutated_store, op_result.mutated_stores()) {
+  for (const MemStoreTargetPB& mutated_store : op_result.mutated_stores()) {
     if (!flushed_stores_.WasStoreAlreadyFlushed(mutated_store)) {
       num_unflushed_stores++;
     } else {
@@ -1433,7 +1432,7 @@ string TabletBootstrap::LogPrefix() const {
 Status FlushedStoresSnapshot::InitFrom(const TabletMetadata& meta) {
   CHECK(flushed_dms_by_drs_id_.empty()) << "already initted";
   last_durable_mrs_id_ = meta.last_durable_mrs_id();
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rsmd, meta.rowsets()) {
+  for (const shared_ptr<RowSetMetadata>& rsmd : meta.rowsets()) {
     if (!InsertIfNotPresent(&flushed_dms_by_drs_id_, rsmd->id(),
                             rsmd->last_durable_redo_dms_id())) {
       return Status::Corruption(Substitute(

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet_metadata.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet_metadata.cc b/src/kudu/tablet/tablet_metadata.cc
index 54f33d6..dfaef6a 100644
--- a/src/kudu/tablet/tablet_metadata.cc
+++ b/src/kudu/tablet/tablet_metadata.cc
@@ -128,14 +128,14 @@ Status TabletMetadata::LoadOrCreate(FsManager* fs_manager,
 
 void TabletMetadata::CollectBlockIdPBs(const TabletSuperBlockPB& superblock,
                                        std::vector<BlockIdPB>* block_ids) {
-  BOOST_FOREACH(const RowSetDataPB& rowset, superblock.rowsets()) {
-    BOOST_FOREACH(const ColumnDataPB& column, rowset.columns()) {
+  for (const RowSetDataPB& rowset : superblock.rowsets()) {
+    for (const ColumnDataPB& column : rowset.columns()) {
       block_ids->push_back(column.block());
     }
-    BOOST_FOREACH(const DeltaDataPB& redo, rowset.redo_deltas()) {
+    for (const DeltaDataPB& redo : rowset.redo_deltas()) {
       block_ids->push_back(redo.block());
     }
-    BOOST_FOREACH(const DeltaDataPB& undo, rowset.undo_deltas()) {
+    for (const DeltaDataPB& undo : rowset.undo_deltas()) {
       block_ids->push_back(undo.block());
     }
     if (rowset.has_bloom_block()) {
@@ -162,7 +162,7 @@ Status TabletMetadata::DeleteTabletData(TabletDataState delete_type,
   // we have been deleted.
   {
     boost::lock_guard<LockType> l(data_lock_);
-    BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rsmd, rowsets_) {
+    for (const shared_ptr<RowSetMetadata>& rsmd : rowsets_) {
       AddOrphanedBlocksUnlocked(rsmd->GetAllBlocks());
     }
     rowsets_.clear();
@@ -315,14 +315,14 @@ Status TabletMetadata::LoadFromSuperBlock(const TabletSuperBlockPB& superblock)
     tablet_data_state_ = superblock.tablet_data_state();
 
     rowsets_.clear();
-    BOOST_FOREACH(const RowSetDataPB& rowset_pb, superblock.rowsets()) {
+    for (const RowSetDataPB& rowset_pb : superblock.rowsets()) {
       gscoped_ptr<RowSetMetadata> rowset_meta;
       RETURN_NOT_OK(RowSetMetadata::Load(this, rowset_pb, &rowset_meta));
       next_rowset_idx_ = std::max(next_rowset_idx_, rowset_meta->id() + 1);
       rowsets_.push_back(shared_ptr<RowSetMetadata>(rowset_meta.release()));
     }
 
-    BOOST_FOREACH(const BlockIdPB& block_pb, superblock.orphaned_blocks()) {
+    for (const BlockIdPB& block_pb : superblock.orphaned_blocks()) {
       orphaned_blocks.push_back(BlockId::FromPB(block_pb));
     }
     AddOrphanedBlocksUnlocked(orphaned_blocks);
@@ -372,7 +372,7 @@ void TabletMetadata::DeleteOrphanedBlocks(const vector<BlockId>& blocks) {
   }
 
   vector<BlockId> deleted;
-  BOOST_FOREACH(const BlockId& b, blocks) {
+  for (const BlockId& b : blocks) {
     Status s = fs_manager()->DeleteBlock(b);
     // If we get NotFound, then the block was actually successfully
     // deleted before. So, we can remove it from our orphaned block list
@@ -388,7 +388,7 @@ void TabletMetadata::DeleteOrphanedBlocks(const vector<BlockId>& blocks) {
   // Remove the successfully-deleted blocks from the set.
   {
     boost::lock_guard<LockType> l(data_lock_);
-    BOOST_FOREACH(const BlockId& b, deleted) {
+    for (const BlockId& b : deleted) {
       orphaned_blocks_.erase(b);
     }
   }
@@ -475,7 +475,7 @@ Status TabletMetadata::UpdateUnlocked(
     }
   }
 
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& meta, to_add) {
+  for (const shared_ptr<RowSetMetadata>& meta : to_add) {
     new_rowsets.push_back(meta);
   }
   rowsets_ = new_rowsets;
@@ -535,7 +535,7 @@ Status TabletMetadata::ToSuperBlockUnlocked(TabletSuperBlockPB* super_block,
   partition_schema_.ToPB(pb.mutable_partition_schema());
   pb.set_table_name(table_name_);
 
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& meta, rowsets) {
+  for (const shared_ptr<RowSetMetadata>& meta : rowsets) {
     meta->ToProtobuf(pb.add_rowsets());
   }
 
@@ -548,7 +548,7 @@ Status TabletMetadata::ToSuperBlockUnlocked(TabletSuperBlockPB* super_block,
     *pb.mutable_tombstone_last_logged_opid() = tombstone_last_logged_opid_;
   }
 
-  BOOST_FOREACH(const BlockId& block_id, orphaned_blocks_) {
+  for (const BlockId& block_id : orphaned_blocks_) {
     block_id.CopyToPB(pb.mutable_orphaned_blocks()->Add());
   }
 
@@ -566,7 +566,7 @@ Status TabletMetadata::CreateRowSet(shared_ptr<RowSetMetadata> *rowset,
 }
 
 const RowSetMetadata *TabletMetadata::GetRowSetForTests(int64_t id) const {
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rowset_meta, rowsets_) {
+  for (const shared_ptr<RowSetMetadata>& rowset_meta : rowsets_) {
     if (rowset_meta->id() == id) {
       return rowset_meta.get();
     }
@@ -576,7 +576,7 @@ const RowSetMetadata *TabletMetadata::GetRowSetForTests(int64_t id) const {
 
 RowSetMetadata *TabletMetadata::GetRowSetForTests(int64_t id) {
   boost::lock_guard<LockType> l(data_lock_);
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rowset_meta, rowsets_) {
+  for (const shared_ptr<RowSetMetadata>& rowset_meta : rowsets_) {
     if (rowset_meta->id() == id) {
       return rowset_meta.get();
     }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet_mm_ops-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet_mm_ops-test.cc b/src/kudu/tablet/tablet_mm_ops-test.cc
index b547f59..421f182 100644
--- a/src/kudu/tablet/tablet_mm_ops-test.cc
+++ b/src/kudu/tablet/tablet_mm_ops-test.cc
@@ -72,7 +72,7 @@ class KuduTabletMmOpsTest : public TabletTestBase<IntKeyTestSetup<INT64>> {
                              scoped_refptr<Histogram>,
                              ScopedRefPtrHashFunctor<Histogram>,
                              ScopedRefPtrEqualToFunctor<Histogram> >& metrics) {
-    BOOST_FOREACH(const scoped_refptr<Histogram>& c, all_possible_metrics_) {
+    for (const scoped_refptr<Histogram>& c : all_possible_metrics_) {
       c->Increment(1); // value doesn't matter
       if (ContainsKey(metrics, c)) {
         NO_FATALS(StatsShouldChange(op));

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet_peer.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet_peer.cc b/src/kudu/tablet/tablet_peer.cc
index 0673b15..bee4465 100644
--- a/src/kudu/tablet/tablet_peer.cc
+++ b/src/kudu/tablet/tablet_peer.cc
@@ -398,7 +398,7 @@ void TabletPeer::GetInFlightTransactions(Transaction::TraceType trace_type,
                                          vector<consensus::TransactionStatusPB>* out) const {
   vector<scoped_refptr<TransactionDriver> > pending_transactions;
   txn_tracker_.GetPendingTransactions(&pending_transactions);
-  BOOST_FOREACH(const scoped_refptr<TransactionDriver>& driver, pending_transactions) {
+  for (const scoped_refptr<TransactionDriver>& driver : pending_transactions) {
     if (driver->state() != NULL) {
       consensus::TransactionStatusPB status_pb;
       status_pb.mutable_op_id()->CopyFrom(driver->GetOpId());
@@ -450,7 +450,7 @@ void TabletPeer::GetEarliestNeededLogIndex(int64_t* min_index) const {
   // Next, interrogate the TransactionTracker.
   vector<scoped_refptr<TransactionDriver> > pending_transactions;
   txn_tracker_.GetPendingTransactions(&pending_transactions);
-  BOOST_FOREACH(const scoped_refptr<TransactionDriver>& driver, pending_transactions) {
+  for (const scoped_refptr<TransactionDriver>& driver : pending_transactions) {
     OpId tx_op_id = driver->GetOpId();
     // A transaction which doesn't have an opid hasn't been submitted for replication yet and
     // thus has no need to anchor the log.
@@ -589,7 +589,7 @@ void TabletPeer::RegisterMaintenanceOps(MaintenanceManager* maint_mgr) {
 
 void TabletPeer::UnregisterMaintenanceOps() {
   DCHECK(state_change_lock_.is_locked());
-  BOOST_FOREACH(MaintenanceOp* op, maintenance_ops_) {
+  for (MaintenanceOp* op : maintenance_ops_) {
     op->Unregister();
   }
   STLDeleteElements(&maintenance_ops_);

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/tablet_random_access-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/tablet_random_access-test.cc b/src/kudu/tablet/tablet_random_access-test.cc
index 0c85509..bb7b6cd 100644
--- a/src/kudu/tablet/tablet_random_access-test.cc
+++ b/src/kudu/tablet/tablet_random_access-test.cc
@@ -128,7 +128,7 @@ class TestRandomAccess : public KuduTabletTest {
       }
     }
     CHECK_OK(writer_->WriteBatch(pending));
-    BOOST_FOREACH(LocalTabletWriter::Op op, pending) {
+    for (LocalTabletWriter::Op op : pending) {
       delete op.row;
     }
   }
@@ -354,7 +354,7 @@ void GenerateTestCase(vector<TestOp>* ops, int len) {
 
 string DumpTestCase(const vector<TestOp>& ops) {
   vector<string> names;
-  BOOST_FOREACH(TestOp test_op, ops) {
+  for (TestOp test_op : ops) {
     names.push_back(TestOp_names[test_op]);
   }
   return JoinStrings(names, ",\n");
@@ -371,7 +371,7 @@ void TestRandomAccess::RunFuzzCase(const vector<TestOp>& test_ops,
   string pending_val = "";
 
   int i = 0;
-  BOOST_FOREACH(TestOp test_op, test_ops) {
+  for (TestOp test_op : test_ops) {
     string val_in_table = GetRow(1);
     ASSERT_EQ("(" + cur_val + ")", val_in_table);
 
@@ -391,7 +391,7 @@ void TestRandomAccess::RunFuzzCase(const vector<TestOp>& test_ops,
         break;
       case TEST_FLUSH_OPS:
         ASSERT_OK(writer.WriteBatch(ops));
-        BOOST_FOREACH(LocalTabletWriter::Op op, ops) {
+        for (LocalTabletWriter::Op op : ops) {
           delete op.row;
         }
         ops.clear();
@@ -416,7 +416,7 @@ void TestRandomAccess::RunFuzzCase(const vector<TestOp>& test_ops,
         LOG(FATAL) << test_op;
     }
   }
-  BOOST_FOREACH(LocalTabletWriter::Op op, ops) {
+  for (LocalTabletWriter::Op op : ops) {
     delete op.row;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/transactions/transaction_tracker-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/transactions/transaction_tracker-test.cc b/src/kudu/tablet/transactions/transaction_tracker-test.cc
index 9e0817e..af7067c 100644
--- a/src/kudu/tablet/transactions/transaction_tracker-test.cc
+++ b/src/kudu/tablet/transactions/transaction_tracker-test.cc
@@ -99,7 +99,7 @@ class TransactionTrackerTest : public KuduTest {
       local_drivers.push_back(driver);
     }
 
-    BOOST_FOREACH(const scoped_refptr<TransactionDriver>& d, local_drivers) {
+    for (const scoped_refptr<TransactionDriver>& d : local_drivers) {
       drivers->push_back(d);
     }
     return Status::OK();
@@ -143,7 +143,7 @@ void TransactionTrackerTest::RunTransactionsThread(CountDownLatch* finish_latch)
   SleepFor(MonoDelta::FromMilliseconds(1));
 
   // Finish all the transactions
-  BOOST_FOREACH(const scoped_refptr<TransactionDriver>& driver, drivers) {
+  for (const scoped_refptr<TransactionDriver>& driver : drivers) {
     // And mark the transaction as failed, which will cause it to unregister itself.
     driver->Abort(Status::Aborted(""));
   }
@@ -248,7 +248,7 @@ TEST_F(TransactionTrackerTest, TestTooManyTransactions) {
   NO_FATALS(CheckMemTracker(t));
 
   // Clean up.
-  BOOST_FOREACH(const scoped_refptr<TransactionDriver>& driver, drivers) {
+  for (const scoped_refptr<TransactionDriver>& driver : drivers) {
     driver->Abort(Status::Aborted(""));
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/transactions/transaction_tracker.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/transactions/transaction_tracker.cc b/src/kudu/tablet/transactions/transaction_tracker.cc
index eeb68da..ca21cd5 100644
--- a/src/kudu/tablet/transactions/transaction_tracker.cc
+++ b/src/kudu/tablet/transactions/transaction_tracker.cc
@@ -21,7 +21,6 @@
 #include <limits>
 #include <vector>
 
-#include <boost/foreach.hpp>
 
 #include "kudu/gutil/map-util.h"
 #include "kudu/gutil/strings/substitute.h"
@@ -185,7 +184,7 @@ void TransactionTracker::GetPendingTransactions(
     vector<scoped_refptr<TransactionDriver> >* pending_out) const {
   DCHECK(pending_out->empty());
   lock_guard<simple_spinlock> l(&lock_);
-  BOOST_FOREACH(const TxnMap::value_type& e, pending_txns_) {
+  for (const TxnMap::value_type& e : pending_txns_) {
     // Increments refcount of each transaction.
     pending_out->push_back(e.first);
   }
@@ -229,7 +228,7 @@ Status TransactionTracker::WaitForAllToFinish(const MonoDelta& timeout) const {
     wait_time = std::min(wait_time * 5 / 4, 1000000);
 
     LOG(INFO) << "Dumping currently running transactions: ";
-    BOOST_FOREACH(scoped_refptr<TransactionDriver> driver, txns) {
+    for (scoped_refptr<TransactionDriver> driver : txns) {
       LOG(INFO) << driver->ToString();
     }
     SleepFor(MonoDelta::FromMicroseconds(wait_time));

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tablet/transactions/write_transaction.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tablet/transactions/write_transaction.cc b/src/kudu/tablet/transactions/write_transaction.cc
index 7d6b242..013b312 100644
--- a/src/kudu/tablet/transactions/write_transaction.cc
+++ b/src/kudu/tablet/transactions/write_transaction.cc
@@ -125,7 +125,7 @@ Status WriteTransaction::Apply(gscoped_ptr<CommitMsg>* commit_msg) {
 
   // Add per-row errors to the result, update metrics.
   int i = 0;
-  BOOST_FOREACH(const RowOp* op, state()->row_ops()) {
+  for (const RowOp* op : state()->row_ops()) {
     if (state()->response() != NULL && op->result->has_failed_status()) {
       // Replicas disregard the per row errors, for now
       // TODO check the per-row errors against the leader's, at least in debug mode
@@ -285,7 +285,7 @@ void WriteTransactionState::Commit() {
 void WriteTransactionState::ReleaseTxResultPB(TxResultPB* result) const {
   result->Clear();
   result->mutable_ops()->Reserve(row_ops_.size());
-  BOOST_FOREACH(RowOp* op, row_ops_) {
+  for (RowOp* op : row_ops_) {
     result->mutable_ops()->AddAllocated(CHECK_NOTNULL(op->result.release()));
   }
 }
@@ -312,7 +312,7 @@ void WriteTransactionState::UpdateMetricsForOp(const RowOp& op) {
 
 void WriteTransactionState::release_row_locks() {
   // free the row locks
-  BOOST_FOREACH(RowOp* op, row_ops_) {
+  for (RowOp* op : row_ops_) {
     op->row_lock.Release();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/fs_dump-tool.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/fs_dump-tool.cc b/src/kudu/tools/fs_dump-tool.cc
index 9d76ff8..24c151f 100644
--- a/src/kudu/tools/fs_dump-tool.cc
+++ b/src/kudu/tools/fs_dump-tool.cc
@@ -24,7 +24,6 @@
 #include <sstream>
 #include <vector>
 
-#include <boost/foreach.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
 
@@ -96,7 +95,7 @@ void PrintUsageToStream(const std::string& prog_name, std::ostream* out) {
        << "-fs_wal_dir <dir> -fs_data_dirs <dirs> <command> <options> "
        << std::endl << std::endl;
   *out << "Commands: " << std::endl;
-  BOOST_FOREACH(const CommandHandler& handler, kCommandHandlers) {
+  for (const CommandHandler& handler : kCommandHandlers) {
     *out << handler.name_ << ": " << handler.desc_ << std::endl;
   }
 }
@@ -110,7 +109,7 @@ bool ValidateCommand(int argc, char** argv, CommandType* out) {
     Usage(argv[0], "At least one command must be specified!");
     return false;
   }
-  BOOST_FOREACH(const CommandHandler& handler, kCommandHandlers) {
+  for (const CommandHandler& handler : kCommandHandlers) {
     if (argv[1] == handler.name_) {
       *out = handler.type_;
       return true;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/fs_list-tool.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/fs_list-tool.cc b/src/kudu/tools/fs_list-tool.cc
index 14f6705..996a70f 100644
--- a/src/kudu/tools/fs_list-tool.cc
+++ b/src/kudu/tools/fs_list-tool.cc
@@ -23,7 +23,6 @@
 #include <sstream>
 #include <vector>
 
-#include <boost/foreach.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
 
@@ -76,7 +75,7 @@ void PrintUsageToStream(const string& prog_name, std::ostream* out) {
        << "-fs_wal_dir <dir> -fs_data_dirs <dirs> <command> [option] "
        << std::endl << std::endl
        << "Commands: " << std::endl;
-  BOOST_FOREACH(const CommandHandler& handler, kCommandHandlers) {
+  for (const CommandHandler& handler : kCommandHandlers) {
     *out << handler.name_ << ": " << handler.desc_ << std::endl;
   }
 }
@@ -92,7 +91,7 @@ bool ValidateCommand(int argc, char** argv, CommandType* out) {
     Usage(argv[0], "At least one command must be specified!");
     return false;
   }
-  BOOST_FOREACH(const CommandHandler& handler, kCommandHandlers) {
+  for (const CommandHandler& handler : kCommandHandlers) {
     if (argv[1] == handler.name_) {
       *out = handler.type_;
       return true;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/fs_tool.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/fs_tool.cc b/src/kudu/tools/fs_tool.cc
index fe2aef8..83f26bb 100644
--- a/src/kudu/tools/fs_tool.cc
+++ b/src/kudu/tools/fs_tool.cc
@@ -22,7 +22,6 @@
 #include <memory>
 #include <vector>
 
-#include <boost/foreach.hpp>
 #include <boost/function.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
@@ -126,7 +125,7 @@ Status FsTool::ListAllLogSegments() {
   vector<string> children;
   RETURN_NOT_OK_PREPEND(fs_manager_->ListDir(wals_dir, &children),
                         "Could not list log directories");
-  BOOST_FOREACH(const string& child, children) {
+  for (const string& child : children) {
     if (HasPrefixString(child, ".")) {
       // Hidden files or ./..
       VLOG(1) << "Ignoring hidden file in root log directory " << child;
@@ -167,7 +166,7 @@ Status FsTool::ListAllTablets() {
 
   vector<string> tablets;
   RETURN_NOT_OK(fs_manager_->ListTabletIds(&tablets));
-  BOOST_FOREACH(const string& tablet, tablets) {
+  for (const string& tablet : tablets) {
     if (detail_level_ >= HEADERS_ONLY) {
       std::cout << "Tablet: " << tablet << std::endl;
       RETURN_NOT_OK(PrintTabletMeta(tablet, 2));
@@ -183,7 +182,7 @@ Status FsTool::ListSegmentsInDir(const string& segments_dir) {
   RETURN_NOT_OK_PREPEND(fs_manager_->ListDir(segments_dir, &segments),
                         "Unable to list log segments");
   std::cout << "Segments in " << segments_dir << ":" << std::endl;
-  BOOST_FOREACH(const string& segment, segments) {
+  for (const string& segment : segments) {
     if (!log::IsLogFileName(segment)) {
       continue;
     }
@@ -249,7 +248,7 @@ Status FsTool::ListBlocksForAllTablets() {
 
   vector<string> tablets;
   RETURN_NOT_OK(fs_manager_->ListTabletIds(&tablets));
-  BOOST_FOREACH(string tablet, tablets) {
+  for (string tablet : tablets) {
     RETURN_NOT_OK(ListBlocksForTablet(tablet));
   }
   return Status::OK();
@@ -271,7 +270,7 @@ Status FsTool::ListBlocksForTablet(const string& tablet_id) {
   Schema schema = meta->schema();
 
   size_t idx = 0;
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rs_meta, meta->rowsets())  {
+  for (const shared_ptr<RowSetMetadata>& rs_meta : meta->rowsets())  {
     std::cout << "Rowset " << idx++ << std::endl;
     RETURN_NOT_OK(ListBlocksInRowSet(schema, *rs_meta));
   }
@@ -282,7 +281,7 @@ Status FsTool::ListBlocksForTablet(const string& tablet_id) {
 Status FsTool::ListBlocksInRowSet(const Schema& schema,
                                   const RowSetMetadata& rs_meta) {
   RowSetMetadata::ColumnIdToBlockIdMap col_blocks = rs_meta.GetColumnBlocksById();
-  BOOST_FOREACH(const RowSetMetadata::ColumnIdToBlockIdMap::value_type& e, col_blocks) {
+  for (const RowSetMetadata::ColumnIdToBlockIdMap::value_type& e : col_blocks) {
     ColumnId col_id = e.first;
     const BlockId& block_id = e.second;
     std::cout << "Column block for column ID " << col_id;
@@ -294,11 +293,11 @@ Status FsTool::ListBlocksInRowSet(const Schema& schema,
     std::cout << block_id.ToString() << std::endl;
   }
 
-  BOOST_FOREACH(const BlockId& block, rs_meta.undo_delta_blocks()) {
+  for (const BlockId& block : rs_meta.undo_delta_blocks()) {
     std::cout << "UNDO: " << block.ToString() << std::endl;
   }
 
-  BOOST_FOREACH(const BlockId& block, rs_meta.redo_delta_blocks()) {
+  for (const BlockId& block : rs_meta.redo_delta_blocks()) {
     std::cout << "REDO: " << block.ToString() << std::endl;
   }
 
@@ -322,7 +321,7 @@ Status FsTool::DumpTabletBlocks(const std::string& tablet_id,
   Schema schema = meta->schema();
 
   size_t idx = 0;
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rs_meta, meta->rowsets())  {
+  for (const shared_ptr<RowSetMetadata>& rs_meta : meta->rowsets())  {
     std::cout << std::endl << Indent(indent) << "Dumping rowset " << idx++
               << std::endl << Indent(indent) << kSeparatorLine;
     RETURN_NOT_OK(DumpRowSetInternal(meta->schema(), rs_meta, opts, indent + 2));
@@ -341,7 +340,7 @@ Status FsTool::DumpTabletData(const std::string& tablet_id) {
   RETURN_NOT_OK_PREPEND(t.Open(), "Couldn't open tablet");
   vector<string> lines;
   RETURN_NOT_OK_PREPEND(t.DebugDump(&lines), "Couldn't dump tablet");
-  BOOST_FOREACH(const string& line, lines) {
+  for (const string& line : lines) {
     std::cout << line << std::endl;
   }
   return Status::OK();
@@ -356,7 +355,7 @@ Status FsTool::DumpRowSet(const string& tablet_id,
   scoped_refptr<TabletMetadata> meta;
   RETURN_NOT_OK(TabletMetadata::Load(fs_manager_.get(), tablet_id, &meta));
 
-  BOOST_FOREACH(const shared_ptr<RowSetMetadata>& rs_meta, meta->rowsets())  {
+  for (const shared_ptr<RowSetMetadata>& rs_meta : meta->rowsets())  {
     if (rs_meta->id() == rowset_id) {
       return DumpRowSetInternal(meta->schema(), rs_meta, opts, indent);
     }
@@ -377,7 +376,7 @@ Status FsTool::DumpRowSetInternal(const Schema& schema,
             << std::endl;
 
   RowSetMetadata::ColumnIdToBlockIdMap col_blocks = rs_meta->GetColumnBlocksById();
-  BOOST_FOREACH(const RowSetMetadata::ColumnIdToBlockIdMap::value_type& e, col_blocks) {
+  for (const RowSetMetadata::ColumnIdToBlockIdMap::value_type& e : col_blocks) {
     ColumnId col_id = e.first;
     const BlockId& block_id = e.second;
 
@@ -394,7 +393,7 @@ Status FsTool::DumpRowSetInternal(const Schema& schema,
     std::cout << std::endl;
   }
 
-  BOOST_FOREACH(const BlockId& block, rs_meta->undo_delta_blocks()) {
+  for (const BlockId& block : rs_meta->undo_delta_blocks()) {
     std::cout << Indent(indent) << "Dumping undo delta block " << block << ":" << std::endl
               << Indent(indent) << kSeparatorLine;
     RETURN_NOT_OK(DumpDeltaCFileBlockInternal(schema,
@@ -407,7 +406,7 @@ Status FsTool::DumpRowSetInternal(const Schema& schema,
     std::cout << std::endl;
   }
 
-  BOOST_FOREACH(const BlockId& block, rs_meta->redo_delta_blocks()) {
+  for (const BlockId& block : rs_meta->redo_delta_blocks()) {
     std::cout << Indent(indent) << "Dumping redo delta block " << block << ":" << std::endl
               << Indent(indent) << kSeparatorLine;
     RETURN_NOT_OK(DumpDeltaCFileBlockInternal(schema,
@@ -557,7 +556,7 @@ Status FsTool::DumpDeltaCFileBlockInternal(const Schema& schema,
     RETURN_NOT_OK(delta_iter->FilterColumnIdsAndCollectDeltas(vector<ColumnId>(),
                                                               &out,
                                                               &arena));
-    BOOST_FOREACH(const DeltaKeyAndUpdate& upd, out) {
+    for (const DeltaKeyAndUpdate& upd : out) {
       if (detail_level_ > HEADERS_ONLY) {
         std::cout << Indent(indent) << upd.key.ToString() << " "
                   << RowChangeList(upd.cell).ToString(schema) << std::endl;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/insert-generated-rows.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/insert-generated-rows.cc b/src/kudu/tools/insert-generated-rows.cc
index 6422933..8e59857 100644
--- a/src/kudu/tools/insert-generated-rows.cc
+++ b/src/kudu/tools/insert-generated-rows.cc
@@ -19,7 +19,6 @@
 // First column is in ascending order, the rest are random data.
 // Helps make things like availability demos a little easier.
 
-#include <boost/foreach.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
 #include <iostream>
@@ -107,7 +106,7 @@ static int WriteRandomDataToTable(int argc, char** argv) {
       bool overflow;
       session->GetPendingErrors(&errors, &overflow);
       CHECK(!overflow);
-      BOOST_FOREACH(const client::KuduError* e, errors) {
+      for (const client::KuduError* e : errors) {
         if (e->status().IsAlreadyPresent()) {
           LOG(WARNING) << "Ignoring insert error: " << e->status().ToString();
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/ksck-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck-test.cc b/src/kudu/tools/ksck-test.cc
index aeb4a7c..5cbdee0 100644
--- a/src/kudu/tools/ksck-test.cc
+++ b/src/kudu/tools/ksck-test.cc
@@ -15,7 +15,6 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#include <boost/foreach.hpp>
 #include <boost/lexical_cast.hpp>
 #include <gtest/gtest.h>
 #include <memory>
@@ -119,7 +118,7 @@ class KsckTest : public KuduTest {
  protected:
   void CreateDefaultAssignmentPlan(int tablets_count) {
     while (tablets_count > 0) {
-      BOOST_FOREACH(const KsckMaster::TSMap::value_type& entry, master_->tablet_servers_) {
+      for (const KsckMaster::TSMap::value_type& entry : master_->tablet_servers_) {
         if (tablets_count-- == 0) return;
         assignment_plan_.push_back(entry.second->uuid());
       }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/ksck.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck.cc b/src/kudu/tools/ksck.cc
index f02ceda..5ab4e74 100644
--- a/src/kudu/tools/ksck.cc
+++ b/src/kudu/tools/ksck.cc
@@ -17,7 +17,6 @@
 
 #include "kudu/tools/ksck.h"
 
-#include <boost/foreach.hpp>
 #include <glog/logging.h>
 #include <iostream>
 #include <unordered_set>
@@ -96,7 +95,7 @@ Status KsckCluster::FetchTableAndTabletInfo() {
   RETURN_NOT_OK(master_->Connect());
   RETURN_NOT_OK(RetrieveTablesList());
   RETURN_NOT_OK(RetrieveTabletServers());
-  BOOST_FOREACH(const shared_ptr<KsckTable>& table, tables()) {
+  for (const shared_ptr<KsckTable>& table : tables()) {
     RETURN_NOT_OK(RetrieveTabletsList(table));
   }
   return Status::OK();
@@ -140,7 +139,7 @@ Status Ksck::CheckTabletServersRunning() {
 
   int bad_servers = 0;
   VLOG(1) << "Connecting to all the Tablet Servers";
-  BOOST_FOREACH(const KsckMaster::TSMap::value_type& entry, cluster_->tablet_servers()) {
+  for (const KsckMaster::TSMap::value_type& entry : cluster_->tablet_servers()) {
     Status s = ConnectToTabletServer(entry.second);
     if (!s.ok()) {
       bad_servers++;
@@ -180,7 +179,7 @@ Status Ksck::CheckTablesConsistency() {
 
   VLOG(1) << "Verifying each table";
   int bad_tables_count = 0;
-  BOOST_FOREACH(const shared_ptr<KsckTable> &table, cluster_->tables()) {
+  for (const shared_ptr<KsckTable> &table : cluster_->tables()) {
     if (!VerifyTable(table)) {
       bad_tables_count++;
     }
@@ -293,10 +292,10 @@ Status Ksck::ChecksumData(const vector<string>& tables,
   TabletTableMap tablet_table_map;
 
   int num_tablet_replicas = 0;
-  BOOST_FOREACH(const shared_ptr<KsckTable>& table, cluster_->tables()) {
+  for (const shared_ptr<KsckTable>& table : cluster_->tables()) {
     VLOG(1) << "Table: " << table->name();
     if (!tables_filter.empty() && !ContainsKey(tables_filter, table->name())) continue;
-    BOOST_FOREACH(const shared_ptr<KsckTablet>& tablet, table->tablets()) {
+    for (const shared_ptr<KsckTablet>& tablet : table->tablets()) {
       VLOG(1) << "Tablet: " << tablet->id();
       if (!tablets_filter.empty() && !ContainsKey(tablets_filter, tablet->id())) continue;
       InsertOrDie(&tablet_table_map, tablet, table);
@@ -324,10 +323,10 @@ Status Ksck::ChecksumData(const vector<string>& tables,
   scoped_refptr<ChecksumResultReporter> reporter(new ChecksumResultReporter(num_tablet_replicas));
 
   // Create a queue of checksum callbacks grouped by the tablet server.
-  BOOST_FOREACH(const TabletTableMap::value_type& entry, tablet_table_map) {
+  for (const TabletTableMap::value_type& entry : tablet_table_map) {
     const shared_ptr<KsckTablet>& tablet = entry.first;
     const shared_ptr<KsckTable>& table = entry.second;
-    BOOST_FOREACH(const shared_ptr<KsckTabletReplica>& replica, tablet->replicas()) {
+    for (const shared_ptr<KsckTabletReplica>& replica : tablet->replicas()) {
       const shared_ptr<KsckTabletServer>& ts =
           FindOrDie(cluster_->tablet_servers(), replica->ts_uuid());
 
@@ -346,7 +345,7 @@ Status Ksck::ChecksumData(const vector<string>& tables,
   // Kick off checksum scans in parallel. For each tablet server, we start
   // scan_concurrency scans. Each callback then initiates one additional
   // scan when it returns if the queue for that TS is not empty.
-  BOOST_FOREACH(const TabletServerQueueMap::value_type& entry, tablet_server_queues) {
+  for (const TabletServerQueueMap::value_type& entry : tablet_server_queues) {
     const shared_ptr<KsckTabletServer>& tablet_server = entry.first;
     const TabletQueue& queue = entry.second;
     queue->Shutdown(); // Ensures that BlockingGet() will not block.
@@ -375,9 +374,9 @@ Status Ksck::ChecksumData(const vector<string>& tables,
   int num_errors = 0;
   int num_mismatches = 0;
   int num_results = 0;
-  BOOST_FOREACH(const shared_ptr<KsckTable>& table, cluster_->tables()) {
+  for (const shared_ptr<KsckTable>& table : cluster_->tables()) {
     bool printed_table_name = false;
-    BOOST_FOREACH(const shared_ptr<KsckTablet>& tablet, table->tablets()) {
+    for (const shared_ptr<KsckTablet>& tablet : table->tablets()) {
       if (ContainsKey(checksums, tablet->id())) {
         if (!printed_table_name) {
           printed_table_name = true;
@@ -388,7 +387,7 @@ Status Ksck::ChecksumData(const vector<string>& tables,
         bool seen_first_replica = false;
         uint64_t first_checksum = 0;
 
-        BOOST_FOREACH(const ChecksumResultReporter::ReplicaResultMap::value_type& r,
+        for (const ChecksumResultReporter::ReplicaResultMap::value_type& r :
                       FindOrDie(checksums, tablet->id())) {
           const string& replica_uuid = r.first;
 
@@ -447,7 +446,7 @@ bool Ksck::VerifyTable(const shared_ptr<KsckTable>& table) {
                         tablets_count, table->name(), table_num_replicas);
   int bad_tablets_count = 0;
   // TODO check if the tablets are contiguous and in order.
-  BOOST_FOREACH(const shared_ptr<KsckTablet> &tablet, tablets) {
+  for (const shared_ptr<KsckTablet> &tablet : tablets) {
     if (!VerifyTablet(tablet, table_num_replicas)) {
       bad_tablets_count++;
     }
@@ -474,7 +473,7 @@ bool Ksck::VerifyTablet(const shared_ptr<KsckTablet>& tablet, int table_num_repl
   }
   int leaders_count = 0;
   int followers_count = 0;
-  BOOST_FOREACH(const shared_ptr<KsckTabletReplica> replica, replicas) {
+  for (const shared_ptr<KsckTabletReplica> replica : replicas) {
     if (replica->is_leader()) {
       VLOG(1) << Substitute("Replica at $0 is a LEADER", replica->ts_uuid());
       leaders_count++;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/ksck_remote-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck_remote-test.cc b/src/kudu/tools/ksck_remote-test.cc
index 523fb34..579f571 100644
--- a/src/kudu/tools/ksck_remote-test.cc
+++ b/src/kudu/tools/ksck_remote-test.cc
@@ -137,7 +137,7 @@ class RemoteKsckTest : public KuduTest {
   vector<const KuduPartialRow*> GenerateSplitRows() {
     vector<const KuduPartialRow*> split_rows;
     vector<int> split_nums = { 33, 66 };
-    BOOST_FOREACH(int i, split_nums) {
+    for (int i : split_nums) {
       KuduPartialRow* row = schema_.NewRow();
       CHECK_OK(row->SetInt32(0, i));
       split_rows.push_back(row);

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/ksck_remote.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ksck_remote.cc b/src/kudu/tools/ksck_remote.cc
index fe1efcf..c800ee4 100644
--- a/src/kudu/tools/ksck_remote.cc
+++ b/src/kudu/tools/ksck_remote.cc
@@ -241,7 +241,7 @@ Status RemoteKsckMaster::RetrieveTabletServers(TSMap* tablet_servers) {
   rpc.set_timeout(GetDefaultTimeout());
   RETURN_NOT_OK(proxy_->ListTabletServers(req, &resp, &rpc));
   tablet_servers->clear();
-  BOOST_FOREACH(const master::ListTabletServersResponsePB_Entry& e, resp.servers()) {
+  for (const master::ListTabletServersResponsePB_Entry& e : resp.servers()) {
     HostPortPB addr = e.registration().rpc_addresses(0);
     vector<Sockaddr> addresses;
     RETURN_NOT_OK(ParseAddressList(HostPort(addr.host(), addr.port()).ToString(),
@@ -264,7 +264,7 @@ Status RemoteKsckMaster::RetrieveTablesList(vector<shared_ptr<KsckTable> >* tabl
     return StatusFromPB(resp.error().status());
   }
   vector<shared_ptr<KsckTable> > tables_temp;
-  BOOST_FOREACH(const master::ListTablesResponsePB_TableInfo& info, resp.tables()) {
+  for (const master::ListTablesResponsePB_TableInfo& info : resp.tables()) {
     Schema schema;
     int num_replicas;
     RETURN_NOT_OK(GetTableInfo(info.name(), &schema, &num_replicas));
@@ -301,10 +301,10 @@ Status RemoteKsckMaster::GetTabletsBatch(const string& table_name,
 
   rpc.set_timeout(GetDefaultTimeout());
   RETURN_NOT_OK(proxy_->GetTableLocations(req, &resp, &rpc));
-  BOOST_FOREACH(const master::TabletLocationsPB& locations, resp.tablet_locations()) {
+  for (const master::TabletLocationsPB& locations : resp.tablet_locations()) {
     shared_ptr<KsckTablet> tablet(new KsckTablet(locations.tablet_id()));
     vector<shared_ptr<KsckTabletReplica> > replicas;
-    BOOST_FOREACH(const master::TabletLocationsPB_ReplicaPB& replica, locations.replicas()) {
+    for (const master::TabletLocationsPB_ReplicaPB& replica : locations.replicas()) {
       bool is_leader = replica.role() == consensus::RaftPeerPB::LEADER;
       bool is_follower = replica.role() == consensus::RaftPeerPB::FOLLOWER;
       replicas.push_back(shared_ptr<KsckTabletReplica>(

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/kudu-admin-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/kudu-admin-test.cc b/src/kudu/tools/kudu-admin-test.cc
index a9474b2..9ba8bd8 100644
--- a/src/kudu/tools/kudu-admin-test.cc
+++ b/src/kudu/tools/kudu-admin-test.cc
@@ -17,7 +17,6 @@
 //
 // Tests for the kudu-admin command-line tool.
 
-#include <boost/foreach.hpp>
 #include <gtest/gtest.h>
 
 #include "kudu/client/client.h"
@@ -82,7 +81,7 @@ TEST_F(AdminCliTest, TestChangeConfig) {
   InsertOrDie(&active_tablet_servers, follower->uuid(), follower);
 
   TServerDetails* new_node = NULL;
-  BOOST_FOREACH(TServerDetails* ts, tservers) {
+  for (TServerDetails* ts : tservers) {
     if (!ContainsKey(active_tablet_servers, ts->uuid())) {
       new_node = ts;
       break;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/kudu-admin.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/kudu-admin.cc b/src/kudu/tools/kudu-admin.cc
index 6c472ce..d2952ef 100644
--- a/src/kudu/tools/kudu-admin.cc
+++ b/src/kudu/tools/kudu-admin.cc
@@ -17,7 +17,6 @@
 //
 // Tool to administer a cluster from the CLI.
 
-#include <boost/foreach.hpp>
 #include <boost/optional.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
@@ -278,7 +277,7 @@ Status ClusterAdminClient::GetTabletLeader(const string& tablet_id,
   RETURN_NOT_OK(GetTabletLocations(tablet_id, &locations));
   CHECK_EQ(tablet_id, locations.tablet_id()) << locations.ShortDebugString();
   bool found = false;
-  BOOST_FOREACH(const TabletLocationsPB::ReplicaPB& replica, locations.replicas()) {
+  for (const TabletLocationsPB::ReplicaPB& replica : locations.replicas()) {
     if (replica.role() == RaftPeerPB::LEADER) {
       *ts_info = replica.ts_info();
       found = true;
@@ -311,7 +310,7 @@ Status ClusterAdminClient::ListTabletServers(
 Status ClusterAdminClient::GetFirstRpcAddressForTS(const std::string& uuid, HostPort* hp) {
   RepeatedPtrField<ListTabletServersResponsePB::Entry> servers;
   RETURN_NOT_OK(ListTabletServers(&servers));
-  BOOST_FOREACH(const ListTabletServersResponsePB::Entry& server, servers) {
+  for (const ListTabletServersResponsePB::Entry& server : servers) {
     if (server.instance_id().permanent_uuid() == uuid) {
       if (!server.has_registration() || server.registration().rpc_addresses_size() == 0) {
         break;
@@ -328,7 +327,7 @@ Status ClusterAdminClient::GetFirstRpcAddressForTS(const std::string& uuid, Host
 Status ClusterAdminClient::ListTables() {
   vector<string> tables;
   RETURN_NOT_OK(kudu_client_->ListTables(&tables));
-  BOOST_FOREACH(const string& table, tables) {
+  for (const string& table : tables) {
     std::cout << table << std::endl;
   }
   return Status::OK();

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/kudu-ksck.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/kudu-ksck.cc b/src/kudu/tools/kudu-ksck.cc
index dacd797..86f4a3a 100644
--- a/src/kudu/tools/kudu-ksck.cc
+++ b/src/kudu/tools/kudu-ksck.cc
@@ -139,7 +139,7 @@ int main(int argc, char** argv) {
   cerr << "==================" << endl;
   cerr << "Errors:" << endl;
   cerr << "==================" << endl;
-  BOOST_FOREACH(const string& s, error_messages) {
+  for (const string& s : error_messages) {
     cerr << s << endl;
   }
   cerr << endl;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/kudu-ts-cli-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/kudu-ts-cli-test.cc b/src/kudu/tools/kudu-ts-cli-test.cc
index 6a353dc..2a65de0 100644
--- a/src/kudu/tools/kudu-ts-cli-test.cc
+++ b/src/kudu/tools/kudu-ts-cli-test.cc
@@ -18,7 +18,6 @@
 // Tests for the kudu-admin command-line tool.
 
 #include <boost/assign/list_of.hpp>
-#include <boost/foreach.hpp>
 #include <gtest/gtest.h>
 
 #include "kudu/gutil/map-util.h"
@@ -69,7 +68,7 @@ TEST_F(KuduTsCliTest, TestDeleteTablet) {
   workload.Setup(); // Easy way to create a new tablet.
 
   vector<tserver::ListTabletsResponsePB::StatusAndSchemaPB> tablets;
-  BOOST_FOREACH(const itest::TabletServerMap::value_type& entry, ts_map_) {
+  for (const itest::TabletServerMap::value_type& entry : ts_map_) {
     TServerDetails* ts = entry.second;
     ASSERT_OK(itest::WaitForNumTabletsOnTS(ts, 1, timeout, &tablets));
   }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tools/ts-cli.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tools/ts-cli.cc b/src/kudu/tools/ts-cli.cc
index 9d77023..dd204b8 100644
--- a/src/kudu/tools/ts-cli.cc
+++ b/src/kudu/tools/ts-cli.cc
@@ -17,7 +17,6 @@
 //
 // Tool to query tablet server operational data
 
-#include <boost/foreach.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
 #include <iostream>
@@ -236,7 +235,7 @@ Status TsAdminClient::GetTabletSchema(const std::string& tablet_id,
   VLOG(1) << "Fetching schema for tablet " << tablet_id;
   vector<StatusAndSchemaPB> tablets;
   RETURN_NOT_OK(ListTablets(&tablets));
-  BOOST_FOREACH(const StatusAndSchemaPB& pair, tablets) {
+  for (const StatusAndSchemaPB& pair : tablets) {
     if (pair.tablet_status().tablet_id() == tablet_id) {
       *schema = pair.schema();
       return Status::OK();
@@ -276,7 +275,7 @@ Status TsAdminClient::DumpTablet(const std::string& tablet_id) {
 
     rows.clear();
     RETURN_NOT_OK(KuduScanner::Data::ExtractRows(rpc, &schema, &resp, &rows));
-    BOOST_FOREACH(const KuduRowResult& r, rows) {
+    for (const KuduRowResult& r : rows) {
       std::cout << r.ToString() << std::endl;
     }
 
@@ -389,7 +388,7 @@ static int TsCliMain(int argc, char** argv) {
     vector<StatusAndSchemaPB> tablets;
     RETURN_NOT_OK_PREPEND_FROM_MAIN(client.ListTablets(&tablets),
                                     "Unable to list tablets on " + addr);
-    BOOST_FOREACH(const StatusAndSchemaPB& status_and_schema, tablets) {
+    for (const StatusAndSchemaPB& status_and_schema : tablets) {
       Schema schema;
       RETURN_NOT_OK_PREPEND_FROM_MAIN(SchemaFromPB(status_and_schema.schema(), &schema),
                                       "Unable to deserialize schema from " + addr);
@@ -423,7 +422,7 @@ static int TsCliMain(int argc, char** argv) {
     RETURN_NOT_OK_PREPEND_FROM_MAIN(client.ListTablets(&tablets),
                                     "Unable to list tablets on " + addr);
     bool all_running = true;
-    BOOST_FOREACH(const StatusAndSchemaPB& status_and_schema, tablets) {
+    for (const StatusAndSchemaPB& status_and_schema : tablets) {
       TabletStatusPB ts = status_and_schema.tablet_status();
       if (ts.state() != tablet::RUNNING) {
         std::cout << "Tablet id: " << ts.tablet_id() << " is "

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/heartbeater.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/heartbeater.cc b/src/kudu/tserver/heartbeater.cc
index 6a92fcf..18687be 100644
--- a/src/kudu/tserver/heartbeater.cc
+++ b/src/kudu/tserver/heartbeater.cc
@@ -17,7 +17,6 @@
 
 #include "kudu/tserver/heartbeater.h"
 
-#include <boost/foreach.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
 #include <memory>
@@ -207,7 +206,7 @@ Status Heartbeater::Thread::FindLeaderMaster(const MonoTime& deadline,
     return Status::OK();
   }
   vector<Sockaddr> master_sock_addrs;
-  BOOST_FOREACH(const HostPort& master_addr, master_addrs_) {
+  for (const HostPort& master_addr : master_addrs_) {
     vector<Sockaddr> addrs;
     Status s = master_addr.ResolveAddresses(&addrs);
     if (!s.ok()) {

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/remote_bootstrap_client-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/remote_bootstrap_client-test.cc b/src/kudu/tserver/remote_bootstrap_client-test.cc
index eb51d67..eda5f0c 100644
--- a/src/kudu/tserver/remote_bootstrap_client-test.cc
+++ b/src/kudu/tserver/remote_bootstrap_client-test.cc
@@ -181,14 +181,14 @@ namespace {
 vector<BlockId> GetAllSortedBlocks(const tablet::TabletSuperBlockPB& sb) {
   vector<BlockId> data_blocks;
 
-  BOOST_FOREACH(const tablet::RowSetDataPB& rowset, sb.rowsets()) {
-    BOOST_FOREACH(const tablet::DeltaDataPB& redo, rowset.redo_deltas()) {
+  for (const tablet::RowSetDataPB& rowset : sb.rowsets()) {
+    for (const tablet::DeltaDataPB& redo : rowset.redo_deltas()) {
       data_blocks.push_back(BlockId::FromPB(redo.block()));
     }
-    BOOST_FOREACH(const tablet::DeltaDataPB& undo, rowset.undo_deltas()) {
+    for (const tablet::DeltaDataPB& undo : rowset.undo_deltas()) {
       data_blocks.push_back(BlockId::FromPB(undo.block()));
     }
-    BOOST_FOREACH(const tablet::ColumnDataPB& column, rowset.columns()) {
+    for (const tablet::ColumnDataPB& column : rowset.columns()) {
       data_blocks.push_back(BlockId::FromPB(column.block()));
     }
     if (rowset.has_bloom_block()) {
@@ -226,13 +226,13 @@ TEST_F(RemoteBootstrapClientTest, TestDownloadAllBlocks) {
   // Verify that the old blocks aren't found. We're using a different
   // FsManager than 'tablet_peer', so the only way an old block could end
   // up in ours is due to a remote bootstrap client bug.
-  BOOST_FOREACH(const BlockId& block_id, old_data_blocks) {
+  for (const BlockId& block_id : old_data_blocks) {
     gscoped_ptr<fs::ReadableBlock> block;
     Status s = fs_manager_->OpenBlock(block_id, &block);
     ASSERT_TRUE(s.IsNotFound()) << "Expected block not found: " << s.ToString();
   }
   // And the new blocks are all present.
-  BOOST_FOREACH(const BlockId& block_id, new_data_blocks) {
+  for (const BlockId& block_id : new_data_blocks) {
     gscoped_ptr<fs::ReadableBlock> block;
     ASSERT_OK(fs_manager_->OpenBlock(block_id, &block));
   }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/remote_bootstrap_client.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/remote_bootstrap_client.cc b/src/kudu/tserver/remote_bootstrap_client.cc
index 7d4cda8..1eb0e4f 100644
--- a/src/kudu/tserver/remote_bootstrap_client.cc
+++ b/src/kudu/tserver/remote_bootstrap_client.cc
@@ -344,7 +344,7 @@ Status RemoteBootstrapClient::DownloadWALs() {
   int num_segments = wal_seqnos_.size();
   LOG_WITH_PREFIX(INFO) << "Starting download of " << num_segments << " WAL segments...";
   uint64_t counter = 0;
-  BOOST_FOREACH(uint64_t seg_seqno, wal_seqnos_) {
+  for (uint64_t seg_seqno : wal_seqnos_) {
     UpdateStatusMessage(Substitute("Downloading WAL segment with seq. number $0 ($1/$2)",
                                    seg_seqno, counter + 1, num_segments));
     RETURN_NOT_OK(DownloadWAL(seg_seqno));
@@ -360,7 +360,7 @@ Status RemoteBootstrapClient::DownloadBlocks() {
 
   // Count up the total number of blocks to download.
   int num_blocks = 0;
-  BOOST_FOREACH(const RowSetDataPB& rowset, superblock_->rowsets()) {
+  for (const RowSetDataPB& rowset : superblock_->rowsets()) {
     num_blocks += rowset.columns_size();
     num_blocks += rowset.redo_deltas_size();
     num_blocks += rowset.undo_deltas_size();
@@ -378,16 +378,16 @@ Status RemoteBootstrapClient::DownloadBlocks() {
   new_sb->CopyFrom(*superblock_);
   int block_count = 0;
   LOG_WITH_PREFIX(INFO) << "Starting download of " << num_blocks << " data blocks...";
-  BOOST_FOREACH(RowSetDataPB& rowset, *new_sb->mutable_rowsets()) {
-    BOOST_FOREACH(ColumnDataPB& col, *rowset.mutable_columns()) {
+  for (RowSetDataPB& rowset : *new_sb->mutable_rowsets()) {
+    for (ColumnDataPB& col : *rowset.mutable_columns()) {
       RETURN_NOT_OK(DownloadAndRewriteBlock(col.mutable_block(),
                                             &block_count, num_blocks));
     }
-    BOOST_FOREACH(DeltaDataPB& redo, *rowset.mutable_redo_deltas()) {
+    for (DeltaDataPB& redo : *rowset.mutable_redo_deltas()) {
       RETURN_NOT_OK(DownloadAndRewriteBlock(redo.mutable_block(),
                                             &block_count, num_blocks));
     }
-    BOOST_FOREACH(DeltaDataPB& undo, *rowset.mutable_undo_deltas()) {
+    for (DeltaDataPB& undo : *rowset.mutable_undo_deltas()) {
       RETURN_NOT_OK(DownloadAndRewriteBlock(undo.mutable_block(),
                                             &block_count, num_blocks));
     }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/remote_bootstrap_service-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/remote_bootstrap_service-test.cc b/src/kudu/tserver/remote_bootstrap_service-test.cc
index e1e4183..ebf9c69 100644
--- a/src/kudu/tserver/remote_bootstrap_service-test.cc
+++ b/src/kudu/tserver/remote_bootstrap_service-test.cc
@@ -16,7 +16,6 @@
 // under the License.
 #include "kudu/tserver/remote_bootstrap-test-base.h"
 
-#include <boost/foreach.hpp>
 #include <gflags/gflags.h>
 #include <limits>
 
@@ -223,7 +222,7 @@ TEST_F(RemoteBootstrapServiceTest, TestInvalidSessionId) {
   bad_session_ids.push_back(GetLocalUUID());
 
   // Fetch a block for a non-existent session.
-  BOOST_FOREACH(const string& session_id, bad_session_ids) {
+  for (const string& session_id : bad_session_ids) {
     FetchDataResponsePB resp;
     RpcController controller;
     DataIdPB data_id;
@@ -235,7 +234,7 @@ TEST_F(RemoteBootstrapServiceTest, TestInvalidSessionId) {
   }
 
   // End a non-existent session.
-  BOOST_FOREACH(const string& session_id, bad_session_ids) {
+  for (const string& session_id : bad_session_ids) {
     EndRemoteBootstrapSessionResponsePB resp;
     RpcController controller;
     Status status = DoEndRemoteBootstrapSession(session_id, true, NULL, &resp, &controller);

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/remote_bootstrap_service.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/remote_bootstrap_service.cc b/src/kudu/tserver/remote_bootstrap_service.cc
index 119c452..eb9ab89 100644
--- a/src/kudu/tserver/remote_bootstrap_service.cc
+++ b/src/kudu/tserver/remote_bootstrap_service.cc
@@ -18,7 +18,6 @@
 
 #include <algorithm>
 #include <boost/date_time/time_duration.hpp>
-#include <boost/foreach.hpp>
 #include <boost/thread/locks.hpp>
 #include <gflags/gflags.h>
 #include <glog/logging.h>
@@ -150,7 +149,7 @@ void RemoteBootstrapServiceImpl::BeginRemoteBootstrapSession(
   resp->mutable_superblock()->CopyFrom(session->tablet_superblock());
   resp->mutable_initial_committed_cstate()->CopyFrom(session->initial_committed_cstate());
 
-  BOOST_FOREACH(const scoped_refptr<log::ReadableLogSegment>& segment, session->log_segments()) {
+  for (const scoped_refptr<log::ReadableLogSegment>& segment : session->log_segments()) {
     resp->add_wal_segment_seqnos(segment->header().sequence_number());
   }
 
@@ -258,10 +257,10 @@ void RemoteBootstrapServiceImpl::Shutdown() {
 
   // Destroy all remote bootstrap sessions.
   vector<string> session_ids;
-  BOOST_FOREACH(const MonoTimeMap::value_type& entry, session_expirations_) {
+  for (const MonoTimeMap::value_type& entry : session_expirations_) {
     session_ids.push_back(entry.first);
   }
-  BOOST_FOREACH(const string& session_id, session_ids) {
+  for (const string& session_id : session_ids) {
     LOG(INFO) << "Destroying remote bootstrap session " << session_id << " due to service shutdown";
     RemoteBootstrapErrorPB::Code app_error;
     CHECK_OK(DoEndRemoteBootstrapSessionUnlocked(session_id, &app_error));
@@ -339,14 +338,14 @@ void RemoteBootstrapServiceImpl::EndExpiredSessions() {
     MonoTime now = MonoTime::Now(MonoTime::FINE);
 
     vector<string> expired_session_ids;
-    BOOST_FOREACH(const MonoTimeMap::value_type& entry, session_expirations_) {
+    for (const MonoTimeMap::value_type& entry : session_expirations_) {
       const string& session_id = entry.first;
       const MonoTime& expiration = entry.second;
       if (expiration.ComesBefore(now)) {
         expired_session_ids.push_back(session_id);
       }
     }
-    BOOST_FOREACH(const string& session_id, expired_session_ids) {
+    for (const string& session_id : expired_session_ids) {
       LOG(INFO) << "Remote bootstrap session " << session_id
                 << " has expired. Terminating session.";
       RemoteBootstrapErrorPB::Code app_error;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/remote_bootstrap_session-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/remote_bootstrap_session-test.cc b/src/kudu/tserver/remote_bootstrap_session-test.cc
index 4852020..11443e7 100644
--- a/src/kudu/tserver/remote_bootstrap_session-test.cc
+++ b/src/kudu/tserver/remote_bootstrap_session-test.cc
@@ -16,7 +16,6 @@
 // under the License.
 #include "kudu/tablet/tablet-test-util.h"
 
-#include <boost/foreach.hpp>
 #include <glog/logging.h>
 #include <gtest/gtest.h>
 #include <memory>
@@ -291,14 +290,14 @@ TEST_F(RemoteBootstrapTest, TestBlocksAreFetchableAfterBeingDeleted) {
 
   // Gather all the blocks.
   vector<BlockId> data_blocks;
-  BOOST_FOREACH(const RowSetDataPB& rowset, tablet_superblock.rowsets()) {
-    BOOST_FOREACH(const DeltaDataPB& redo, rowset.redo_deltas()) {
+  for (const RowSetDataPB& rowset : tablet_superblock.rowsets()) {
+    for (const DeltaDataPB& redo : rowset.redo_deltas()) {
       data_blocks.push_back(BlockId::FromPB(redo.block()));
     }
-    BOOST_FOREACH(const DeltaDataPB& undo, rowset.undo_deltas()) {
+    for (const DeltaDataPB& undo : rowset.undo_deltas()) {
       data_blocks.push_back(BlockId::FromPB(undo.block()));
     }
-    BOOST_FOREACH(const ColumnDataPB& column, rowset.columns()) {
+    for (const ColumnDataPB& column : rowset.columns()) {
       data_blocks.push_back(BlockId::FromPB(column.block()));
     }
     if (rowset.has_bloom_block()) {
@@ -310,12 +309,12 @@ TEST_F(RemoteBootstrapTest, TestBlocksAreFetchableAfterBeingDeleted) {
   }
 
   // Delete them.
-  BOOST_FOREACH(const BlockId& block_id, data_blocks) {
+  for (const BlockId& block_id : data_blocks) {
     ASSERT_OK(fs_manager()->DeleteBlock(block_id));
   }
 
   // Read them back.
-  BOOST_FOREACH(const BlockId& block_id, data_blocks) {
+  for (const BlockId& block_id : data_blocks) {
     ASSERT_TRUE(session_->IsBlockOpenForTests(block_id));
     string data;
     RemoteBootstrapErrorPB::Code error_code;

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/remote_bootstrap_session.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/remote_bootstrap_session.cc b/src/kudu/tserver/remote_bootstrap_session.cc
index 7a80f93..8520810 100644
--- a/src/kudu/tserver/remote_bootstrap_session.cc
+++ b/src/kudu/tserver/remote_bootstrap_session.cc
@@ -92,7 +92,7 @@ Status RemoteBootstrapSession::Init() {
   // All subsequent requests should reuse the opened blocks.
   vector<BlockIdPB> data_blocks;
   TabletMetadata::CollectBlockIdPBs(tablet_superblock_, &data_blocks);
-  BOOST_FOREACH(const BlockIdPB& block_id, data_blocks) {
+  for (const BlockIdPB& block_id : data_blocks) {
     LOG(INFO) << "Opening block " << block_id.DebugString();
     RETURN_NOT_OK(OpenBlockUnlocked(BlockId::FromPB(block_id)));
   }
@@ -105,7 +105,7 @@ Status RemoteBootstrapSession::Init() {
   // The Log doesn't add the active segment to the log reader's list until
   // a header has been written to it (but it will not have a footer).
   RETURN_NOT_OK(tablet_peer_->log()->GetLogReader()->GetSegmentsSnapshot(&log_segments_));
-  BOOST_FOREACH(const scoped_refptr<ReadableLogSegment>& segment, log_segments_) {
+  for (const scoped_refptr<ReadableLogSegment>& segment : log_segments_) {
     RETURN_NOT_OK(OpenLogSegmentUnlocked(segment->header().sequence_number()));
   }
   LOG(INFO) << "Got snapshot of " << log_segments_.size() << " log segments";

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/scanners.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/scanners.cc b/src/kudu/tserver/scanners.cc
index 684e8ac..0f1aca3 100644
--- a/src/kudu/tserver/scanners.cc
+++ b/src/kudu/tserver/scanners.cc
@@ -136,7 +136,7 @@ bool ScannerManager::UnregisterScanner(const string& scanner_id) {
 
 size_t ScannerManager::CountActiveScanners() const {
   size_t total = 0;
-  BOOST_FOREACH(const ScannerMapStripe* e, scanner_maps_) {
+  for (const ScannerMapStripe* e : scanner_maps_) {
     boost::shared_lock<boost::shared_mutex> l(e->lock_);
     total += e->scanners_by_id_.size();
   }
@@ -144,9 +144,9 @@ size_t ScannerManager::CountActiveScanners() const {
 }
 
 void ScannerManager::ListScanners(std::vector<SharedScanner>* scanners) {
-  BOOST_FOREACH(const ScannerMapStripe* stripe, scanner_maps_) {
+  for (const ScannerMapStripe* stripe : scanner_maps_) {
     boost::shared_lock<boost::shared_mutex> l(stripe->lock_);
-    BOOST_FOREACH(const ScannerMapEntry& se, stripe->scanners_by_id_) {
+    for (const ScannerMapEntry& se : stripe->scanners_by_id_) {
       scanners->push_back(se.second);
     }
   }
@@ -155,7 +155,7 @@ void ScannerManager::ListScanners(std::vector<SharedScanner>* scanners) {
 void ScannerManager::RemoveExpiredScanners() {
   MonoDelta scanner_ttl = MonoDelta::FromMilliseconds(FLAGS_scanner_ttl_ms);
 
-  BOOST_FOREACH(ScannerMapStripe* stripe, scanner_maps_) {
+  for (ScannerMapStripe* stripe : scanner_maps_) {
     boost::lock_guard<boost::shared_mutex> l(stripe->lock_);
     for (ScannerMap::iterator it = stripe->scanners_by_id_.begin();
          it != stripe->scanners_by_id_.end(); ) {

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/tablet_server-stress-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/tablet_server-stress-test.cc b/src/kudu/tserver/tablet_server-stress-test.cc
index 48e525d..d9c2931 100644
--- a/src/kudu/tserver/tablet_server-stress-test.cc
+++ b/src/kudu/tserver/tablet_server-stress-test.cc
@@ -66,7 +66,7 @@ class TSStressTest : public TabletServerTestBase {
   }
 
   void JoinThreads() {
-    BOOST_FOREACH(scoped_refptr<kudu::Thread> thr, threads_) {
+    for (scoped_refptr<kudu::Thread> thr : threads_) {
      CHECK_OK(ThreadJoiner(thr.get()).Join());
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/tablet_server-test-base.h
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/tablet_server-test-base.h b/src/kudu/tserver/tablet_server-test-base.h
index b3e3394..1a1e836 100644
--- a/src/kudu/tserver/tablet_server-test-base.h
+++ b/src/kudu/tserver/tablet_server-test-base.h
@@ -20,7 +20,6 @@
 
 #include <algorithm>
 #include <assert.h>
-#include <boost/foreach.hpp>
 #include <gtest/gtest.h>
 #include <iostream>
 #include <memory>
@@ -326,7 +325,7 @@ class TabletServerTestBase : public KuduTest {
     ASSERT_OK(ExtractRowsFromRowBlockPB(projection, *rrpb,
                                         indirect, &direct, &rows));
     VLOG(1) << "Round trip got " << rows.size() << " rows";
-    BOOST_FOREACH(const uint8_t* row_ptr, rows) {
+    for (const uint8_t* row_ptr : rows) {
       ConstContiguousRow row(&projection, row_ptr);
       results->push_back(projection.DebugRow(row));
     }

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/tablet_server-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/tablet_server-test.cc b/src/kudu/tserver/tablet_server-test.cc
index b582b63..16dfcc9 100644
--- a/src/kudu/tserver/tablet_server-test.cc
+++ b/src/kudu/tserver/tablet_server-test.cc
@@ -1001,7 +1001,7 @@ TEST_F(TabletServerTest, TestSnapshotScan) {
   RpcController rpc;
 
   int batch_idx = 1;
-  BOOST_FOREACH(uint64_t write_timestamp, write_timestamps_collector) {
+  for (uint64_t write_timestamp : write_timestamps_collector) {
     req.Clear();
     resp.Clear();
     rpc.Reset();
@@ -1041,7 +1041,7 @@ TEST_F(TabletServerTest, TestSnapshotScan) {
     if (VLOG_IS_ON(2)) {
       VLOG(2) << "Scanner: " << resp.scanner_id() << " performing a snapshot read at: "
               << read_timestamp.ToString() << " got back: ";
-      BOOST_FOREACH(const string& result, results) {
+      for (const string& result : results) {
         VLOG(2) << result;
       }
     }
@@ -2058,7 +2058,7 @@ TEST_F(TabletServerTest, TestWriteOutOfBounds) {
 
   vector<RowOperationsPB::Type> ops = { RowOperationsPB::INSERT, RowOperationsPB::UPDATE };
 
-  BOOST_FOREACH(const RowOperationsPB::Type &op, ops) {
+  for (const RowOperationsPB::Type &op : ops) {
     RowOperationsPB* data = req.mutable_row_operations();
     AddTestRowToPB(op, schema_, 20, 1, "1", data);
     SCOPED_TRACE(req.DebugString());

http://git-wip-us.apache.org/repos/asf/incubator-kudu/blob/9daafa5e/src/kudu/tserver/tablet_server.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/tablet_server.cc b/src/kudu/tserver/tablet_server.cc
index d30ed1d..14841e7 100644
--- a/src/kudu/tserver/tablet_server.cc
+++ b/src/kudu/tserver/tablet_server.cc
@@ -17,7 +17,6 @@
 
 #include "kudu/tserver/tablet_server.h"
 
-#include <boost/foreach.hpp>
 #include <glog/logging.h>
 #include <list>
 #include <vector>
@@ -68,7 +67,7 @@ string TabletServer::ToString() const {
 }
 
 Status TabletServer::ValidateMasterAddressResolution() const {
-  BOOST_FOREACH(const HostPort& master_addr, opts_.master_addresses) {
+  for (const HostPort& master_addr : opts_.master_addresses) {
     RETURN_NOT_OK_PREPEND(master_addr.ResolveAddresses(NULL),
                           strings::Substitute(
                               "Couldn't resolve master service address '$0'",