KUDU-1557. maintenance_manager: return most recently completed ops first This changes the order of maintenance manager operations in the maintenance manager status dump so that the most recently completed operation is first in the list.
Change-Id: I7783bc8cee1beb0f7accaedbd46fb1e3a49168cc Reviewed-on: http://gerrit.cloudera.org:8080/4296 Reviewed-by: Adar Dembo <[email protected]> Tested-by: Kudu Jenkins Project: http://git-wip-us.apache.org/repos/asf/kudu/repo Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/22d68a0c Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/22d68a0c Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/22d68a0c Branch: refs/heads/master Commit: 22d68a0c30a72e29b3fe83e31bd80a417a2f1101 Parents: 531e7d9 Author: Todd Lipcon <[email protected]> Authored: Thu Sep 1 17:21:36 2016 -0700 Committer: Todd Lipcon <[email protected]> Committed: Fri Sep 2 01:56:15 2016 +0000 ---------------------------------------------------------------------- src/kudu/util/maintenance_manager-test.cc | 5 +++-- src/kudu/util/maintenance_manager.cc | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kudu/blob/22d68a0c/src/kudu/util/maintenance_manager-test.cc ---------------------------------------------------------------------- diff --git a/src/kudu/util/maintenance_manager-test.cc b/src/kudu/util/maintenance_manager-test.cc index 73e11a6..2448766 100644 --- a/src/kudu/util/maintenance_manager-test.cc +++ b/src/kudu/util/maintenance_manager-test.cc @@ -293,8 +293,9 @@ TEST_F(MaintenanceManagerTest, TestCompletedOpsHistory) { manager_->GetMaintenanceManagerStatusDump(&status_pb); // The size should be at most the history_size. ASSERT_GE(kHistorySize, status_pb.completed_operations_size()); - // See that we have the right name, even if we wrap around. - ASSERT_EQ(name, status_pb.completed_operations(i % 4).name()); + // The most recently completed op should always be first, even if we wrap + // around. + ASSERT_EQ(name, status_pb.completed_operations(0).name()); } } http://git-wip-us.apache.org/repos/asf/kudu/blob/22d68a0c/src/kudu/util/maintenance_manager.cc ---------------------------------------------------------------------- diff --git a/src/kudu/util/maintenance_manager.cc b/src/kudu/util/maintenance_manager.cc index 7628fbb..11fa614 100644 --- a/src/kudu/util/maintenance_manager.cc +++ b/src/kudu/util/maintenance_manager.cc @@ -411,7 +411,11 @@ void MaintenanceManager::GetMaintenanceManagerStatusDump(MaintenanceManagerStatu } } - for (const CompletedOp& completed_op : completed_ops_) { + for (int n = 1; n <= completed_ops_.size(); n++) { + int i = completed_ops_count_ - n; + if (i < 0) break; + const auto& completed_op = completed_ops_[i % completed_ops_.size()]; + if (!completed_op.name.empty()) { MaintenanceManagerStatusPB_CompletedOpPB* completed_pb = out_pb->add_completed_operations(); completed_pb->set_name(completed_op.name);
