You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2023/10/25 23:55:36 UTC
[hbase] branch branch-2.4 updated: HBASE-28157. hbck should report previously reported regions with null region location (#5463)
This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.4 by this push:
new 7c2ad329f55 HBASE-28157. hbck should report previously reported regions with null region location (#5463)
7c2ad329f55 is described below
commit 7c2ad329f55c86ddfd9055cd726097ecc552efe2
Author: Andrew Purtell <ap...@apache.org>
AuthorDate: Wed Oct 25 16:32:53 2023 -0700
HBASE-28157. hbck should report previously reported regions with null region location (#5463)
Ensure that hbck will report as inconsistent regions where previously a
location was reported but now the region location is null, if it is not
expected to be offline.
Signed-off-by: Duo Zhang <zh...@apache.org>
Signed-off-by: Viraj Jasani <vj...@apache.org>
Reviewed-by: Shanmukha Haripriya Kota <sk...@cloudera.com>
---
.../main/java/org/apache/hadoop/hbase/master/hbck/HbckChore.java | 5 +----
hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp | 4 ++++
.../org/apache/hadoop/hbase/master/assignment/TestHbckChore.java | 7 +++++++
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/hbck/HbckChore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/hbck/HbckChore.java
index 85e978014e5..53fd02bef8d 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/hbck/HbckChore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/hbck/HbckChore.java
@@ -229,10 +229,7 @@ public class HbckChore extends ScheduledChore {
for (Map.Entry<String, HbckRegionInfo> entry : report.getRegionInfoMap().entrySet()) {
HbckRegionInfo hri = entry.getValue();
- ServerName locationInMeta = hri.getMetaEntry().getRegionServer();
- if (locationInMeta == null) {
- continue;
- }
+ ServerName locationInMeta = hri.getMetaEntry().getRegionServer(); // can be null
if (hri.getDeployedOn().size() == 0) {
// skip the offline region which belong to disabled table.
if (report.getDisabledTableRegions().contains(hri.getRegionNameAsString())) {
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp b/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp
index 21128cea047..87efb4b1b1b 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/hbck.jsp
@@ -355,9 +355,13 @@
* If a live server reference, make it a link.
* If dead, make it italic.
* If unknown, make it plain.
+ * If null, make it "null".
*/
private static String formatServerName(HMaster master,
ServerManager serverManager, ServerName serverName) {
+ if (serverName == null) {
+ return "null";
+ }
String sn = serverName.toString();
if (serverManager.isServerOnline(serverName)) {
int infoPort = master.getRegionServerInfoPort(serverName);
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestHbckChore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestHbckChore.java
index 1939544ce70..43665f2842d 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestHbckChore.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestHbckChore.java
@@ -154,6 +154,13 @@ public class TestHbckChore extends TestAssignmentManagerBase {
hbckChore.choreForTesting();
inconsistentRegions = hbckChore.getLastReport().getInconsistentRegions();
assertFalse(inconsistentRegions.containsKey(regionName));
+
+ // Test for case4: No region location for a previously reported region. Probably due to
+ // TRSP bug or bypass.
+ am.offlineRegion(hri);
+ hbckChore.choreForTesting();
+ inconsistentRegions = hbckChore.getLastReport().getInconsistentRegions();
+ assertTrue(inconsistentRegions.containsKey(regionName));
}
@Test