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

ASF GitHub Bot commented on FLINK-4245:
---------------------------------------

Github user StephanEwen commented on the issue:

    https://github.com/apache/flink/pull/2418
  
    Actually, it may be possible, and not too bad if we assume the Hashtable is 
immutable. Something like this:
    
    ```java
    public class HashtableWrapper extends Hashtable<String, String> {
    
        private final Map<String, String> backingMap;
        private final String name;
    
        public HashtableWrapper(Map<String, String> backingMap, String name) {
            super(1);
            this.backingMap = backingMap;
            this.name = name;
        }
    
        @Override
        public synchronized V get(Object key) {
            if ("name".equals(key)) {
                return name;
            } else {
                return backingMap.get(key);
            }
        }
    
        @Override
        public synchronized String put(String  key, String  value) {
            throw new UnsupportedOperationException("immutable hashtable");
        }
    
        // wrappers for Iterator to Enumeration
    
        @Override
        public synchronized Enumeration<String> keys() {
            return new IteratorToEnumeration(backingMap.keySet());
        }
    
        @Override
        public synchronized Enumeration<String> elements() {
            return new IteratorToEnumeration(backingMap.valueSet());
        }
    
        // and so on ...
    }
    ```


> Metric naming improvements
> --------------------------
>
>                 Key: FLINK-4245
>                 URL: https://issues.apache.org/jira/browse/FLINK-4245
>             Project: Flink
>          Issue Type: Improvement
>          Components: Metrics
>            Reporter: Stephan Ewen
>
> A metric currently has two parts to it:
>   - The name of that particular metric
>   - The "scope" (or namespace), defined by the group that contains the metric.
> A metric group actually always implicitly has a map of naming "tags", like:
>   - taskmanager_host : <some-hostname>
>   - taskmanager_id : <id>
>   - task_name : "map() -> filter()"
> We derive the scope from that map, following the defined scope formats.
> For JMX (and some users that use JMX), it would be natural to expose that map 
> of tags. Some users reconstruct that map by parsing the metric scope. JMX, we 
> can expose a metric like:
>   - domain: "taskmanager.task.operator.io"
>   - name: "numRecordsIn"
>   - tags: { "hostname" -> "localhost", "operator_name" -> "map() at 
> X.java:123", ... }
> For many other reporters, the formatted scope makes a lot of sense, since 
> they think only in terms of (scope, metric-name).
> We may even have the formatted scope in JMX as well (in the domain), if we 
> want to go that route. 
> [~jgrier] and [~Zentol] - what do you think about that?
> [~mdaxini] Does that match your use of the metrics?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to