in modules/core/src/main/java/org/apache/fluo/core/metrics/ReporterUtil.java [40:86]
public static AutoCloseable setupReporters(final Environment env, final String domain) {
ServiceLoader<ReporterStarter> serviceLoader = ServiceLoader.load(ReporterStarter.class);
final List<AutoCloseable> allReporters = new ArrayList<>();
for (ReporterStarter rs : serviceLoader) {
List<AutoCloseable> reporters = rs.start(new Params() {
@Override
public SimpleConfiguration getConfiguration() {
return env.getConfiguration();
}
@Override
public MetricRegistry getMetricRegistry() {
return env.getSharedResources().getMetricRegistry();
}
@Override
public String getDomain() {
return domain;
}
});
allReporters.addAll(reporters);
}
final String hdrSnapshotClass = HdrHistogramResetOnSnapshotReservoir.class.getName();
String clazz = env.getConfiguration().getString(FluoConfigurationImpl.METRICS_RESERVOIR_PROP,
hdrSnapshotClass);
if ((allReporters.size() > 1) && (clazz.equals(hdrSnapshotClass))) {
throw new IllegalStateException("Multiple metrics reporters cannot be configured when using "
+ hdrSnapshotClass + " as corrupt metrics can be reported");
}
log.info("Started {} metrics reporters", allReporters.size());
return () -> {
for (AutoCloseable closeable : allReporters) {
try {
closeable.close();
} catch (Exception e) {
e.printStackTrace();
}
}
};
}