This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit f46871bf1ecaed70d30b1d2495480506fc72d70d Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Tue Jun 30 13:04:54 2020 +0700 JAMES-3170 MetricFactory::decoratePublisherWithTimerMetric should rely on Flux::using --- .../james/metrics/dropwizard/DropWizardMetricFactory.java | 13 ++++++------- .../metrics/dropwizard/DropWizardMetricFactoryTest.java | 2 -- .../apache/james/metrics/logger/DefaultMetricFactory.java | 13 ++++++------- .../apache/james/metrics/tests/RecordingMetricFactory.java | 13 ++++++------- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java b/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java index 78f8a65..8a87b88 100644 --- a/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java +++ b/metrics/metrics-dropwizard/src/main/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactory.java @@ -36,7 +36,6 @@ import com.codahale.metrics.SlidingTimeWindowMovingAverages; import com.codahale.metrics.jmx.JmxReporter; import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; public class DropWizardMetricFactory implements MetricFactory, Startable { @@ -62,16 +61,16 @@ public class DropWizardMetricFactory implements MetricFactory, Startable { @Override public <T> Publisher<T> decoratePublisherWithTimerMetric(String name, Publisher<T> publisher) { - return Mono.fromCallable(() -> timer(name)) - .flatMapMany(timer -> Flux.from(publisher) - .doOnComplete(timer::stopAndPublish)); + return Flux.using(() -> timer(name), + any -> Flux.from(publisher), + DropWizardTimeMetric::stopAndPublish); } @Override public <T> Publisher<T> decoratePublisherWithTimerMetricLogP99(String name, Publisher<T> publisher) { - return Mono.fromCallable(() -> timer(name)) - .flatMapMany(timer -> Flux.from(publisher) - .doOnComplete(() -> timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD))); + return Flux.using(() -> timer(name), + any -> Flux.from(publisher), + timer -> timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD)); } @PostConstruct diff --git a/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java b/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java index 87455bf..2aba50c 100644 --- a/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java +++ b/metrics/metrics-dropwizard/src/test/java/org/apache/james/metrics/dropwizard/DropWizardMetricFactoryTest.java @@ -28,7 +28,6 @@ import org.apache.james.metrics.api.MetricFactory; import org.apache.james.metrics.api.MetricFactoryContract; import org.assertj.core.api.SoftAssertions; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import com.codahale.metrics.MetricRegistry; @@ -71,7 +70,6 @@ class DropWizardMetricFactoryTest implements MetricFactoryContract { .isGreaterThan(duration.get(ChronoUnit.NANOS)); } - @Disabled("Recorded timing is 0") @Test void decoratePublisherWithTimerMetricShouldRecordAtLeastTheMonoDelayWhenWrappedInAMono() { Duration duration = Duration.ofMillis(100); diff --git a/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java b/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java index e0aa75f..b253392 100644 --- a/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java +++ b/metrics/metrics-logger/src/main/java/org/apache/james/metrics/logger/DefaultMetricFactory.java @@ -28,7 +28,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; public class DefaultMetricFactory implements MetricFactory { @@ -46,15 +45,15 @@ public class DefaultMetricFactory implements MetricFactory { @Override public <T> Publisher<T> decoratePublisherWithTimerMetric(String name, Publisher<T> publisher) { - return Mono.fromCallable(() -> timer(name)) - .flatMapMany(timer -> Flux.from(publisher) - .doOnComplete(timer::stopAndPublish)); + return Flux.using(() -> timer(name), + any -> Flux.from(publisher), + TimeMetric::stopAndPublish); } @Override public <T> Publisher<T> decoratePublisherWithTimerMetricLogP99(String name, Publisher<T> publisher) { - return Mono.fromCallable(() -> timer(name)) - .flatMapMany(timer -> Flux.from(publisher) - .doOnComplete(() -> timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD))); + return Flux.using(() -> timer(name), + any -> Flux.from(publisher), + timer -> timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD)); } } diff --git a/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java b/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java index 78aeecd..f355e56 100644 --- a/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java +++ b/metrics/metrics-tests/src/main/java/org/apache/james/metrics/tests/RecordingMetricFactory.java @@ -38,7 +38,6 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; public class RecordingMetricFactory implements MetricFactory { private final Multimap<String, Duration> executionTimes = Multimaps.synchronizedListMultimap(ArrayListMultimap.create()); @@ -64,16 +63,16 @@ public class RecordingMetricFactory implements MetricFactory { @Override public <T> Publisher<T> decoratePublisherWithTimerMetric(String name, Publisher<T> publisher) { - return Mono.fromCallable(() -> timer(name)) - .flatMapMany(timer -> Flux.from(publisher) - .doOnComplete(timer::stopAndPublish)); + return Flux.using(() -> timer(name), + any -> Flux.from(publisher), + TimeMetric::stopAndPublish); } @Override public <T> Publisher<T> decoratePublisherWithTimerMetricLogP99(String name, Publisher<T> publisher) { - return Mono.fromCallable(() -> timer(name)) - .flatMapMany(timer -> Flux.from(publisher) - .doOnComplete(() -> timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD))); + return Flux.using(() -> timer(name), + any -> Flux.from(publisher), + timer -> timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD)); } public Collection<Duration> executionTimesFor(String name) { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org