[ 
https://issues.apache.org/jira/browse/FLINK-28852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17590109#comment-17590109
 ] 

chenyuzhi edited comment on FLINK-28852 at 8/28/22 1:13 PM:
------------------------------------------------------------

I think the problem comes from *MetricStore.class,* beause it always add 
metrics but  not clear them when refreshing to query metrics . As the code 
shown below:
{code:java}
synchronized void addAll(List<MetricDump> metricDumps) {
    for (MetricDump metric : metricDumps) {
        add(metric);
    }
}
{code}
If we can clear the previous metrics before adding the latest metrics ,the 
problem could be solved.

 

I plan to add a method named  *clearMetrics* which could be implemented by  
{*}ComponentMetricStore/JobMetricStore/TaskMetricStore{*}, and then we could 
change the code above to:
{code:java}
synchronized void addAll(List<MetricDump> metricDumps) {
    jobManager.clearMetrics();
    taskManagers.values().forEach(ComponentMetricStore::clearMetrics);
    jobs.values().forEach(JobMetricStore::clearMetrics);
    for (MetricDump metric : metricDumps) {
        add(metric);
    }
} {code}
I had tested the changed code in our unit test and flink cluster. I hope to 
contribute the changed code as a pull request to the community!

 


was (Author: stupid_pig):
I think the problem comes from *MetricStore.class,* beause it always add 
metrics but  not clear them when refreshing to query metrics . As the code 
shown below:
{code:java}
synchronized void addAll(List<MetricDump> metricDumps) {
    for (MetricDump metric : metricDumps) {
        add(metric);
    }
}
{code}
If we can clear the previous metrics before adding the latest metrics ,the 
problem could be solved.

 

I plan to add a method named  *clearMetrics* which could be implemented by  
{*}ComponentMetricStore/JobMetricStore/TaskMetricStore{*}, and then we could 
change the code above to follow:
{code:java}
synchronized void addAll(List<MetricDump> metricDumps) {
    jobManager.clearMetrics();
    taskManagers.values().forEach(ComponentMetricStore::clearMetrics);
    jobs.values().forEach(JobMetricStore::clearMetrics);
    for (MetricDump metric : metricDumps) {
        add(metric);
    }
} {code}
I had tested the changed code in our unit test and flink cluster. I hope to 
contribute the changed code as a pull request to the community!

 

> Closed metrics could be found in metric dashboard from WebUI
> ------------------------------------------------------------
>
>                 Key: FLINK-28852
>                 URL: https://issues.apache.org/jira/browse/FLINK-28852
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Metrics
>         Environment: Flink 1.11.3
>            Reporter: chenyuzhi
>            Priority: Major
>
> When I close  metric group, the related metrics would be unregistered from 
> metric-reporter, however the closed metrics could be found in metric dashboad 
> from WebUI.
> This would leak to memory leak.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to