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)

Reply via email to