drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From paul-rogers <...@git.apache.org>
Subject [GitHub] drill pull request #742: DRILL-5242: The UI breaks when rendering profiles h...
Date Mon, 06 Feb 2017 21:27:18 GMT
Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/742#discussion_r99684283
  
    --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/OperatorWrapper.java
---
    @@ -163,11 +165,18 @@ public String getMetricsTable() {
               null);
     
           final Number[] values = new Number[metricNames.length];
    +      //Track new/Unknown Metrics
    +      final Set<Integer> unknownMetrics = new TreeSet<Integer>();
           for (final MetricValue metric : op.getMetricList()) {
    -        if (metric.hasLongValue()) {
    -          values[metric.getMetricId()] = metric.getLongValue();
    -        } else if (metric.hasDoubleValue()) {
    -          values[metric.getMetricId()] = metric.getDoubleValue();
    +        if (metric.getMetricId() < metricNames.length) {
    +          if (metric.hasLongValue()) {
    +            values[metric.getMetricId()] = metric.getLongValue();
    +          } else if (metric.hasDoubleValue()) {
    +            values[metric.getMetricId()] = metric.getDoubleValue();
    +          }
    +        } else {
    +          //Tracking unknown metric IDs
    +          unknownMetrics.add(metric.getMetricId());
    --- End diff --
    
    Will this work? We leave the metric unset, then iterate over them in the following loop.
Also, we build the unknownMetrics set, but never use it.
    
    Suggestion: if the metric is not known, just set its value to 0, and log a message to
the log file.
    
    This situation occurs only when 1) opening an old profile with metrics that no longer
exist, or 2) when adding a metric but not registering it properly.
    
    Note that this code does not handle the case where the metric is not registered (the metric
names is null.)
    
    For the external sort, the problem occurred because we have two sets of metric enums (two
implementations) but only one registry of names. The fix was to keep the old and new ones
in sync.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message