This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-3 by this push:
new 8f042e149c4 HBASE-28157. hbck should report previously reported
regions with null region location (#5463)
8f042e149c4 is described below
commit 8f042e149c41707ac82ca744df289c3cd7e63cce
Author: Andrew Purtell <[email protected]>
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 <[email protected]>
Signed-off-by: Viraj Jasani <[email protected]>
Reviewed-by: Shanmukha Haripriya Kota <[email protected]>
---
.../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 3a0fd15d6ea..75df2da5a71 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
@@ -230,10 +230,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 7a385a0a2a6..38e16ca8e28 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 b99bdb0090d..70afeae4c6e 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
@@ -150,6 +150,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