Github user zentol commented on a diff in the pull request:

    https://github.com/apache/flink/pull/4840#discussion_r146627036
  
    --- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/legacy/metrics/MetricStore.java
 ---
    @@ -260,50 +293,66 @@ public String getMetric(String name, String 
defaultValue) {
                                ? value
                                : defaultValue;
                }
    -   }
     
    -   /**
    -    * Sub-structure containing metrics of the JobManager.
    -    */
    -   public static class JobManagerMetricStore extends ComponentMetricStore {
    +           public static ComponentMetricStore 
unmodifiable(ComponentMetricStore source) {
    +                   if (source == null) {
    +                           return null;
    +                   }
    +                   return new 
ComponentMetricStore(unmodifiableMap(source.metrics));
    +           }
        }
     
        /**
         * Sub-structure containing metrics of a single TaskManager.
         */
    +   @ThreadSafe
        public static class TaskManagerMetricStore extends ComponentMetricStore 
{
    -           public final Set<String> garbageCollectorNames = new 
HashSet<>();
    +           public final Set<String> garbageCollectorNames;
    +
    +           public TaskManagerMetricStore() {
    +                   this(new ConcurrentHashMap<>(), 
ConcurrentHashMap.newKeySet());
    +           }
    +
    +           public TaskManagerMetricStore(Map<String, String> metrics, 
Set<String> garbageCollectorNames) {
    +                   super(metrics);
    +                   this.garbageCollectorNames = 
checkNotNull(garbageCollectorNames);
    +           }
     
                public void addGarbageCollectorName(String name) {
                        garbageCollectorNames.add(name);
                }
    +
    +           public static TaskManagerMetricStore 
unmodifiable(TaskManagerMetricStore source) {
    --- End diff --
    
    If the returned list is a fresh copy independent of the map it can be 
modifiable; the user can do whatever he wants with it.


---

Reply via email to