You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Liu Liu (Jira)" <ji...@apache.org> on 2024/07/05 07:36:00 UTC

[jira] [Created] (FLINK-35764) TimerGauge is incorrect when update is called during a measurement

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)