[ https://issues.apache.org/jira/browse/HIVE-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13703914#comment-13703914 ]
Ashutosh Chauhan commented on HIVE-4835: ---------------------------------------- I agree. Metrics is best effort, throwing exceptions from it is not best of the ideas. CC'ing [~sushanth] who originally authored this class. > Methods in Metrics class could avoid throwing IOException > --------------------------------------------------------- > > Key: HIVE-4835 > URL: https://issues.apache.org/jira/browse/HIVE-4835 > Project: Hive > Issue Type: Bug > Affects Versions: 0.11.0 > Reporter: Arup Malakar > Priority: Minor > > I see that most of the methods in the Metrics class throws exception: > {code:java} > public void resetMetrics() throws IOException { > public void open() throws IOException { > public void close() throws IOException { > public void reopen() throws IOException { > public static void init() throws Exception { > public static Long incrementCounter(String name) throws IOException{ > public static Long incrementCounter(String name, long increment) throws > IOException{ > public static void set(String name, Object value) throws IOException{ > public static Object get(String name) throws IOException{ > public static void initializeScope(String name) throws IOException { > public static MetricsScope startScope(String name) throws IOException{ > public static MetricsScope getScope(String name) throws IOException { > public static void endScope(String name) throws IOException{ > {code} > I believe Metrics should be best effort and the Metrics system should just > log error messages in case it is unable to capture the Metrics. Throwing > exception makes the caller code unnecessarily lengthy. Also the caller would > never want to stop execution because of failure to capture metrics, so it > ends up just logging the exception. > The kind of code we see is like: > {code:java} > // Snippet from HiveMetaStore.java > try { > Metrics.startScope(function); > } catch (IOException e) { > LOG.debug("Exception when starting metrics scope" > + e.getClass().getName() + " " + e.getMessage()); > MetaStoreUtils.printStackTrace(e); > } > {code} > which could have been: > {code:java} > Metrics.startScope(function); > {code} > Thoughts? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira