Liu Liu created FLINK-35764: ------------------------------- Summary: TimerGauge is incorrect when update is called during a measurement Key: FLINK-35764 URL: https://issues.apache.org/jira/browse/FLINK-35764 Project: Flink Issue Type: Bug Components: Runtime / Metrics Affects Versions: 1.19.0, 1.18.0, 1.17.0, 1.16.0, 1.15.0 Reporter: Liu Liu
Currently in {{{}TimerGauge{}}}, the {{currentMeasurement}} in {{markEnd}} is incorrectly set to the time since the last {{{}markStart{}}}. When calling {{{}markStart -> update -> markEnd{}}}, this will result in the time between {{markStart}} and {{update}} being counted twice. A piece of test code that reflects this scenario: {code:java} @Test void testUpdateBeforeMarkingEnd() { ManualClock clock = new ManualClock(42_000_000); // time span = 2 intervals TimerGauge gauge = new TimerGauge(clock, 2 * View.UPDATE_INTERVAL_SECONDS); // the event spans 2 intervals // interval 1 gauge.markStart(); clock.advanceTime(SLEEP, TimeUnit.MILLISECONDS); gauge.update(); // interval 2 clock.advanceTime(SLEEP, TimeUnit.MILLISECONDS); gauge.markEnd(); gauge.update(); // expected: 2, actual: 3 assertThat(gauge.getValue()).isEqualTo(SLEEP / View.UPDATE_INTERVAL_SECONDS); } {code} Proposed changes: # Modify {{markEnd}} so that updates to {{currentCount}} and {{accumulatedCount}} resembles those in {{{}update{}}}. # Add the test case to {{{}TimeGaugeTest{}}}. -- This message was sent by Atlassian Jira (v8.20.10#820010)