Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
1.4.0, 1.3.2, 2.0.0-beta-1, 2.0.0, 1.2.7
-
None
-
None
-
Reviewed
Description
If the size of RegionsInTransition is zero, the list passed to ClusterStatus will be null.
ClusterStatus.java
Set<RegionState> rit = null; if (!proto.getRegionsInTransitionList().isEmpty()) { rit = new HashSet<RegionState>(proto.getRegionsInTransitionList().size()); for (RegionInTransition region : proto.getRegionsInTransitionList()) { RegionState value = RegionState.convert(region.getRegionState()); rit.add(value); } }
It causes NPE if someone try to do the for-each work. The HBaseFsckRepair is a real-life example.
HBaseFsckRepair.java
for (RegionState rs: admin.getClusterStatus().getRegionsInTransition()) { if (rs.getRegion().equals(region)) { inTransition = true; break; } }
branch-2/master don't have this issue as the list of RegionsInTransition passed to ClusterStatus never be null.
ProtobufUtil.java
List<RegionState> rit = new ArrayList<>(proto.getRegionsInTransitionList().size()); for (RegionInTransition region : proto.getRegionsInTransitionList()) { RegionState value = RegionState.convert(region.getRegionState()); rit.add(value); }
Attachments
Attachments
Issue Links
- is related to
-
HBASE-19840 Flakey TestMetaWithReplicas
- Resolved