@Override public void postStart() { register(name, description, sink); } });
@Override public synchronized <T extends MetricsSink> T register(final String name, final String description, final T sink) { LOG.debug(name +", "+ description); if (allSinks.containsKey(name)) { LOG.warn("Sink "+ name +" already exists!"); return sink; } allSinks.put(name, sink); if (config != null) { registerSink(name, description, sink); } // We want to re-register the sink to pick up new config // when the metrics system restarts. register(name, new AbstractCallback() { @Override public void postStart() { register(name, description, sink); } }); return sink; }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(finalName, s); LOG.debug(finalName +", "+ finalDesc); if (monitoring) { registerSource(finalName, finalDesc, s); } // We want to re-register the source to pick up new config when the // metrics system restarts. register(finalName, new AbstractCallback() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
@Override public synchronized <T extends MetricsSink> T register(final String name, final String description, final T sink) { LOG.debug(name +", "+ description); if (allSinks.containsKey(name)) { LOG.warn("Sink "+ name +" already exists!"); return sink; } allSinks.put(name, sink); if (config != null) { registerSink(name, description, sink); } // We want to re-register the sink to pick up new config // when the metrics system restarts. register(name, new AbstractCallback() { @Override public void postStart() { register(name, description, sink); } }); return sink; }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(finalName, s); LOG.debug(finalName +", "+ finalDesc); if (monitoring) { registerSource(finalName, finalDesc, s); } // We want to re-register the source to pick up new config when the // metrics system restarts. register(finalName, new AbstractCallback() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
public static void registerSource(String name, String desc, MetricsSource source) { //caller has to use unique name to register source instance.register(name, desc, source); }
@Override public synchronized <T extends MetricsSink> T register(final String name, final String description, final T sink) { LOG.debug(name +", "+ description); if (allSinks.containsKey(name)) { LOG.warn("Sink "+ name +" already exists!"); return sink; } allSinks.put(name, sink); if (config != null) { registerSink(name, description, sink); } // We want to re-register the sink to pick up new config // when the metrics system restarts. register(name, new AbstractCallback() { @Override public void postStart() { register(name, description, sink); } }); return sink; }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(finalName, s); LOG.debug(finalName +", "+ finalDesc); if (monitoring) { registerSource(finalName, finalDesc, s); } // We want to re-register the source to pick up new config when the // metrics system restarts. register(finalName, new AbstractCallback() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
public static void registerSource(String name, String desc, MetricsSource source) { //caller has to use unique name to register source instance.register(name, desc, source); }
@Override public synchronized <T extends MetricsSink> T register(final String name, final String description, final T sink) { LOG.debug(name +", "+ description); if (allSinks.containsKey(name)) { LOG.warn("Sink "+ name +" already exists!"); return sink; } allSinks.put(name, sink); if (config != null) { registerSink(name, description, sink); } // We want to re-register the sink to pick up new config // when the metrics system restarts. register(name, new AbstractCallback() { @Override public void postStart() { register(name, description, sink); } }); return sink; }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(finalName, s); LOG.debug(finalName +", "+ finalDesc); if (monitoring) { registerSource(finalName, finalDesc, s); } // We want to re-register the source to pick up new config when the // metrics system restarts. register(finalName, new AbstractCallback() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
@Override public void postStart() { register(name, description, sink); } });
@Override public synchronized <T extends MetricsSink> T register(final String name, final String description, final T sink) { LOG.debug(name +", "+ description); if (allSinks.containsKey(name)) { LOG.warn("Sink "+ name +" already exists!"); return sink; } allSinks.put(name, sink); if (config != null) { registerSink(name, description, sink); } // We want to re-register the sink to pick up new config // when the metrics system restarts. register(name, new AbstractCallback() { @Override public void postStart() { register(name, description, sink); } }); return sink; }
@Override public void postStart() { register(name, description, sink); } });
@Test public void testHangingSink() { new ConfigBuilder().add("*.period", 8) .add("test.sink.test.class", TestSink.class.getName()) .add("test.sink.hanging.retry.delay", "1") .add("test.sink.hanging.retry.backoff", "1.01") .add("test.sink.hanging.retry.count", "0") .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-test")); MetricsSystemImpl ms = new MetricsSystemImpl("Test"); ms.start(); TestSource s = ms.register("s3", "s3 desc", new TestSource("s3rec")); s.c1.incr(); HangingSink hanging = new HangingSink(); ms.registerSink("hanging", "Hang the sink!", hanging); ms.publishMetricsNow(); assertEquals(1L, ms.droppedPubAll.value()); assertFalse(hanging.getInterrupted()); ms.stop(); ms.shutdown(); assertTrue(hanging.getInterrupted()); assertTrue("The sink didn't get called after its first hang " + "for subsequent records.", hanging.getGotCalledSecondTime()); }
@Override public void postStart() { register(name, description, sink); } });
@Test public void testHangingSink() { new ConfigBuilder().add("*.period", 8) .add("test.sink.test.class", TestSink.class.getName()) .add("test.sink.hanging.retry.delay", "1") .add("test.sink.hanging.retry.backoff", "1.01") .add("test.sink.hanging.retry.count", "0") .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-test")); MetricsSystemImpl ms = new MetricsSystemImpl("Test"); ms.start(); TestSource s = ms.register("s3", "s3 desc", new TestSource("s3rec")); s.c1.incr(); HangingSink hanging = new HangingSink(); ms.registerSink("hanging", "Hang the sink!", hanging); ms.publishMetricsNow(); assertEquals(1L, ms.droppedPubAll.value()); assertFalse(hanging.getInterrupted()); ms.stop(); ms.shutdown(); assertTrue(hanging.getInterrupted()); assertTrue("The sink didn't get called after its first hang " + "for subsequent records.", hanging.getGotCalledSecondTime()); }
@Override public void postStart() { register(name, description, sink); } });
@Test public void testStartStopStart() { DefaultMetricsSystem.shutdown(); // Clear pre-existing source names. MetricsSystemImpl ms = new MetricsSystemImpl("test"); TestSource ts = new TestSource("ts"); ms.start(); ms.register("ts", "", ts); MetricsSourceAdapter sa = ms.getSourceAdapter("ts"); assertNotNull(sa); assertNotNull(sa.getMBeanName()); ms.stop(); ms.shutdown(); ms.start(); sa = ms.getSourceAdapter("ts"); assertNotNull(sa); assertNotNull(sa.getMBeanName()); ms.stop(); ms.shutdown(); }
@Test public void testStartStopStart() { DefaultMetricsSystem.shutdown(); // Clear pre-existing source names. MetricsSystemImpl ms = new MetricsSystemImpl("test"); TestSource ts = new TestSource("ts"); ms.start(); ms.register("ts", "", ts); MetricsSourceAdapter sa = ms.getSourceAdapter("ts"); assertNotNull(sa); assertNotNull(sa.getMBeanName()); ms.stop(); ms.shutdown(); ms.start(); sa = ms.getSourceAdapter("ts"); assertNotNull(sa); assertNotNull(sa.getMBeanName()); ms.stop(); ms.shutdown(); }