You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/07/01 05:07:48 UTC
[james-project] 02/03: JAMES-3170
MetricFactory::decoratePublisherWithTimerMetric should rely on Flux::using
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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org