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

binlijin 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 6ce1e14  HBASE-24377 MemStoreFlusher throw NullPointerException (#1721)
6ce1e14 is described below

commit 6ce1e140ee57c2217bf319987caaa4448b23d45b
Author: binlijin <binli...@gmail.com>
AuthorDate: Mon May 18 09:58:28 2020 +0800

    HBASE-24377 MemStoreFlusher throw NullPointerException (#1721)
    
    Signed-off-by: Ramkrishna <ramkris...@apache.org>
    Signed-off-by: Anoop Sam John <anoop.hb...@gmail.com>
    Signed-off-by: Duo Zhang <zhang...@apache.org>
---
 .../apache/hadoop/hbase/regionserver/MemStoreFlusher.java    | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
index 9f4d881..17c3c4e 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java
@@ -87,8 +87,6 @@ class MemStoreFlusher implements FlushRequester {
   private final FlushHandler[] flushHandlers;
   private List<FlushRequestListener> flushRequestListeners = new 
ArrayList<>(1);
 
-  private FlushType flushType;
-
   /**
    * Singleton instance inserted into flush queue used for signaling.
    */
@@ -149,17 +147,13 @@ class MemStoreFlusher implements FlushRequester {
     return this.updatesBlockedMsHighWater;
   }
 
-  public void setFlushType(FlushType flushType) {
-    this.flushType = flushType;
-  }
-
   /**
    * The memstore across all regions has exceeded the low water mark. Pick
    * one region to flush and flush it synchronously (this is called from the
    * flush thread)
    * @return true if successful
    */
-  private boolean flushOneForGlobalPressure() {
+  private boolean flushOneForGlobalPressure(FlushType flushType) {
     SortedMap<Long, Collection<HRegion>> regionsBySize = null;
     switch(flushType) {
       case ABOVE_OFFHEAP_HIGHER_MARK:
@@ -349,7 +343,7 @@ class MemStoreFlusher implements FlushRequester {
               // we still select the regions based on the region's memstore 
data size.
               // TODO : If we want to decide based on heap over head it can be 
done without tracking
               // it per region.
-              if (!flushOneForGlobalPressure()) {
+              if (!flushOneForGlobalPressure(type)) {
                 // Wasn't able to flush any region, but we're above low water 
mark
                 // This is unlikely to happen, but might happen when closing 
the
                 // entire server - another thread is flushing regions. We'll 
just
@@ -716,7 +710,6 @@ class MemStoreFlusher implements FlushRequester {
           try {
             flushType = isAboveHighWaterMark();
             while (flushType != FlushType.NORMAL && !server.isStopped()) {
-              server.getMemStoreFlusher().setFlushType(flushType);
               if (!blocked) {
                 startTime = EnvironmentEdgeManager.currentTime();
                 if (!server.getRegionServerAccounting().isOffheap()) {
@@ -774,7 +767,6 @@ class MemStoreFlusher implements FlushRequester {
       } else {
         flushType = isAboveLowWaterMark();
         if (flushType != FlushType.NORMAL) {
-          server.getMemStoreFlusher().setFlushType(flushType);
           wakeupFlushThread();
         }
       }

Reply via email to