public static AutoCloseable setupReporters()

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();
        }
      }
    };
  }