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.
---