drill-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From adene...@apache.org
Subject drill git commit: DRILL-3340: Part 2: Reverting 1a589ab and committing latest patch
Date Mon, 26 Oct 2015 04:27:12 GMT
Repository: drill
Updated Branches:
  refs/heads/master 1a589ab91 -> fab061e60


DRILL-3340: Part 2: Reverting 1a589ab and committing latest patch

Add operator metrics registry for metric definitions
+ Display metrics as a table within an operator profile panel
+ Rename FragmentStats#getOperatorStats to newOperatorStats


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/fab061e6
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/fab061e6
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/fab061e6

Branch: refs/heads/master
Commit: fab061e600f25736fe2738850ae30e697b072268
Parents: 1a589ab
Author: Sudheesh Katkam <skatkam@maprtech.com>
Authored: Sun Oct 25 20:24:46 2015 -0700
Committer: adeneche <adeneche@gmail.com>
Committed: Sun Oct 25 21:26:09 2015 -0700

----------------------------------------------------------------------
 .../apache/drill/exec/ops/FragmentStats.java    |   1 +
 .../drill/exec/ops/OperatorMetricRegistry.java  |  75 ++++
 .../drill/exec/ops/OperatorMetricsMapping.java  |  71 ----
 .../drill/exec/physical/impl/ScreenCreator.java |   2 +-
 .../server/rest/profile/OperatorWrapper.java    |  56 ++-
 .../server/rest/profile/ProfileWrapper.java     |   2 +-
 .../exec/server/rest/profile/TableBuilder.java  |   1 -
 .../drill/exec/work/foreman/FragmentData.java   |  32 +-
 .../drill/exec/work/foreman/QueryManager.java   |   8 +-
 .../src/main/resources/rest/profile/profile.ftl |  14 +
 .../drill/exec/proto/SchemaUserBitShared.java   |  14 -
 .../apache/drill/exec/proto/UserBitShared.java  | 379 ++-----------------
 .../drill/exec/proto/beans/MetricValue.java     |  22 --
 .../drill/exec/proto/beans/OperatorProfile.java |  22 --
 protocol/src/main/protobuf/UserBitShared.proto  |   2 -
 15 files changed, 186 insertions(+), 515 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentStats.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentStats.java b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentStats.java
