You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by wa...@apache.org on 2020/10/11 11:13:24 UTC

[hbase] branch master updated: HBASE-24840 Avoid shows closing region task when create table (#2226)

This is an automated email from the ASF dual-hosted git repository.

wangzheng 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 5a47444  HBASE-24840 Avoid shows closing region task when create table (#2226)
5a47444 is described below

commit 5a474449c160b15a4a65b869df859d1027879136
Author: bsglz <18...@qq.com>
AuthorDate: Sun Oct 11 19:12:56 2020 +0800

    HBASE-24840 Avoid shows closing region task when create table (#2226)
---
 .../java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java   | 10 ++++++++--
 .../java/org/apache/hadoop/hbase/regionserver/HRegion.java     | 10 ++++++++--
 .../java/org/apache/hadoop/hbase/util/ModifyRegionUtils.java   |  2 +-
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java
index 1bde915..d2edaa8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/TaskMonitor.java
@@ -87,8 +87,12 @@ public class TaskMonitor {
     }
     return instance;
   }
-  
+
   public synchronized MonitoredTask createStatus(String description) {
+    return createStatus(description, false);
+  }
+
+  public synchronized MonitoredTask createStatus(String description, boolean ignore) {
     MonitoredTask stat = new MonitoredTaskImpl();
     stat.setDescription(description);
     MonitoredTask proxy = (MonitoredTask) Proxy.newProxyInstance(
@@ -99,7 +103,9 @@ public class TaskMonitor {
     if (tasks.isFull()) {
       purgeExpiredTasks();
     }
-    tasks.add(pair);
+    if (!ignore) {
+      tasks.add(pair);
+    }
     return proxy;
   }
 
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index a208d93..57a1e1f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -1578,6 +1578,10 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
    */
   public static final long MAX_FLUSH_PER_CHANGES = 1000000000; // 1G
 
+  public Map<byte[], List<HStoreFile>> close(boolean abort) throws IOException {
+    return close(abort, false);
+  }
+
   /**
    * Close down this HRegion.  Flush the cache unless abort parameter is true,
    * Shut down each HStore, don't service any more calls.
@@ -1586,6 +1590,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
    * time-sensitive thread.
    *
    * @param abort true if server is aborting (only during testing)
+   * @param ignoreStatus true if ignore the status (wont be showed on task list)
    * @return Vector of all the storage files that the HRegion's component
    * HStores make use of.  It's a list of StoreFile objects.  Can be null if
    * we are not to close at this time or we are already closed.
@@ -1595,12 +1600,13 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
    * because a Snapshot was not properly persisted. The region is put in closing mode, and the
    * caller MUST abort after this.
    */
-  public Map<byte[], List<HStoreFile>> close(boolean abort) throws IOException {
+  public Map<byte[], List<HStoreFile>> close(boolean abort, boolean ignoreStatus)
+      throws IOException {
     // Only allow one thread to close at a time. Serialize them so dual
     // threads attempting to close will run up against each other.
     MonitoredTask status = TaskMonitor.get().createStatus(
         "Closing region " + this.getRegionInfo().getEncodedName() +
-        (abort ? " due to abort" : ""));
+        (abort ? " due to abort" : ""), ignoreStatus);
     status.enableStatusJournal(true);
     status.setStatus("Waiting for close lock");
     try {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ModifyRegionUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ModifyRegionUtils.java
index b4e5863..a3a0c7b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ModifyRegionUtils.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ModifyRegionUtils.java
@@ -186,7 +186,7 @@ public abstract class ModifyRegionUtils {
       }
     } finally {
       // 3. Close the new region to flush to disk. Close log file too.
-      region.close();
+      region.close(false, true);
     }
     return region.getRegionInfo();
   }