HBASE-23076 [HBOSS] ZKTreeLockManager shouldn't try to acquire a lock from the InterProcessMutex instance when checking if other processes hold it. #8
Signed-off-by: Josh Elser <elserj@apache.org>
diff --git a/hbase-oss/src/main/java/org/apache/hadoop/hbase/oss/sync/ZKTreeLockManager.java b/hbase-oss/src/main/java/org/apache/hadoop/hbase/oss/sync/ZKTreeLockManager.java
index 83451c6..35ce908 100644
--- a/hbase-oss/src/main/java/org/apache/hadoop/hbase/oss/sync/ZKTreeLockManager.java
+++ b/hbase-oss/src/main/java/org/apache/hadoop/hbase/oss/sync/ZKTreeLockManager.java
@@ -305,16 +305,12 @@
// than checking other processes.
return true;
}
- // Finally, see if another process holds the lock. This is a terrible way
- // to check but Curator doesn't expose another way.
- if (lock.acquire(0, TimeUnit.NANOSECONDS)) {
- lock.release();
- return false;
- }
+ return !lock.getParticipantNodes().isEmpty();
+ } catch (KeeperException.NoNodeException e){
+ return false;
} catch (Exception e) {
throw new IOException("Exception while testing a lock", e);
}
- return true;
}
public String summarizeLocks() {
diff --git a/hbase-oss/src/test/java/org/apache/hadoop/hbase/oss/TestRecursiveDelete.java b/hbase-oss/src/test/java/org/apache/hadoop/hbase/oss/TestRecursiveDelete.java
index 0d5c6a8..2b67b96 100644
--- a/hbase-oss/src/test/java/org/apache/hadoop/hbase/oss/TestRecursiveDelete.java
+++ b/hbase-oss/src/test/java/org/apache/hadoop/hbase/oss/TestRecursiveDelete.java
@@ -70,7 +70,9 @@
});
Assert.assertNull(fut.get(15, TimeUnit.SECONDS));
} finally {
+ long start = System.currentTimeMillis();
hboss.delete(tmp, true);
+ LOG.debug(">> time elapsed: " + (System.currentTimeMillis()-start));
}
}