zentol closed pull request #7165: [FLINK-10990][Metric]Pre-check timespan in 
meterview to avoid NAN
URL: https://github.com/apache/flink/pull/7165
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MeterView.java
 
b/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MeterView.java
index 8df0e868f8f..6d53325edaf 100644
--- 
a/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MeterView.java
+++ 
b/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/MeterView.java
@@ -50,7 +50,11 @@ public MeterView(int timeSpanInSeconds) {
 
        public MeterView(Counter counter, int timeSpanInSeconds) {
                this.counter = counter;
-               this.timeSpanInSeconds = timeSpanInSeconds - (timeSpanInSeconds 
% UPDATE_INTERVAL_SECONDS);
+               // the time-span must be larger than the update-interval as 
otherwise the array has a size of 1,
+               // for which no rate can be computed as no distinct 
before/after measurement exists.
+               this.timeSpanInSeconds = Math.max(
+                       timeSpanInSeconds - (timeSpanInSeconds % 
UPDATE_INTERVAL_SECONDS),
+                       UPDATE_INTERVAL_SECONDS);
                this.values = new long[this.timeSpanInSeconds / 
UPDATE_INTERVAL_SECONDS + 1];
        }
 
diff --git 
a/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MeterViewTest.java
 
b/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MeterViewTest.java
index a7a63b09949..7752a6e80bb 100644
--- 
a/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MeterViewTest.java
+++ 
b/flink-metrics/flink-metrics-core/src/test/java/org/apache/flink/metrics/MeterViewTest.java
@@ -20,6 +20,7 @@
 
 import org.junit.Test;
 
+import static org.apache.flink.metrics.View.UPDATE_INTERVAL_SECONDS;
 import static org.junit.Assert.assertEquals;
 
 /**
@@ -94,4 +95,14 @@ public void testGetRate() {
                assertEquals(0.0, m.getRate(), 0.1); // 480 - 480 / 60
 
        }
+
+       @Test
+       public void testTimeSpanBelowUpdateRate() {
+               int timeSpanInSeconds = 1;
+               MeterView m = new MeterView(timeSpanInSeconds);
+               assert timeSpanInSeconds < UPDATE_INTERVAL_SECONDS;
+               m.markEvent();
+               m.update();
+               assertEquals(0.2, m.getRate(), 0.0);
+       }
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to