@Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { int retryCount = -1; int threadId = HiveMetaStore.HMSHandler.get(); boolean error = true; PerfLogger perfLogger = PerfLogger.getPerfLogger(origConf, false); perfLogger.PerfLogBegin(CLASS_NAME, method.getName()); try { Result result = invokeInternal(proxy, method, args); retryCount = result.numRetries; error = false; return result.result; } finally { StringBuffer additionalInfo = new StringBuffer(); additionalInfo .append("threadId=") .append(threadId) .append(" retryCount=") .append(retryCount) .append(" error=") .append(error); perfLogger.PerfLogEnd(CLASS_NAME, method.getName(), additionalInfo.toString()); } }