This is an automated email from the ASF dual-hosted git repository. sershe pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push: new 9ef6bc4 HBASE-21785 master reports open regions as RITs and also messes up rit age metric 9ef6bc4 is described below commit 9ef6bc4323c9be0e18f0cf9918a582e6b4a11853 Author: Sergey Shelukhin <ser...@apache.org> AuthorDate: Tue Feb 12 12:53:17 2019 -0800 HBASE-21785 master reports open regions as RITs and also messes up rit age metric Signed-off-by: Duo Zhang <zhang...@apache.org> --- .../hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java | 4 ++-- .../apache/hadoop/hbase/master/assignment/AssignmentManager.java | 8 +++++++- .../apache/hadoop/hbase/master/assignment/RegionStateNode.java | 6 +++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java index e8ab7d7..a702f70 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsAssignmentManagerSourceImpl.java @@ -82,8 +82,8 @@ public class MetricsAssignmentManagerSourceImpl } @Override - public void setRITOldestAge(final long ritCount) { - ritOldestAgeGauge.set(ritCount); + public void setRITOldestAge(final long ritOldestAge) { + ritOldestAgeGauge.set(ritOldestAge); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java index c12f806..2d0c3be 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java @@ -1195,7 +1195,13 @@ public class AssignmentManager { private void update(final Collection<RegionState> regions, final long currentTime) { for (RegionState state: regions) { totalRITs++; - final long ritTime = currentTime - state.getStamp(); + final long ritStartedMs = state.getStamp(); + if (ritStartedMs == 0) { + // Don't output bogus values to metrics if they accidentally make it here. + LOG.warn("The RIT {} has no start time", state.getRegion()); + continue; + } + final long ritTime = currentTime - ritStartedMs; if (ritTime > ritThreshold) { if (ritsOverThreshold == null) { ritsOverThreshold = new HashMap<String, RegionState>(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java index 087d9bc..7dbdbee 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStateNode.java @@ -169,7 +169,11 @@ public class RegionStateNode implements Comparable<RegionStateNode> { public long getLastUpdate() { TransitRegionStateProcedure proc = this.procedure; - return proc != null ? proc.getLastUpdate() : lastUpdate; + if (proc != null) { + long lastUpdate = proc.getLastUpdate(); + return lastUpdate != 0 ? lastUpdate : proc.getSubmittedTime(); + } + return lastUpdate; } public void setLastHost(final ServerName serverName) {