You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2022/06/26 07:32:48 UTC

[hbase] branch branch-2.5 updated: HBASE-27160 ClientZKSyncer.deleteDataForClientZkUntilSuccess should break from the loop when deletion is succeeded (#4579)

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

zhangduo pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.5 by this push:
     new 9537f07ee53 HBASE-27160 ClientZKSyncer.deleteDataForClientZkUntilSuccess should break from the loop when deletion is succeeded (#4579)
9537f07ee53 is described below

commit 9537f07ee535f42cbbd62a580d340f2bce21f1d8
Author: Duo Zhang <zh...@apache.org>
AuthorDate: Sun Jun 26 15:22:25 2022 +0800

    HBASE-27160 ClientZKSyncer.deleteDataForClientZkUntilSuccess should break from the loop when deletion is succeeded (#4579)
    
    Signed-off-by: Bryan Beaudreault <bb...@apache.org>
    (cherry picked from commit d7f6861e8dfc06398455330e25bdac958d0dcb37)
---
 .../apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.java   |  6 +++++-
 .../hadoop/hbase/client/TestSeparateClientZKCluster.java      | 11 +++--------
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.java
index d85cc27dab7..a9881ef9b64 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.java
@@ -196,12 +196,16 @@ public abstract class ClientZKSyncer extends ZKListener {
       LOG.debug("Delete remote " + node + ", client zk wather: " + clientZkWatcher);
       try {
         ZKUtil.deleteNode(clientZkWatcher, node);
+        break;
       } catch (KeeperException e) {
+        if (e.code() == KeeperException.Code.NONODE) {
+          LOG.debug("Node is already deleted, give up", e);
+          break;
+        }
         LOG.debug("Failed to delete node from client ZK, will retry later", e);
         if (e.code() == KeeperException.Code.SESSIONEXPIRED) {
           reconnectAfterExpiration();
         }
-
       }
     }
   }
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java
index b3a26a5ffee..813cb92ac4d 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java
@@ -133,15 +133,10 @@ public class TestSeparateClientZKCluster {
       HMaster master = cluster.getMaster();
       master.stopMaster();
       LOG.info("Stopped master {}", master.getServerName());
-      while (!master.isShutDown()) {
-        Thread.sleep(200);
-      }
+      TEST_UTIL.waitFor(30000, () -> !master.isAlive());
       LOG.info("Shutdown master {}", master.getServerName());
-      while (cluster.getMaster() == null || !cluster.getMaster().isInitialized()) {
-        LOG.info("Get master {}",
-          cluster.getMaster() == null ? "null" : cluster.getMaster().getServerName());
-        Thread.sleep(200);
-      }
+      TEST_UTIL.waitFor(30000,
+        () -> cluster.getMaster() != null && cluster.getMaster().isInitialized());
       LOG.info("Got master {}", cluster.getMaster().getServerName());
       // confirm client access still works
       assertTrue(admin.balance(BalanceRequest.defaultInstance()).isBalancerRan());