index 67470bd..a5a334f 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentStats.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/FragmentStats.java
@@ -55,6 +55,7 @@ public class FragmentStats {
 
   /**
    * Creates a new holder for operator statistics within this holder for fragment statistics.
+   *
    * @param profileDef operator profile definition
    * @param allocator the allocator being used
    * @return a new operator statistics holder

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricRegistry.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricRegistry.java b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricRegistry.java
new file mode 100644
index 0000000..75426d5
--- /dev/null
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricRegistry.java
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.drill.exec.ops;
+
+import org.apache.drill.exec.physical.impl.ScreenCreator;
+import org.apache.drill.exec.physical.impl.SingleSenderCreator;
+import org.apache.drill.exec.physical.impl.aggregate.HashAggTemplate;
+import org.apache.drill.exec.physical.impl.broadcastsender.BroadcastSenderRootExec;
+import org.apache.drill.exec.physical.impl.join.HashJoinBatch;
+import org.apache.drill.exec.physical.impl.mergereceiver.MergingRecordBatch;
+import org.apache.drill.exec.physical.impl.partitionsender.PartitionSenderRootExec;
+import org.apache.drill.exec.physical.impl.unorderedreceiver.UnorderedReceiverBatch;
+import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType;
+
+/**
+ * Registry of operator metrics.
+ */
+public class OperatorMetricRegistry {
+//  private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(OperatorMetricRegistry.class);
+
+  // Mapping: operator type --> metric id --> metric name
+  private static final String[][] OPERATOR_METRICS = new String[CoreOperatorType.values().length][];
+
+  static {
+    register(CoreOperatorType.SCREEN_VALUE, ScreenCreator.ScreenRoot.Metric.class);
+    register(CoreOperatorType.SINGLE_SENDER_VALUE, SingleSenderCreator.SingleSenderRootExec.Metric.class);
+    register(CoreOperatorType.BROADCAST_SENDER_VALUE, BroadcastSenderRootExec.Metric.class);
+    register(CoreOperatorType.HASH_PARTITION_SENDER_VALUE, PartitionSenderRootExec.Metric.class);
+    register(CoreOperatorType.MERGING_RECEIVER_VALUE, MergingRecordBatch.Metric.class);
+    register(CoreOperatorType.UNORDERED_RECEIVER_VALUE, UnorderedReceiverBatch.Metric.class);
+    register(CoreOperatorType.HASH_AGGREGATE_VALUE, HashAggTemplate.Metric.class);
+    register(CoreOperatorType.HASH_JOIN_VALUE, HashJoinBatch.Metric.class);
+  }
+
+  private static void register(final int operatorType, final Class<? extends MetricDef> metricDef) {
+    // Currently registers a metric def that has enum constants
+    final MetricDef[] enumConstants = metricDef.getEnumConstants();
+    if (enumConstants != null) {
+      final String[] names = new String[enumConstants.length];
+      for (int i = 0; i < enumConstants.length; i++) {
+        names[i] = enumConstants[i].name();
+      }
+      OPERATOR_METRICS[operatorType] = names;
+    }
+  }
+
+  /**
+   * Given an operator type, this method returns an array of metric names (indexable by metric id).
+   *
+   * @param operatorType the operator type
+   * @return metric names if operator was registered, null otherwise
+   */
+  public static String[] getMetricNames(final int operatorType) {
+    return OPERATOR_METRICS[operatorType];
+  }
+
+  // to prevent instantiation
+  private OperatorMetricRegistry() {
+  }
+}

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricsMapping.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricsMapping.java b/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricsMapping.java
deleted file mode 100644
index 8cd3e46..0000000
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/ops/OperatorMetricsMapping.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.exec.ops;
-
-import org.apache.drill.exec.physical.impl.ScreenCreator;
-import org.apache.drill.exec.physical.impl.SingleSenderCreator;
-import org.apache.drill.exec.physical.impl.aggregate.HashAggTemplate;
-import org.apache.drill.exec.physical.impl.broadcastsender.BroadcastSenderRootExec;
-import org.apache.drill.exec.physical.impl.join.HashJoinBatch;
-import org.apache.drill.exec.physical.impl.mergereceiver.MergingRecordBatch;
-import org.apache.drill.exec.physical.impl.partitionsender.PartitionSenderRootExec;
-import org.apache.drill.exec.physical.impl.unorderedreceiver.UnorderedReceiverBatch;
-import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType;
-
-/**
- * Helper class to retrieve operator metric names.
- */
-public class OperatorMetricsMapping {
-//  private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(OperatorToMetricsMapping.class);
-
-  // Mapping: operator type --> metric id --> metric name
-  private static final String[][] OPERATOR_METRICS = new String[CoreOperatorType.values().length][];
-
-  static {
-    addMetricNames(CoreOperatorType.SCREEN_VALUE, ScreenCreator.ScreenRoot.Metric.class);
-    addMetricNames(CoreOperatorType.SINGLE_SENDER_VALUE, SingleSenderCreator.SingleSenderRootExec.Metric.class);
-    addMetricNames(CoreOperatorType.BROADCAST_SENDER_VALUE, BroadcastSenderRootExec.Metric.class);
-    addMetricNames(CoreOperatorType.HASH_PARTITION_SENDER_VALUE, PartitionSenderRootExec.Metric.class);
-    addMetricNames(CoreOperatorType.MERGING_RECEIVER_VALUE, MergingRecordBatch.Metric.class);
-    addMetricNames(CoreOperatorType.UNORDERED_RECEIVER_VALUE, UnorderedReceiverBatch.Metric.class);
-    addMetricNames(CoreOperatorType.HASH_AGGREGATE_VALUE, HashAggTemplate.Metric.class);
-    addMetricNames(CoreOperatorType.HASH_JOIN_VALUE, HashJoinBatch.Metric.class);
-  }
-
-  private static void addMetricNames(final int operatorType, final Class<? extends MetricDef> metricDef) {
-    final MetricDef[] enumConstants = metricDef.getEnumConstants();
-    if (enumConstants != null) {
-      final String[] names = new String[enumConstants.length];
-      for (int i = 0; i < enumConstants.length; i++) {
-        names[i] = enumConstants[i].name();
-      }
-      OPERATOR_METRICS[operatorType] = names;
-    }
-  }
-
-  /**
-   * Given an operator type and a metric id, this method returns the metric name.
-   *
-   * @param operatorType the operator type
-   * @param metricId     metric id
-   * @return metric name if metric was registered, null otherwise
-   */
-  public static String getMetricName(final int operatorType, final int metricId) {
-    return OPERATOR_METRICS[operatorType] != null ? OPERATOR_METRICS[operatorType][metricId] : null;
-  }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScreenCreator.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScreenCreator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScreenCreator.java
index 1acdeb4..a46ea35 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScreenCreator.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/ScreenCreator.java
@@ -50,8 +50,8 @@ public class ScreenCreator implements RootCreator<Screen> {
     return new ScreenRoot(context, children.iterator().next(), config);
   }
 
-
   public static class ScreenRoot extends BaseRootExec {
+    private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ScreenRoot.class);
     private final RecordBatch incoming;
     private final FragmentContext context;
     private final AccountingUserConnection userConnection;

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/OperatorWrapper.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/OperatorWrapper.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/OperatorWrapper.java
index 2e972b0..4cc7971 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/OperatorWrapper.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/OperatorWrapper.java
@@ -22,7 +22,9 @@ import java.util.List;
 
 import com.google.common.base.Preconditions;
 import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.drill.exec.ops.OperatorMetricRegistry;
 import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType;
+import org.apache.drill.exec.proto.UserBitShared.MetricValue;
 import org.apache.drill.exec.proto.UserBitShared.OperatorProfile;
 import org.apache.drill.exec.proto.UserBitShared.StreamProfile;
 
@@ -33,9 +35,10 @@ public class OperatorWrapper {
   private static final String format = " (%s)";
 
   private final int major;
-  private final List<ImmutablePair<OperatorProfile, Integer>> ops;
+  private final List<ImmutablePair<OperatorProfile, Integer>> ops; // operator profile --> minor fragment number
   private final OperatorProfile firstProfile;
   private final CoreOperatorType operatorType;
+  private final String operatorName;
   private final int size;
 
   public OperatorWrapper(int major, List<ImmutablePair<OperatorProfile, Integer>> ops) {
@@ -43,13 +46,14 @@ public class OperatorWrapper {
     this.major = major;
     firstProfile = ops.get(0).getLeft();
     operatorType = CoreOperatorType.valueOf(firstProfile.getOperatorType());
+    operatorName = operatorType == null ? "UNKNOWN_OPERATOR" : operatorType.toString();
     this.ops = ops;
     size = ops.size();
   }
 
   public String getDisplayName() {
     final String path = new OperatorPathBuilder().setMajor(major).setOperator(firstProfile).build();
-    return String.format("%s - %s", path, operatorType == null ? "UNKNOWN_OPERATOR" : operatorType.toString());
+    return String.format("%s - %s", path, operatorName);
   }
 
   public String getId() {
@@ -94,7 +98,7 @@ public class OperatorWrapper {
 
     String path = new OperatorPathBuilder().setMajor(major).setOperator(firstProfile).build();
     tb.appendCell(path, null);
-    tb.appendCell(operatorType == null ? "UNKNOWN_OPERATOR" : operatorType.toString(), null);
+    tb.appendCell(operatorName, null);
 
     double setupSum = 0.0;
     double processSum = 0.0;
@@ -130,4 +134,50 @@ public class OperatorWrapper {
     tb.appendBytes(Math.round(memSum / size), null);
     tb.appendBytes(peakMem.getLeft().getPeakLocalMemoryAllocated(), null);
   }
+
+  public String getMetricsTable() {
+    if (operatorType == null) {
+      return "";
+    }
+    final String[] metricNames = OperatorMetricRegistry.getMetricNames(operatorType.getNumber());
+    if (metricNames == null) {
+      return "";
+    }
+
+    final String[] metricsTableColumnNames = new String[metricNames.length + 1];
+    metricsTableColumnNames[0] = "Minor Fragment";
+    int i = 1;
+    for (final String metricName : metricNames) {
+      metricsTableColumnNames[i++] = metricName;
+    }
+    final TableBuilder builder = new TableBuilder(metricsTableColumnNames);
+    for (final ImmutablePair<OperatorProfile, Integer> ip : ops) {
+      final OperatorProfile op = ip.getLeft();
+
+      builder.appendCell(
+          new OperatorPathBuilder()
+              .setMajor(major)
+              .setMinor(ip.getRight())
+              .setOperator(op)
+              .build(),
+          null);
+
+      final Number[] values = new Number[metricNames.length];
+      for (final MetricValue metric : op.getMetricList()) {
+        if (metric.hasLongValue()) {
+          values[metric.getMetricId()] = metric.getLongValue();
+        } else if (metric.hasDoubleValue()) {
+          values[metric.getMetricId()] = metric.getDoubleValue();
+        }
+      }
+      for (final Number value : values) {
+        if (value != null) {
+          builder.appendFormattedNumber(value, null);
+        } else {
+          builder.appendCell("", null);
+        }
+      }
+    }
+    return builder.build();
+  }
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileWrapper.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileWrapper.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileWrapper.java
index 7de05c1..f73ab90 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileWrapper.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileWrapper.java
@@ -32,7 +32,7 @@ import org.apache.drill.exec.proto.UserBitShared.QueryProfile;
 import org.apache.drill.exec.proto.helper.QueryIdHelper;
 
 /**
- * This class contains information presented in the query profile web UI.
+ * Wrapper class for a {@link #profile query profile}, so it to be presented through web UI.
  */
 public class ProfileWrapper {
 //  private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ProfileWrapper.class);

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/TableBuilder.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/TableBuilder.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/TableBuilder.java
index bcc67f2..8355797 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/TableBuilder.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/TableBuilder.java
@@ -48,7 +48,6 @@ class TableBuilder {
     width = columns.length;
 
     format.setMaximumFractionDigits(3);
-    format.setMinimumFractionDigits(3);
 
     sb.append("<table class=\"table table-bordered text-right\">\n<tr>");
     for (final String cn : columns) {

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/FragmentData.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/FragmentData.java b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/FragmentData.java
index 7cd43d4..9e07210 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/FragmentData.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/FragmentData.java
@@ -17,13 +17,10 @@
  */
 package org.apache.drill.exec.work.foreman;
 
-import org.apache.drill.exec.ops.OperatorMetricsMapping;
 import org.apache.drill.exec.proto.BitControl.FragmentStatus;
 import org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint;
 import org.apache.drill.exec.proto.ExecProtos.FragmentHandle;
-import org.apache.drill.exec.proto.UserBitShared.CoreOperatorType;
 import org.apache.drill.exec.proto.UserBitShared.FragmentState;
-import org.apache.drill.exec.proto.UserBitShared.MetricValue;
 import org.apache.drill.exec.proto.UserBitShared.MinorFragmentProfile;
 import org.apache.drill.exec.proto.UserBitShared.OperatorProfile;
 
@@ -67,31 +64,10 @@ public class FragmentData {
     return status.getProfile().getState();
   }
 
-  /**
-   * Gets the {@link MinorFragmentProfile} associated with this fragment data.
-   *
-   * @param addMetricNames if operator names and metric names should be added
-   * @return minor fragment profile
-   */
-  public MinorFragmentProfile getProfile(final boolean addMetricNames) {
-    final MinorFragmentProfile.Builder miBuilder = status.getProfile().toBuilder();
-    if (addMetricNames) {
-      for (int i = 0; i < miBuilder.getOperatorProfileCount(); i++) {
-        final OperatorProfile.Builder opBuilder = miBuilder.getOperatorProfileBuilder(i);
-        final int operatorType = opBuilder.getOperatorType();
-        opBuilder.setOperatorName(CoreOperatorType.valueOf(operatorType).name());
-        for (int j = 0; j < opBuilder.getMetricCount(); j++) {
-          final MetricValue.Builder meBuilder = opBuilder.getMetricBuilder(j);
-          final String metricName = OperatorMetricsMapping.getMetricName(operatorType, meBuilder.getMetricId());
-          if (metricName != null) {
-            meBuilder.setMetricName(metricName);
-          }
-          opBuilder.setMetric(j, meBuilder);
-        }
-        miBuilder.setOperatorProfile(i, opBuilder);
-      }
-    }
-    return miBuilder
+  public MinorFragmentProfile getProfile() {
+    return status
+        .getProfile()
+        .toBuilder()
         .setLastUpdate(lastStatusUpdate)
         .setLastProgress(lastProgress)
         .build();

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryManager.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryManager.java b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryManager.java
index 2ada459..60173e2 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryManager.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/QueryManager.java
@@ -304,7 +304,7 @@ public class QueryManager {
   void writeFinalProfile(UserException ex) {
     try {
       // TODO(DRILL-2362) when do these ever get deleted?
-      profilePStore.put(stringQueryId, getQueryProfile(ex, true));
+      profilePStore.put(stringQueryId, getQueryProfile(ex));
     } catch (Exception e) {
       logger.error("Failure while storing Query Profile", e);
     }
@@ -321,10 +321,10 @@ public class QueryManager {
   }
 
   public QueryProfile getQueryProfile() {
-    return getQueryProfile(null, false);
+    return getQueryProfile(null);
   }
 
-  private QueryProfile getQueryProfile(final UserException ex, final boolean addNames) {
+  private QueryProfile getQueryProfile(UserException ex) {
     final QueryProfile.Builder profileBuilder = QueryProfile.newBuilder()
         .setQuery(runQuery.getPlan())
         .setUser(foreman.getQueryContext().getQueryUserName())
@@ -360,7 +360,7 @@ public class QueryManager {
         for (int v = 0; v < minorMap.allocated.length; v++) {
           if (minorMap.allocated[v]) {
             final FragmentData data = (FragmentData) ((Object[]) minorMap.values)[v];
-            fb.addMinorFragmentProfile(data.getProfile(addNames));
+            fb.addMinorFragmentProfile(data.getProfile());
           }
         }
         profileBuilder.addFragmentProfile(fb);

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/exec/java-exec/src/main/resources/rest/profile/profile.ftl
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/resources/rest/profile/profile.ftl b/exec/java-exec/src/main/resources/rest/profile/profile.ftl
index 47c7e06..88dbe21 100644
--- a/exec/java-exec/src/main/resources/rest/profile/profile.ftl
+++ b/exec/java-exec/src/main/resources/rest/profile/profile.ftl
@@ -176,6 +176,20 @@
         <div class="panel-body">
           ${op.getContent()}
         </div>
+        <div class="panel panel-info">
+          <div class="panel-heading">
+            <h4 class="panel-title">
+              <a data-toggle="collapse" href="#${op.getId()}-metrics">
+                Operator Metrics
+              </a>
+            </h4>
+          </div>
+          <div id="${op.getId()}-metrics" class="panel-collapse collapse">
+            <div class="panel-body">
+              ${op.getMetricsTable()}
+            </div>
+          </div>
+        </div>
       </div>
     </div>
     </#list>

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserBitShared.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserBitShared.java b/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserBitShared.java
index e280678..58efae3 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserBitShared.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/SchemaUserBitShared.java
@@ -2293,8 +2293,6 @@ public final class SchemaUserBitShared
 
                 if(message.hasWaitNanos())
                     output.writeInt64(9, message.getWaitNanos(), false);
-                if(message.hasOperatorName())
-                    output.writeString(10, message.getOperatorName(), false);
             }
             public boolean isInitialized(org.apache.drill.exec.proto.UserBitShared.OperatorProfile message)
             {
@@ -2360,9 +2358,6 @@ public final class SchemaUserBitShared
                         case 9:
                             builder.setWaitNanos(input.readInt64());
                             break;
-                        case 10:
-                            builder.setOperatorName(input.readString());
-                            break;
                         default:
                             input.handleUnknownField(number, this);
                     }
@@ -2411,7 +2406,6 @@ public final class SchemaUserBitShared
                 case 7: return "peakLocalMemoryAllocated";
                 case 8: return "metric";
                 case 9: return "waitNanos";
-                case 10: return "operatorName";
                 default: return null;
             }
         }
@@ -2431,7 +2425,6 @@ public final class SchemaUserBitShared
             fieldMap.put("peakLocalMemoryAllocated", 7);
             fieldMap.put("metric", 8);
             fieldMap.put("waitNanos", 9);
-            fieldMap.put("operatorName", 10);
         }
     }
 
@@ -2577,8 +2570,6 @@ public final class SchemaUserBitShared
                     output.writeInt64(2, message.getLongValue(), false);
                 if(message.hasDoubleValue())
                     output.writeDouble(3, message.getDoubleValue(), false);
-                if(message.hasMetricName())
-                    output.writeString(4, message.getMetricName(), false);
             }
             public boolean isInitialized(org.apache.drill.exec.proto.UserBitShared.MetricValue message)
             {
@@ -2627,9 +2618,6 @@ public final class SchemaUserBitShared
                         case 3:
                             builder.setDoubleValue(input.readDouble());
                             break;
-                        case 4:
-                            builder.setMetricName(input.readString());
-                            break;
                         default:
                             input.handleUnknownField(number, this);
                     }
@@ -2673,7 +2661,6 @@ public final class SchemaUserBitShared
                 case 1: return "metricId";
                 case 2: return "longValue";
                 case 3: return "doubleValue";
-                case 4: return "metricName";
                 default: return null;
             }
         }
@@ -2688,7 +2675,6 @@ public final class SchemaUserBitShared
             fieldMap.put("metricId", 1);
             fieldMap.put("longValue", 2);
             fieldMap.put("doubleValue", 3);
-            fieldMap.put("metricName", 4);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/protocol/src/main/java/org/apache/drill/exec/proto/UserBitShared.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/UserBitShared.java b/protocol/src/main/java/org/apache/drill/exec/proto/UserBitShared.java
index b17f01a..e76d748 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/UserBitShared.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/UserBitShared.java
@@ -18117,21 +18117,6 @@ public final class UserBitShared {
      * <code>optional int64 wait_nanos = 9;</code>
      */
     long getWaitNanos();
-
-    // optional string operator_name = 10;
-    /**
-     * <code>optional string operator_name = 10;</code>
-     */
-    boolean hasOperatorName();
-    /**
-     * <code>optional string operator_name = 10;</code>
-     */
-    java.lang.String getOperatorName();
-    /**
-     * <code>optional string operator_name = 10;</code>
-     */
-    com.google.protobuf.ByteString
-        getOperatorNameBytes();
   }
   /**
    * Protobuf type {@code exec.shared.OperatorProfile}
@@ -18230,11 +18215,6 @@ public final class UserBitShared {
               waitNanos_ = input.readInt64();
               break;
             }
-            case 82: {
-              bitField0_ |= 0x00000040;
-              operatorName_ = input.readBytes();
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -18449,49 +18429,6 @@ public final class UserBitShared {
       return waitNanos_;
     }
 
-    // optional string operator_name = 10;
-    public static final int OPERATOR_NAME_FIELD_NUMBER = 10;
-    private java.lang.Object operatorName_;
-    /**
-     * <code>optional string operator_name = 10;</code>
-     */
-    public boolean hasOperatorName() {
-      return ((bitField0_ & 0x00000040) == 0x00000040);
-    }
-    /**
-     * <code>optional string operator_name = 10;</code>
-     */
-    public java.lang.String getOperatorName() {
-      java.lang.Object ref = operatorName_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          operatorName_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string operator_name = 10;</code>
-     */
-    public com.google.protobuf.ByteString
-        getOperatorNameBytes() {
-      java.lang.Object ref = operatorName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        operatorName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
     private void initFields() {
       inputProfile_ = java.util.Collections.emptyList();
       operatorId_ = 0;
@@ -18501,7 +18438,6 @@ public final class UserBitShared {
       peakLocalMemoryAllocated_ = 0L;
       metric_ = java.util.Collections.emptyList();
       waitNanos_ = 0L;
-      operatorName_ = "";
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
@@ -18539,9 +18475,6 @@ public final class UserBitShared {
       if (((bitField0_ & 0x00000020) == 0x00000020)) {
         output.writeInt64(9, waitNanos_);
       }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        output.writeBytes(10, getOperatorNameBytes());
-      }
       getUnknownFields().writeTo(output);
     }
 
@@ -18583,10 +18516,6 @@ public final class UserBitShared {
         size += com.google.protobuf.CodedOutputStream
           .computeInt64Size(9, waitNanos_);
       }
-      if (((bitField0_ & 0x00000040) == 0x00000040)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(10, getOperatorNameBytes());
-      }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
@@ -18729,8 +18658,6 @@ public final class UserBitShared {
         }
         waitNanos_ = 0L;
         bitField0_ = (bitField0_ & ~0x00000080);
-        operatorName_ = "";
-        bitField0_ = (bitField0_ & ~0x00000100);
         return this;
       }
 
@@ -18801,10 +18728,6 @@ public final class UserBitShared {
           to_bitField0_ |= 0x00000020;
         }
         result.waitNanos_ = waitNanos_;
-        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
-          to_bitField0_ |= 0x00000040;
-        }
-        result.operatorName_ = operatorName_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -18891,11 +18814,6 @@ public final class UserBitShared {
         if (other.hasWaitNanos()) {
           setWaitNanos(other.getWaitNanos());
         }
-        if (other.hasOperatorName()) {
-          bitField0_ |= 0x00000100;
-          operatorName_ = other.operatorName_;
-          onChanged();
-        }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
@@ -19601,80 +19519,6 @@ public final class UserBitShared {
         return this;
       }
 
-      // optional string operator_name = 10;
-      private java.lang.Object operatorName_ = "";
-      /**
-       * <code>optional string operator_name = 10;</code>
-       */
-      public boolean hasOperatorName() {
-        return ((bitField0_ & 0x00000100) == 0x00000100);
-      }
-      /**
-       * <code>optional string operator_name = 10;</code>
-       */
-      public java.lang.String getOperatorName() {
-        java.lang.Object ref = operatorName_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          operatorName_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string operator_name = 10;</code>
-       */
-      public com.google.protobuf.ByteString
-          getOperatorNameBytes() {
-        java.lang.Object ref = operatorName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          operatorName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string operator_name = 10;</code>
-       */
-      public Builder setOperatorName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        operatorName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string operator_name = 10;</code>
-       */
-      public Builder clearOperatorName() {
-        bitField0_ = (bitField0_ & ~0x00000100);
-        operatorName_ = getDefaultInstance().getOperatorName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string operator_name = 10;</code>
-       */
-      public Builder setOperatorNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000100;
-        operatorName_ = value;
-        onChanged();
-        return this;
-      }
-
       // @@protoc_insertion_point(builder_scope:exec.shared.OperatorProfile)
     }
 
@@ -20276,21 +20120,6 @@ public final class UserBitShared {
      * <code>optional double double_value = 3;</code>
      */
     double getDoubleValue();
-
-    // optional string metric_name = 4;
-    /**
-     * <code>optional string metric_name = 4;</code>
-     */
-    boolean hasMetricName();
-    /**
-     * <code>optional string metric_name = 4;</code>
-     */
-    java.lang.String getMetricName();
-    /**
-     * <code>optional string metric_name = 4;</code>
-     */
-    com.google.protobuf.ByteString
-        getMetricNameBytes();
   }
   /**
    * Protobuf type {@code exec.shared.MetricValue}
@@ -20358,11 +20187,6 @@ public final class UserBitShared {
               doubleValue_ = input.readDouble();
               break;
             }
-            case 34: {
-              bitField0_ |= 0x00000008;
-              metricName_ = input.readBytes();
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -20451,54 +20275,10 @@ public final class UserBitShared {
       return doubleValue_;
     }
 
-    // optional string metric_name = 4;
-    public static final int METRIC_NAME_FIELD_NUMBER = 4;
-    private java.lang.Object metricName_;
-    /**
-     * <code>optional string metric_name = 4;</code>
-     */
-    public boolean hasMetricName() {
-      return ((bitField0_ & 0x00000008) == 0x00000008);
-    }
-    /**
-     * <code>optional string metric_name = 4;</code>
-     */
-    public java.lang.String getMetricName() {
-      java.lang.Object ref = metricName_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          metricName_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>optional string metric_name = 4;</code>
-     */
-    public com.google.protobuf.ByteString
-        getMetricNameBytes() {
-      java.lang.Object ref = metricName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        metricName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
     private void initFields() {
       metricId_ = 0;
       longValue_ = 0L;
       doubleValue_ = 0D;
-      metricName_ = "";
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
@@ -20521,9 +20301,6 @@ public final class UserBitShared {
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         output.writeDouble(3, doubleValue_);
       }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        output.writeBytes(4, getMetricNameBytes());
-      }
       getUnknownFields().writeTo(output);
     }
 
@@ -20545,10 +20322,6 @@ public final class UserBitShared {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(3, doubleValue_);
       }
-      if (((bitField0_ & 0x00000008) == 0x00000008)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(4, getMetricNameBytes());
-      }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
@@ -20671,8 +20444,6 @@ public final class UserBitShared {
         bitField0_ = (bitField0_ & ~0x00000002);
         doubleValue_ = 0D;
         bitField0_ = (bitField0_ & ~0x00000004);
-        metricName_ = "";
-        bitField0_ = (bitField0_ & ~0x00000008);
         return this;
       }
 
@@ -20713,10 +20484,6 @@ public final class UserBitShared {
           to_bitField0_ |= 0x00000004;
         }
         result.doubleValue_ = doubleValue_;
-        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
-          to_bitField0_ |= 0x00000008;
-        }
-        result.metricName_ = metricName_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -20742,11 +20509,6 @@ public final class UserBitShared {
         if (other.hasDoubleValue()) {
           setDoubleValue(other.getDoubleValue());
         }
-        if (other.hasMetricName()) {
-          bitField0_ |= 0x00000008;
-          metricName_ = other.metricName_;
-          onChanged();
-        }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
@@ -20873,80 +20635,6 @@ public final class UserBitShared {
         return this;
       }
 
-      // optional string metric_name = 4;
-      private java.lang.Object metricName_ = "";
-      /**
-       * <code>optional string metric_name = 4;</code>
-       */
-      public boolean hasMetricName() {
-        return ((bitField0_ & 0x00000008) == 0x00000008);
-      }
-      /**
-       * <code>optional string metric_name = 4;</code>
-       */
-      public java.lang.String getMetricName() {
-        java.lang.Object ref = metricName_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          metricName_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>optional string metric_name = 4;</code>
-       */
-      public com.google.protobuf.ByteString
-          getMetricNameBytes() {
-        java.lang.Object ref = metricName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          metricName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>optional string metric_name = 4;</code>
-       */
-      public Builder setMetricName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        metricName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string metric_name = 4;</code>
-       */
-      public Builder clearMetricName() {
-        bitField0_ = (bitField0_ & ~0x00000008);
-        metricName_ = getDefaultInstance().getMetricName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>optional string metric_name = 4;</code>
-       */
-      public Builder setMetricNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000008;
-        metricName_ = value;
-        onChanged();
-        return this;
-      }
-
       // @@protoc_insertion_point(builder_scope:exec.shared.MetricValue)
     }
 
@@ -21136,44 +20824,43 @@ public final class UserBitShared {
       "\020\n\010end_time\030\006 \001(\003\022\023\n\013memory_used\030\007 \001(\003\022\027" +
       "\n\017max_memory_used\030\010 \001(\003\022(\n\010endpoint\030\t \001(" +
       "\0132\026.exec.DrillbitEndpoint\022\023\n\013last_update" +
-      "\030\n \001(\003\022\025\n\rlast_progress\030\013 \001(\003\"\226\002\n\017Operat" +
+      "\030\n \001(\003\022\025\n\rlast_progress\030\013 \001(\003\"\377\001\n\017Operat" +
       "orProfile\0221\n\rinput_profile\030\001 \003(\0132\032.exec." +
       "shared.StreamProfile\022\023\n\013operator_id\030\003 \001(" +
       "\005\022\025\n\roperator_type\030\004 \001(\005\022\023\n\013setup_nanos\030" +
       "\005 \001(\003\022\025\n\rprocess_nanos\030\006 \001(\003\022#\n\033peak_loc" +
       "al_memory_allocated\030\007 \001(\003\022(\n\006metric\030\010 \003(",
       "\0132\030.exec.shared.MetricValue\022\022\n\nwait_nano" +
-      "s\030\t \001(\003\022\025\n\roperator_name\030\n \001(\t\"B\n\rStream" +
-      "Profile\022\017\n\007records\030\001 \001(\003\022\017\n\007batches\030\002 \001(" +
-      "\003\022\017\n\007schemas\030\003 \001(\003\"_\n\013MetricValue\022\021\n\tmet" +
-      "ric_id\030\001 \001(\005\022\022\n\nlong_value\030\002 \001(\003\022\024\n\014doub" +
-      "le_value\030\003 \001(\001\022\023\n\013metric_name\030\004 \001(\t*5\n\nR" +
-      "pcChannel\022\017\n\013BIT_CONTROL\020\000\022\014\n\010BIT_DATA\020\001" +
-      "\022\010\n\004USER\020\002*/\n\tQueryType\022\007\n\003SQL\020\001\022\013\n\007LOGI" +
-      "CAL\020\002\022\014\n\010PHYSICAL\020\003*\207\001\n\rFragmentState\022\013\n" +
-      "\007SENDING\020\000\022\027\n\023AWAITING_ALLOCATION\020\001\022\013\n\007R",
-      "UNNING\020\002\022\014\n\010FINISHED\020\003\022\r\n\tCANCELLED\020\004\022\n\n" +
-      "\006FAILED\020\005\022\032\n\026CANCELLATION_REQUESTED\020\006*\335\005" +
-      "\n\020CoreOperatorType\022\021\n\rSINGLE_SENDER\020\000\022\024\n" +
-      "\020BROADCAST_SENDER\020\001\022\n\n\006FILTER\020\002\022\022\n\016HASH_" +
-      "AGGREGATE\020\003\022\r\n\tHASH_JOIN\020\004\022\016\n\nMERGE_JOIN" +
-      "\020\005\022\031\n\025HASH_PARTITION_SENDER\020\006\022\t\n\005LIMIT\020\007" +
-      "\022\024\n\020MERGING_RECEIVER\020\010\022\034\n\030ORDERED_PARTIT" +
-      "ION_SENDER\020\t\022\013\n\007PROJECT\020\n\022\026\n\022UNORDERED_R" +
-      "ECEIVER\020\013\022\020\n\014RANGE_SENDER\020\014\022\n\n\006SCREEN\020\r\022" +
-      "\034\n\030SELECTION_VECTOR_REMOVER\020\016\022\027\n\023STREAMI",
-      "NG_AGGREGATE\020\017\022\016\n\nTOP_N_SORT\020\020\022\021\n\rEXTERN" +
-      "AL_SORT\020\021\022\t\n\005TRACE\020\022\022\t\n\005UNION\020\023\022\014\n\010OLD_S" +
-      "ORT\020\024\022\032\n\026PARQUET_ROW_GROUP_SCAN\020\025\022\021\n\rHIV" +
-      "E_SUB_SCAN\020\026\022\025\n\021SYSTEM_TABLE_SCAN\020\027\022\021\n\rM" +
-      "OCK_SUB_SCAN\020\030\022\022\n\016PARQUET_WRITER\020\031\022\023\n\017DI" +
-      "RECT_SUB_SCAN\020\032\022\017\n\013TEXT_WRITER\020\033\022\021\n\rTEXT" +
-      "_SUB_SCAN\020\034\022\021\n\rJSON_SUB_SCAN\020\035\022\030\n\024INFO_S" +
-      "CHEMA_SUB_SCAN\020\036\022\023\n\017COMPLEX_TO_JSON\020\037\022\025\n" +
-      "\021PRODUCER_CONSUMER\020 \022\022\n\016HBASE_SUB_SCAN\020!" +
-      "\022\n\n\006WINDOW\020\"\022\024\n\020NESTED_LOOP_JOIN\020#\022\021\n\rAV",
-      "RO_SUB_SCAN\020$B.\n\033org.apache.drill.exec.p" +
-      "rotoB\rUserBitSharedH\001"
+      "s\030\t \001(\003\"B\n\rStreamProfile\022\017\n\007records\030\001 \001(" +
+      "\003\022\017\n\007batches\030\002 \001(\003\022\017\n\007schemas\030\003 \001(\003\"J\n\013M" +
+      "etricValue\022\021\n\tmetric_id\030\001 \001(\005\022\022\n\nlong_va" +
+      "lue\030\002 \001(\003\022\024\n\014double_value\030\003 \001(\001*5\n\nRpcCh" +
+      "annel\022\017\n\013BIT_CONTROL\020\000\022\014\n\010BIT_DATA\020\001\022\010\n\004" +
+      "USER\020\002*/\n\tQueryType\022\007\n\003SQL\020\001\022\013\n\007LOGICAL\020" +
+      "\002\022\014\n\010PHYSICAL\020\003*\207\001\n\rFragmentState\022\013\n\007SEN" +
+      "DING\020\000\022\027\n\023AWAITING_ALLOCATION\020\001\022\013\n\007RUNNI" +
+      "NG\020\002\022\014\n\010FINISHED\020\003\022\r\n\tCANCELLED\020\004\022\n\n\006FAI",
+      "LED\020\005\022\032\n\026CANCELLATION_REQUESTED\020\006*\335\005\n\020Co" +
+      "reOperatorType\022\021\n\rSINGLE_SENDER\020\000\022\024\n\020BRO" +
+      "ADCAST_SENDER\020\001\022\n\n\006FILTER\020\002\022\022\n\016HASH_AGGR" +
+      "EGATE\020\003\022\r\n\tHASH_JOIN\020\004\022\016\n\nMERGE_JOIN\020\005\022\031" +
+      "\n\025HASH_PARTITION_SENDER\020\006\022\t\n\005LIMIT\020\007\022\024\n\020" +
+      "MERGING_RECEIVER\020\010\022\034\n\030ORDERED_PARTITION_" +
+      "SENDER\020\t\022\013\n\007PROJECT\020\n\022\026\n\022UNORDERED_RECEI" +
+      "VER\020\013\022\020\n\014RANGE_SENDER\020\014\022\n\n\006SCREEN\020\r\022\034\n\030S" +
+      "ELECTION_VECTOR_REMOVER\020\016\022\027\n\023STREAMING_A" +
+      "GGREGATE\020\017\022\016\n\nTOP_N_SORT\020\020\022\021\n\rEXTERNAL_S",
+      "ORT\020\021\022\t\n\005TRACE\020\022\022\t\n\005UNION\020\023\022\014\n\010OLD_SORT\020" +
+      "\024\022\032\n\026PARQUET_ROW_GROUP_SCAN\020\025\022\021\n\rHIVE_SU" +
+      "B_SCAN\020\026\022\025\n\021SYSTEM_TABLE_SCAN\020\027\022\021\n\rMOCK_" +
+      "SUB_SCAN\020\030\022\022\n\016PARQUET_WRITER\020\031\022\023\n\017DIRECT" +
+      "_SUB_SCAN\020\032\022\017\n\013TEXT_WRITER\020\033\022\021\n\rTEXT_SUB" +
+      "_SCAN\020\034\022\021\n\rJSON_SUB_SCAN\020\035\022\030\n\024INFO_SCHEM" +
+      "A_SUB_SCAN\020\036\022\023\n\017COMPLEX_TO_JSON\020\037\022\025\n\021PRO" +
+      "DUCER_CONSUMER\020 \022\022\n\016HBASE_SUB_SCAN\020!\022\n\n\006" +
+      "WINDOW\020\"\022\024\n\020NESTED_LOOP_JOIN\020#\022\021\n\rAVRO_S" +
+      "UB_SCAN\020$B.\n\033org.apache.drill.exec.proto",
+      "B\rUserBitSharedH\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -21281,7 +20968,7 @@ public final class UserBitShared {
           internal_static_exec_shared_OperatorProfile_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_exec_shared_OperatorProfile_descriptor,
-              new java.lang.String[] { "InputProfile", "OperatorId", "OperatorType", "SetupNanos", "ProcessNanos", "PeakLocalMemoryAllocated", "Metric", "WaitNanos", "OperatorName", });
+              new java.lang.String[] { "InputProfile", "OperatorId", "OperatorType", "SetupNanos", "ProcessNanos", "PeakLocalMemoryAllocated", "Metric", "WaitNanos", });
           internal_static_exec_shared_StreamProfile_descriptor =
             getDescriptor().getMessageTypes().get(17);
           internal_static_exec_shared_StreamProfile_fieldAccessorTable = new
@@ -21293,7 +20980,7 @@ public final class UserBitShared {
           internal_static_exec_shared_MetricValue_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_exec_shared_MetricValue_descriptor,
-              new java.lang.String[] { "MetricId", "LongValue", "DoubleValue", "MetricName", });
+              new java.lang.String[] { "MetricId", "LongValue", "DoubleValue", });
           return null;
         }
       };

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/protocol/src/main/java/org/apache/drill/exec/proto/beans/MetricValue.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/MetricValue.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/MetricValue.java
index a87fe92..3b5439f 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/MetricValue.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/MetricValue.java
@@ -50,7 +50,6 @@ public final class MetricValue implements Externalizable, Message<MetricValue>,
     private int metricId;
     private long longValue;
     private double doubleValue;
-    private String metricName;
 
     public MetricValue()
     {
@@ -98,19 +97,6 @@ public final class MetricValue implements Externalizable, Message<MetricValue>,
         return this;
     }
 
-    // metricName
-
-    public String getMetricName()
-    {
-        return metricName;
-    }
-
-    public MetricValue setMetricName(String metricName)
-    {
-        this.metricName = metricName;
-        return this;
-    }
-
     // java serialization
 
     public void readExternal(ObjectInput in) throws IOException
@@ -174,9 +160,6 @@ public final class MetricValue implements Externalizable, Message<MetricValue>,
                 case 3:
                     message.doubleValue = input.readDouble();
                     break;
-                case 4:
-                    message.metricName = input.readString();
-                    break;
                 default:
                     input.handleUnknownField(number, this);
             }   
@@ -194,9 +177,6 @@ public final class MetricValue implements Externalizable, Message<MetricValue>,
 
         if(message.doubleValue != 0)
             output.writeDouble(3, message.doubleValue, false);
-
-        if(message.metricName != null)
-            output.writeString(4, message.metricName, false);
     }
 
     public String getFieldName(int number)
@@ -206,7 +186,6 @@ public final class MetricValue implements Externalizable, Message<MetricValue>,
             case 1: return "metricId";
             case 2: return "longValue";
             case 3: return "doubleValue";
-            case 4: return "metricName";
             default: return null;
         }
     }
@@ -223,7 +202,6 @@ public final class MetricValue implements Externalizable, Message<MetricValue>,
         __fieldMap.put("metricId", 1);
         __fieldMap.put("longValue", 2);
         __fieldMap.put("doubleValue", 3);
-        __fieldMap.put("metricName", 4);
     }
     
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/protocol/src/main/java/org/apache/drill/exec/proto/beans/OperatorProfile.java
----------------------------------------------------------------------
diff --git a/protocol/src/main/java/org/apache/drill/exec/proto/beans/OperatorProfile.java b/protocol/src/main/java/org/apache/drill/exec/proto/beans/OperatorProfile.java
index 181e23a..e197f54 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/OperatorProfile.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/OperatorProfile.java
@@ -57,7 +57,6 @@ public final class OperatorProfile implements Externalizable, Message<OperatorPr
     private long peakLocalMemoryAllocated;
     private List<MetricValue> metric;
     private long waitNanos;
-    private String operatorName;
 
     public OperatorProfile()
     {
@@ -170,19 +169,6 @@ public final class OperatorProfile implements Externalizable, Message<OperatorPr
         return this;
     }
 
-    // operatorName
-
-    public String getOperatorName()
-    {
-        return operatorName;
-    }
-
-    public OperatorProfile setOperatorName(String operatorName)
-    {
-        this.operatorName = operatorName;
-        return this;
-    }
-
     // java serialization
 
     public void readExternal(ObjectInput in) throws IOException
@@ -267,9 +253,6 @@ public final class OperatorProfile implements Externalizable, Message<OperatorPr
                 case 9:
                     message.waitNanos = input.readInt64();
                     break;
-                case 10:
-                    message.operatorName = input.readString();
-                    break;
                 default:
                     input.handleUnknownField(number, this);
             }   
@@ -316,9 +299,6 @@ public final class OperatorProfile implements Externalizable, Message<OperatorPr
 
         if(message.waitNanos != 0)
             output.writeInt64(9, message.waitNanos, false);
-
-        if(message.operatorName != null)
-            output.writeString(10, message.operatorName, false);
     }
 
     public String getFieldName(int number)
@@ -333,7 +313,6 @@ public final class OperatorProfile implements Externalizable, Message<OperatorPr
             case 7: return "peakLocalMemoryAllocated";
             case 8: return "metric";
             case 9: return "waitNanos";
-            case 10: return "operatorName";
             default: return null;
         }
     }
@@ -355,7 +334,6 @@ public final class OperatorProfile implements Externalizable, Message<OperatorPr
         __fieldMap.put("peakLocalMemoryAllocated", 7);
         __fieldMap.put("metric", 8);
         __fieldMap.put("waitNanos", 9);
-        __fieldMap.put("operatorName", 10);
     }
     
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/fab061e6/protocol/src/main/protobuf/UserBitShared.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/UserBitShared.proto b/protocol/src/main/protobuf/UserBitShared.proto
index ad16caa..0451fd2 100644
--- a/protocol/src/main/protobuf/UserBitShared.proto
+++ b/protocol/src/main/protobuf/UserBitShared.proto
@@ -230,7 +230,6 @@ message OperatorProfile {
   optional int64 peak_local_memory_allocated = 7;
   repeated MetricValue metric = 8;
   optional int64 wait_nanos = 9;
-  optional string operator_name = 10;
 }
 
 message StreamProfile {
@@ -243,7 +242,6 @@ message MetricValue {
   optional int32 metric_id = 1;
   optional int64 long_value = 2;
   optional double double_value = 3;
-  optional string metric_name = 4;
 }
 
 enum FragmentState {


Mime
View raw message