You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by mp...@apache.org on 2017/12/02 05:31:57 UTC
[2/3] kudu git commit: web_ui: don't report failed tombstones as live
web_ui: don't report failed tombstones as live
Previously, the logic to determine the liveness of a tablet in the web
UI was to check that the replica's state message was exactly
"TABLET_DATA_TOMBSTONED". For failed, tombstoned replicas, this message
is "FAILED(TABLET_DATA_TOMBSTONED)", and as such, these replicas were
being reported as live, failed tablets (scary!).
This patch adjusts the logic to instead search for
"TABLET_DATA_TOMBSTONED" in the message, which should be relatively
short anyway.
I considered actually using the replicas' internal 'state_' members, but
felt that this is more appropriate considering it'd be debatable how to
report STOPPING or FAILED tablets.
A test is added to tablet_server-test that fails without the fix.
Change-Id: I3529c32296b555d59ddde2593360b3b66081ba4b
Reviewed-on: http://gerrit.cloudera.org:8080/8718
Reviewed-by: Mike Percy <mp...@apache.org>
Tested-by: Mike Percy <mp...@apache.org>
Reviewed-on: http://gerrit.cloudera.org:8080/8739
Reviewed-by: Andrew Wong <aw...@cloudera.com>
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/b2a97b3f
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/b2a97b3f
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/b2a97b3f
Branch: refs/heads/branch-1.6.x
Commit: b2a97b3f7bf65c2022faa189229ca60a64eceeaf
Parents: 10bca9d
Author: Andrew Wong <aw...@cloudera.com>
Authored: Fri Dec 1 15:14:44 2017 -0800
Committer: Mike Percy <mp...@apache.org>
Committed: Sat Dec 2 05:31:31 2017 +0000
----------------------------------------------------------------------
src/kudu/tserver/tablet_server-test.cc | 27 ++++++++++++++++++++++++++
src/kudu/tserver/tserver_path_handlers.cc | 2 +-
2 files changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/b2a97b3f/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 eb037e0..de498dc 100644
--- a/src/kudu/tserver/tablet_server-test.cc
+++ b/src/kudu/tserver/tablet_server-test.cc
@@ -29,6 +29,7 @@
#include <vector>
#include <boost/bind.hpp>
+#include <boost/optional/optional.hpp>
#include <gflags/gflags.h>
#include <gflags/gflags_declare.h>
#include <glog/logging.h>
@@ -358,6 +359,32 @@ TEST_F(TabletServerTest, TestWebPages) {
#endif
}
+// Test that tablets that get failed and deleted will eventually show up as
+// failed tombstones on the web UI.
+TEST_F(TabletServerTest, TestFailedTabletsOnWebUI) {
+ scoped_refptr<TabletReplica> replica;
+ TSTabletManager* tablet_manager = mini_server_->server()->tablet_manager();
+ ASSERT_TRUE(tablet_manager->LookupTablet(kTabletId, &replica));
+ replica->SetError(Status::IOError("This error will leave the replica FAILED state at shutdown"));
+ replica->Shutdown();
+ ASSERT_EQ(tablet::FAILED, replica->state());
+
+ // Now delete the tablet and leave it tombstoned, e.g. as if the failed
+ // replica were deleted.
+ TabletServerErrorPB::Code error_code;
+ ASSERT_OK(tablet_manager->DeleteTablet(kTabletId,
+ tablet::TABLET_DATA_TOMBSTONED, boost::none, &error_code));
+
+ EasyCurl c;
+ faststring buf;
+ const string addr = mini_server_->bound_http_addr().ToString();
+ ASSERT_OK(c.FetchURL(Substitute("http://$0/tablets", addr), &buf));
+
+ // Ensure the html contains the "Tombstoned Tablets" header, indicating the
+ // failed tombstone is correctly displayed as a tombstone.
+ ASSERT_STR_CONTAINS(buf.ToString(), "Tombstoned Tablets");
+}
+
class TabletServerDiskFailureTest : public TabletServerTestBase {
public:
virtual void SetUp() override {
http://git-wip-us.apache.org/repos/asf/kudu/blob/b2a97b3f/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 c982d41..3dd602f 100644
--- a/src/kudu/tserver/tserver_path_handlers.cc
+++ b/src/kudu/tserver/tserver_path_handlers.cc
@@ -305,7 +305,7 @@ void TabletServerPathHandlers::HandleTabletsPage(const Webserver::WebRequest& /*
vector<scoped_refptr<TabletReplica>> live_replicas;
vector<scoped_refptr<TabletReplica>> tombstoned_replicas;
for (const scoped_refptr<TabletReplica>& replica : replicas) {
- if (replica->HumanReadableState() != "TABLET_DATA_TOMBSTONED") {
+ if (replica->HumanReadableState().find("TABLET_DATA_TOMBSTONED") == string::npos) {
live_replicas.push_back(replica);
} else {
tombstoned_replicas.push_back(replica);