diff --git ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java index c2a4806..7200f11 100644 --- ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java +++ ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java @@ -303,22 +303,24 @@ private ZooKeeperHiveLock lock (HiveLockObject key, HiveLockMode mode, switch (e.code()) { case CONNECTIONLOSS: case OPERATIONTIMEOUT: + case NONODE: + case NODEEXISTS: LOG.debug("Possibly transient ZooKeeper exception: ", e); - continue; + break; default: LOG.error("Serious Zookeeper exception: ", e); + if (tryNum >= numRetriesForLock) { + console.printError("Unable to acquire " + key.getData().getLockMode() + + ", " + mode + " lock " + key.getDisplayName() + " after " + + tryNum + " attempts."); + LOG.error("Exceeds maximum retries with errors: ", e1); + printConflictingLocks(key,mode,conflictingLocks); + conflictingLocks.clear(); + throw new LockException(e1); + } break; } } - if (tryNum >= numRetriesForLock) { - console.printError("Unable to acquire " + key.getData().getLockMode() - + ", " + mode + " lock " + key.getDisplayName() + " after " - + tryNum + " attempts."); - LOG.error("Exceeds maximum retries with errors: ", e1); - printConflictingLocks(key,mode,conflictingLocks); - conflictingLocks.clear(); - throw new LockException(e1); - } } } while (tryNum < numRetriesForLock);