diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index aa1c925..6f4d14a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -175,7 +175,7 @@ public synchronized void remove() { private final static int REG_FUNCS_NO = 0, REG_FUNCS_DONE = 2, REG_FUNCS_PENDING = 1; // register all permanent functions. need improvement - private void registerAllFunctionsOnce() { + private void registerAllFunctionsOnce() throws HiveException { boolean breakLoop = false; while (!breakLoop) { int val = didRegisterAllFuncs.get(); @@ -204,8 +204,9 @@ private void registerAllFunctionsOnce() { } try { reloadFunctions(); - } catch (Exception e) { + } catch (HiveException e) { LOG.warn("Failed to register all functions.", e); + throw e; } finally { boolean result = didRegisterAllFuncs.compareAndSet(REG_FUNCS_PENDING, REG_FUNCS_DONE); assert result;