Github user zd-project commented on a diff in the pull request: https://github.com/apache/storm/pull/2771#discussion_r204891653 --- Diff: storm-server/src/main/java/org/apache/storm/metric/StormMetricsRegistry.java --- @@ -88,19 +110,24 @@ public static void startMetricsReporters(Map<String, Object> topoConf) { } } - private static <T extends Metric> T register(final String name, T metric) { - T ret; - try { - ret = DEFAULT_REGISTRY.register(name, metric); - } catch (IllegalArgumentException e) { - // swallow IllegalArgumentException when the metric exists already - ret = (T) DEFAULT_REGISTRY.getMetrics().get(name); - if (ret == null) { - throw e; - } else { - LOG.warn("Metric {} has already been registered", name); - } + public static String name(String prefix, String name) { + assert name != null; + return StringUtils.isEmpty(prefix) ? name : prefix + ':' + name; + } + + public static String name(Class<?> klass, String names) { + return name(klass.getName(), names); + } + + @Override + //This is more similar to super#getOrAdd than super#register --- End diff -- Would you recommend switch back to try-catch block then?
---