From 07f0204e1161e6f18f72c972c72dc8931e15a7c9 Mon Sep 17 00:00:00 2001 From: Namit Jain Date: Wed, 6 Mar 2013 19:02:29 -0800 Subject: [PATCH] HIVE-4133 ClassNotFoundException for EventCounter in CDH3U1 (Navis via namit) --- .../org/apache/hadoop/hive/shims/ShimLoader.java | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) diff --git a/shims/src/common/java/org/apache/hadoop/hive/shims/ShimLoader.java b/shims/src/common/java/org/apache/hadoop/hive/shims/ShimLoader.java index a4714ae..19ae5cb 100644 --- a/shims/src/common/java/org/apache/hadoop/hive/shims/ShimLoader.java +++ b/shims/src/common/java/org/apache/hadoop/hive/shims/ShimLoader.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.shims; import java.lang.IllegalArgumentException; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -95,7 +96,9 @@ public static synchronized JettyShims getJettyShims() { public static synchronized AppenderSkeleton getEventCounter() { if (eventCounter == null) { - eventCounter = loadShims(EVENT_COUNTER_SHIM_CLASSES, AppenderSkeleton.class); + eventCounter = tryAndLoadShims(AppenderSkeleton.class, + "org.apache.hadoop.metrics.jvm.EventCounter", + "org.apache.hadoop.log.metrics.EventCounter"); } return eventCounter; } @@ -115,6 +118,18 @@ public static synchronized HadoopThriftAuthBridge getHadoopThriftAuthBridge() { return createShim(className, xface); } + private static T tryAndLoadShims(Class xface, String... classNames) { + for (String className : classNames) { + try { + return createShim(className, xface); + } catch (Exception e) { + // continue + } + } + throw new RuntimeException("Could not load shims in any of classes " + + Arrays.toString(classNames)); + } + private static T createShim(String className, Class xface) { try { Class clazz = Class.forName(className); -- 1.7.7.5 (Apple Git-26)