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

zhangduo 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 449ed08  HBASE-21943 The usage of RegionLocations.mergeRegionLocations 
is wrong for async client
449ed08 is described below

commit 449ed0834b220bcc4047135af23a6c0677248991
Author: Duo Zhang <[email protected]>
AuthorDate: Fri Feb 22 16:18:46 2019 +0800

    HBASE-21943 The usage of RegionLocations.mergeRegionLocations is wrong for 
async client
    
    Signed-off-by: Guanghao Zhang <[email protected]>
---
 .../hadoop/hbase/client/AsyncNonMetaRegionLocator.java     |  5 ++---
 .../hadoop/hbase/client/AsyncRegionLocatorHelper.java      | 14 --------------
 2 files changed, 2 insertions(+), 17 deletions(-)

diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java
index 1f23a1d..d76e9fd 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java
@@ -23,7 +23,6 @@ import static 
org.apache.hadoop.hbase.TableName.META_TABLE_NAME;
 import static 
org.apache.hadoop.hbase.client.AsyncRegionLocatorHelper.canUpdateOnError;
 import static 
org.apache.hadoop.hbase.client.AsyncRegionLocatorHelper.createRegionLocations;
 import static org.apache.hadoop.hbase.client.AsyncRegionLocatorHelper.isGood;
-import static 
org.apache.hadoop.hbase.client.AsyncRegionLocatorHelper.mergeRegionLocations;
 import static 
org.apache.hadoop.hbase.client.AsyncRegionLocatorHelper.removeRegionLocation;
 import static 
org.apache.hadoop.hbase.client.ConnectionUtils.createClosestRowAfter;
 import static org.apache.hadoop.hbase.client.ConnectionUtils.isEmptyStopRow;
@@ -218,7 +217,7 @@ class AsyncNonMetaRegionLocator {
         if (loc1.getSeqNum() != loc2.getSeqNum()) {
           return false;
         }
-        if (Objects.equal(loc1.getServerName(), loc2.getServerName())) {
+        if (!Objects.equal(loc1.getServerName(), loc2.getServerName())) {
           return false;
         }
       }
@@ -235,7 +234,7 @@ class AsyncNonMetaRegionLocator {
       if (oldLocs == null) {
         return true;
       }
-      RegionLocations mergedLocs = mergeRegionLocations(locs, oldLocs);
+      RegionLocations mergedLocs = oldLocs.mergeLocations(locs);
       if (isEqual(mergedLocs, oldLocs)) {
         // the merged one is the same with the old one, give up
         LOG.trace("Will not add {} to cache because the old value {} " +
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncRegionLocatorHelper.java
 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncRegionLocatorHelper.java
index dd516ec..4dde1bb 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncRegionLocatorHelper.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncRegionLocatorHelper.java
@@ -129,20 +129,6 @@ final class AsyncRegionLocatorHelper {
     }
   }
 
-  /**
-   * Create a new {@link RegionLocations} which is the merging result for the 
given two
-   * {@link RegionLocations}.
-   * <p/>
-   * All the {@link RegionLocations} in async locator related class are 
immutable because we want to
-   * access them concurrently, so here we need to create a new one, instead of 
calling
-   * {@link RegionLocations#mergeLocations(RegionLocations)} directly.
-   */
-  static RegionLocations mergeRegionLocations(RegionLocations newLocs, 
RegionLocations oldLocs) {
-    RegionLocations locs = new RegionLocations(newLocs.getRegionLocations());
-    locs.mergeLocations(oldLocs);
-    return locs;
-  }
-
   static boolean isGood(RegionLocations locs, int replicaId) {
     if (locs == null) {
       return false;

Reply via email to