tserver: sort /tablets list by table name first

I noticed when I'm looking at /tablets I usually am most interested in
looking at tablets from a particular table. So, sorting by tablet ID is
not that useful. This patch changes to sorting by table name first, and
then within each table sorting by tablet ID.

Change-Id: I70559d6812343c804d5742b66e29b58e93e38615
Reviewed-on: http://gerrit.cloudera.org:8080/4297
Reviewed-by: Adar Dembo <[email protected]>
Reviewed-by: Will Berkeley <[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/da73a2bf
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/da73a2bf
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/da73a2bf

Branch: refs/heads/master
Commit: da73a2bf70c9015c131d4a39128e09fbcbeabc07
Parents: d5a1f2d
Author: Todd Lipcon <[email protected]>
Authored: Thu Sep 1 17:43:49 2016 -0700
Committer: Todd Lipcon <[email protected]>
Committed: Fri Sep 2 01:31:29 2016 +0000

----------------------------------------------------------------------
 src/kudu/tserver/tserver-path-handlers.cc | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/da73a2bf/src/kudu/tserver/tserver-path-handlers.cc
----------------------------------------------------------------------
diff --git a/src/kudu/tserver/tserver-path-handlers.cc 
b/src/kudu/tserver/tserver-path-handlers.cc
index 962fa55..df6f6bf 100644
--- a/src/kudu/tserver/tserver-path-handlers.cc
+++ b/src/kudu/tserver/tserver-path-handlers.cc
@@ -173,18 +173,20 @@ string TabletLink(const string& id) {
                     EscapeForHtmlToString(id));
 }
 
-bool CompareByTabletId(const scoped_refptr<TabletPeer>& a,
-                       const scoped_refptr<TabletPeer>& b) {
-  return a->tablet_id() < b->tablet_id();
-}
-
 } // anonymous namespace
 
 void TabletServerPathHandlers::HandleTabletsPage(const Webserver::WebRequest& 
req,
                                                  std::stringstream *output) {
   vector<scoped_refptr<TabletPeer> > peers;
   tserver_->tablet_manager()->GetTabletPeers(&peers);
-  std::sort(peers.begin(), peers.end(), &CompareByTabletId);
+
+  // Sort by (table_name, tablet_id) tuples.
+  std::sort(peers.begin(), peers.end(),
+            [](const scoped_refptr<TabletPeer>& peer_a,
+               const scoped_refptr<TabletPeer>& peer_b) {
+              return std::make_pair(peer_a->tablet_metadata()->table_name(), 
peer_a->tablet_id()) <
+                     std::make_pair(peer_b->tablet_metadata()->table_name(), 
peer_b->tablet_id());
+            });
 
   *output << "<h1>Tablets</h1>\n";
   *output << "<table class='table table-striped'>\n";

Reply via email to