This is an automated email from the ASF dual-hosted git repository.

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 64026dd  HDDS-2660. Create insight point for datanode container 
protocol (#1272)
64026dd is described below

commit 64026dd494a3d5109c16d2b521d726da5e4608da
Author: Elek, Márton <[email protected]>
AuthorDate: Thu Sep 24 13:08:44 2020 +0200

    HDDS-2660. Create insight point for datanode container protocol (#1272)
---
 .../container/common/impl/HddsDispatcher.java      |  59 ++++++------
 ...inerDatanodeProtocolServerSideTranslatorPB.java |   2 +-
 .../server/OzoneProtocolMessageDispatcher.java     |   9 +-
 .../SCMSecurityProtocolServerSideTranslatorPB.java |  17 ++--
 ...lockLocationProtocolServerSideTranslatorPB.java |   2 +-
 ...inerLocationProtocolServerSideTranslatorPB.java |  17 ++--
 .../hadoop/ozone/insight/BaseInsightPoint.java     |  34 ++++---
 .../ozone/insight/BaseInsightSubCommand.java       |   3 +
 .../apache/hadoop/ozone/insight/InsightPoint.java  |   4 +-
 .../hadoop/ozone/insight/MetricGroupDisplay.java   |   4 +-
 .../hadoop/ozone/insight/MetricsSubCommand.java    |  33 ++++---
 .../datanode/DatanodeDispatcherInsight.java        | 107 +++++++++++++++++++++
 .../insight/datanode/PipelineComponentUtil.java    |  78 +++++++++++++++
 .../ozone/insight/datanode/RatisInsight.java       |  45 +++------
 .../hadoop/ozone/insight/om/KeyManagerInsight.java |   2 +-
 .../hadoop/ozone/insight/om/OmProtocolInsight.java |   2 +-
 .../ozone/insight/scm/NodeManagerInsight.java      |   2 +-
 .../ozone/insight/scm/ReplicaManagerInsight.java   |   2 +-
 .../scm/ScmProtocolBlockLocationInsight.java       |   2 +-
 .../scm/ScmProtocolContainerLocationInsight.java   |   2 +-
 .../insight/scm/ScmProtocolDatanodeInsight.java    |   2 +-
 .../insight/scm/ScmProtocolSecurityInsight.java    |   2 +-
 ...OzoneManagerProtocolServerSideTranslatorPB.java |   4 +-
 23 files changed, 313 insertions(+), 121 deletions(-)

diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
index ab65805..d545406 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
@@ -23,9 +23,9 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 
-import org.apache.hadoop.hdds.conf.ConfigurationSource;
 import org.apache.hadoop.hdds.HddsConfigKeys;
 import org.apache.hadoop.hdds.HddsUtils;
+import org.apache.hadoop.hdds.conf.ConfigurationSource;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
 import 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ContainerCommandRequestProto;
 import 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ContainerCommandResponseProto;
@@ -33,12 +33,13 @@ import 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ContainerD
 import 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ContainerDataProto.State;
 import 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ContainerType;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Result;
+import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Type;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerAction;
 import 
org.apache.hadoop.hdds.scm.container.common.helpers.ContainerNotOpenException;
 import 
org.apache.hadoop.hdds.scm.container.common.helpers.InvalidContainerStateException;
 import 
org.apache.hadoop.hdds.scm.container.common.helpers.StorageContainerException;
 import org.apache.hadoop.hdds.security.token.TokenVerifier;
-import org.apache.hadoop.hdds.tracing.TracingUtil;
+import org.apache.hadoop.hdds.server.OzoneProtocolMessageDispatcher;
 import org.apache.hadoop.hdds.utils.ProtocolMessageMetrics;
 import org.apache.hadoop.ozone.audit.AuditAction;
 import org.apache.hadoop.ozone.audit.AuditEventStatus;
@@ -60,9 +61,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
-import io.opentracing.Scope;
-import io.opentracing.Span;
-import io.opentracing.util.GlobalTracer;
+import com.google.protobuf.ServiceException;
 import static 
org.apache.hadoop.hdds.scm.protocolPB.ContainerCommandResponseBuilders.malformedRequest;
 import static 
org.apache.hadoop.hdds.scm.protocolPB.ContainerCommandResponseBuilders.unsupportedRequest;
 
@@ -86,6 +85,8 @@ public class HddsDispatcher implements ContainerDispatcher, 
Auditor {
   private final StateContext context;
   private final float containerCloseThreshold;
   private final ProtocolMessageMetrics<ProtocolMessageEnum> protocolMetrics;
+  private OzoneProtocolMessageDispatcher<ContainerCommandRequestProto,
+      ContainerCommandResponseProto, ProtocolMessageEnum> dispatcher;
   private String scmID;
   private ContainerMetrics metrics;
   private final TokenVerifier tokenVerifier;
@@ -117,7 +118,12 @@ public class HddsDispatcher implements 
ContainerDispatcher, Auditor {
         new ProtocolMessageMetrics<>(
             "HddsDispatcher",
             "HDDS dispatcher metrics",
-            ContainerProtos.Type.values());
+            Type.values());
+
+    this.dispatcher =
+        new OzoneProtocolMessageDispatcher<>("DatanodeClient",
+            protocolMetrics,
+            LOG);
   }
 
   @Override
@@ -158,16 +164,13 @@ public class HddsDispatcher implements 
ContainerDispatcher, Auditor {
   @Override
   public ContainerCommandResponseProto dispatch(
       ContainerCommandRequestProto msg, DispatcherContext dispatcherContext) {
-    String spanName = "HddsDispatcher." + msg.getCmdType().name();
-    long startTime = System.nanoTime();
-    Span span = TracingUtil
-        .importAndCreateSpan(spanName, msg.getTraceID());
-    try (Scope scope = GlobalTracer.get().activateSpan(span)) {
-      return dispatchRequest(msg, dispatcherContext);
-    } finally {
-      span.finish();
-      protocolMetrics
-          .increment(msg.getCmdType(), System.nanoTime() - startTime);
+    try {
+      return dispatcher.processRequest(msg,
+          req -> dispatchRequest(msg, dispatcherContext),
+          msg.getCmdType(),
+          msg.getTraceID());
+    } catch (ServiceException ex) {
+      throw new RuntimeException(ex);
     }
   }
 
@@ -189,16 +192,16 @@ public class HddsDispatcher implements 
ContainerDispatcher, Auditor {
     ContainerType containerType;
     ContainerCommandResponseProto responseProto = null;
     long startTime = System.nanoTime();
-    ContainerProtos.Type cmdType = msg.getCmdType();
+    Type cmdType = msg.getCmdType();
     long containerID = msg.getContainerID();
     metrics.incContainerOpsMetrics(cmdType);
     Container container = getContainer(containerID);
     boolean isWriteStage =
-        (cmdType == ContainerProtos.Type.WriteChunk && dispatcherContext != 
null
+        (cmdType == Type.WriteChunk && dispatcherContext != null
             && dispatcherContext.getStage()
             == DispatcherContext.WriteChunkStage.WRITE_DATA);
     boolean isWriteCommitStage =
-        (cmdType == ContainerProtos.Type.WriteChunk && dispatcherContext != 
null
+        (cmdType == Type.WriteChunk && dispatcherContext != null
             && dispatcherContext.getStage()
             == DispatcherContext.WriteChunkStage.COMMIT_DATA);
 
@@ -213,7 +216,7 @@ public class HddsDispatcher implements ContainerDispatcher, 
Auditor {
     // if the command gets executed other than Ratis, the default write stage
     // is WriteChunkStage.COMBINED
     boolean isCombinedStage =
-        cmdType == ContainerProtos.Type.WriteChunk && (dispatcherContext == 
null
+        cmdType == Type.WriteChunk && (dispatcherContext == null
             || dispatcherContext.getStage()
             == DispatcherContext.WriteChunkStage.COMBINED);
     Map<Long, Long> container2BCSIDMap = null;
@@ -243,13 +246,13 @@ public class HddsDispatcher implements 
ContainerDispatcher, Auditor {
       return ContainerUtils.logAndReturnError(LOG, sce, msg);
     }
 
-    if (cmdType != ContainerProtos.Type.CreateContainer) {
+    if (cmdType != Type.CreateContainer) {
       /**
        * Create Container should happen only as part of Write_Data phase of
        * writeChunk.
        */
       if (container == null && ((isWriteStage || isCombinedStage)
-          || cmdType == ContainerProtos.Type.PutSmallFile)) {
+          || cmdType == Type.PutSmallFile)) {
         // If container does not exist, create one for WriteChunk and
         // PutSmallFile request
         responseProto = createContainer(msg);
@@ -317,7 +320,7 @@ public class HddsDispatcher implements ContainerDispatcher, 
Auditor {
       // state here.
 
       Result result = responseProto.getResult();
-      if (cmdType == ContainerProtos.Type.CreateContainer
+      if (cmdType == Type.CreateContainer
           && result == Result.SUCCESS && dispatcherContext != null) {
         Preconditions.checkNotNull(dispatcherContext.getContainer2BCSIDMap());
         container2BCSIDMap.putIfAbsent(containerID, Long.valueOf(0));
@@ -374,9 +377,9 @@ public class HddsDispatcher implements ContainerDispatcher, 
Auditor {
   }
 
   private void updateBCSID(Container container,
-      DispatcherContext dispatcherContext, ContainerProtos.Type cmdType) {
-    if (dispatcherContext != null && (cmdType == ContainerProtos.Type.PutBlock
-        || cmdType == ContainerProtos.Type.PutSmallFile)) {
+      DispatcherContext dispatcherContext, Type cmdType) {
+    if (dispatcherContext != null && (cmdType == Type.PutBlock
+        || cmdType == Type.PutSmallFile)) {
       Preconditions.checkNotNull(container);
       long bcsID = container.getBlockCommitSequenceId();
       long containerId = container.getContainerData().getContainerID();
@@ -406,7 +409,7 @@ public class HddsDispatcher implements ContainerDispatcher, 
Auditor {
 
     ContainerCommandRequestProto.Builder requestBuilder =
         ContainerCommandRequestProto.newBuilder()
-            .setCmdType(ContainerProtos.Type.CreateContainer)
+            .setCmdType(Type.CreateContainer)
             .setContainerID(containerRequest.getContainerID())
             .setCreateContainer(createRequest.build())
             .setPipelineID(containerRequest.getPipelineID())
@@ -448,7 +451,7 @@ public class HddsDispatcher implements ContainerDispatcher, 
Auditor {
       return;
     }
     ContainerType containerType = container.getContainerType();
-    ContainerProtos.Type cmdType = msg.getCmdType();
+    Type cmdType = msg.getCmdType();
     AuditAction action =
         ContainerCommandRequestPBHelper.getAuditAction(cmdType);
     EventType eventType = getEventType(msg);
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java
index f27f4f3..740842d 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocolPB/StorageContainerDatanodeProtocolServerSideTranslatorPB.java
@@ -50,7 +50,7 @@ public class 
StorageContainerDatanodeProtocolServerSideTranslatorPB
 
   private final StorageContainerDatanodeProtocol impl;
   private final OzoneProtocolMessageDispatcher<SCMDatanodeRequest,
-      SCMDatanodeResponse> dispatcher;
+      SCMDatanodeResponse, ProtocolMessageEnum> dispatcher;
 
   public StorageContainerDatanodeProtocolServerSideTranslatorPB(
       StorageContainerDatanodeProtocol impl,
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/OzoneProtocolMessageDispatcher.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/OzoneProtocolMessageDispatcher.java
index c239c0d..ba6f15d 100644
--- 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/OzoneProtocolMessageDispatcher.java
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/OzoneProtocolMessageDispatcher.java
@@ -21,7 +21,6 @@ import 
org.apache.hadoop.hdds.function.FunctionWithServiceException;
 import org.apache.hadoop.hdds.tracing.TracingUtil;
 import org.apache.hadoop.hdds.utils.ProtocolMessageMetrics;
 
-import com.google.protobuf.ProtocolMessageEnum;
 import com.google.protobuf.ServiceException;
 import io.opentracing.Span;
 import org.slf4j.Logger;
@@ -34,17 +33,17 @@ import org.slf4j.Logger;
  * It logs the message type/content on DEBUG/TRACING log for insight and create
  * a new span based on the tracing information.
  */
-public class OzoneProtocolMessageDispatcher<REQUEST, RESPONSE> {
+public class OzoneProtocolMessageDispatcher<REQUEST, RESPONSE, TYPE> {
 
   private String serviceName;
 
-  private final ProtocolMessageMetrics<ProtocolMessageEnum>
+  private final ProtocolMessageMetrics<TYPE>
       protocolMessageMetrics;
 
   private Logger logger;
 
   public OzoneProtocolMessageDispatcher(String serviceName,
-      ProtocolMessageMetrics<ProtocolMessageEnum> protocolMessageMetrics,
+      ProtocolMessageMetrics<TYPE> protocolMessageMetrics,
       Logger logger) {
     this.serviceName = serviceName;
     this.protocolMessageMetrics = protocolMessageMetrics;
@@ -54,7 +53,7 @@ public class OzoneProtocolMessageDispatcher<REQUEST, 
RESPONSE> {
   public RESPONSE processRequest(
       REQUEST request,
       FunctionWithServiceException<REQUEST, RESPONSE> methodCall,
-      ProtocolMessageEnum type,
+      TYPE type,
       String traceId) throws ServiceException {
     Span span = TracingUtil.importAndCreateSpan(type.toString(), traceId);
     try {
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/SCMSecurityProtocolServerSideTranslatorPB.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/SCMSecurityProtocolServerSideTranslatorPB.java
index 666123e..9388a33 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/SCMSecurityProtocolServerSideTranslatorPB.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/SCMSecurityProtocolServerSideTranslatorPB.java
@@ -16,19 +16,14 @@
  */
 package org.apache.hadoop.hdds.scm.protocol;
 
-import com.google.protobuf.RpcController;
-import com.google.protobuf.ServiceException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.io.IOException;
 
+import org.apache.hadoop.hdds.protocol.SCMSecurityProtocol;
 import org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos;
 import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertResponseProto;
+import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertResponseProto.ResponseCode;
 import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertificateRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetDataNodeCertRequestProto;
-import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetCertResponseProto.ResponseCode;
-import org.apache.hadoop.hdds.protocol.SCMSecurityProtocol;
 import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMGetOMCertRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMSecurityRequest;
 import 
org.apache.hadoop.hdds.protocol.proto.SCMSecurityProtocolProtos.SCMSecurityResponse;
@@ -37,6 +32,12 @@ import 
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolPB;
 import org.apache.hadoop.hdds.server.OzoneProtocolMessageDispatcher;
 import org.apache.hadoop.hdds.utils.ProtocolMessageMetrics;
 
+import com.google.protobuf.ProtocolMessageEnum;
+import com.google.protobuf.RpcController;
+import com.google.protobuf.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * This class is the server-side translator that forwards requests received on
  * {@link SCMSecurityProtocolPB} to the {@link
@@ -51,7 +52,7 @@ public class SCMSecurityProtocolServerSideTranslatorPB
   private final SCMSecurityProtocol impl;
 
   private OzoneProtocolMessageDispatcher<SCMSecurityRequest,
-      SCMSecurityResponse>
+      SCMSecurityResponse, ProtocolMessageEnum>
       dispatcher;
 
   public SCMSecurityProtocolServerSideTranslatorPB(SCMSecurityProtocol impl,
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocolServerSideTranslatorPB.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocolServerSideTranslatorPB.java
index fb07351..a04e168 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocolServerSideTranslatorPB.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/ScmBlockLocationProtocolServerSideTranslatorPB.java
@@ -68,7 +68,7 @@ public final class 
ScmBlockLocationProtocolServerSideTranslatorPB
       .getLogger(ScmBlockLocationProtocolServerSideTranslatorPB.class);
 
   private final OzoneProtocolMessageDispatcher<SCMBlockLocationRequest,
-      SCMBlockLocationResponse>
+      SCMBlockLocationResponse, ProtocolMessageEnum>
       dispatcher;
 
   /**
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
index d07cc56..d5496b4 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
@@ -26,7 +26,6 @@ import org.apache.commons.lang3.tuple.Pair;
 import org.apache.hadoop.hdds.annotation.InterfaceAudience;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos;
-import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.PipelineResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ActivatePipelineRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ActivatePipelineResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ClosePipelineRequestProto;
@@ -39,10 +38,10 @@ import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolPro
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ForceExitSafeModeResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerResponseProto;
-import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineRequestProto;
-import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineBatchRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineBatchResponseProto;
+import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineRequestProto;
+import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetContainerWithPipelineResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetPipelineRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetPipelineResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.InSafeModeRequestProto;
@@ -50,10 +49,11 @@ import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolPro
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ListPipelineRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ListPipelineResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.NodeQueryResponseProto;
-import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMCloseContainerRequestProto;
-import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMCloseContainerResponseProto;
+import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.PipelineResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ReplicationManagerStatusRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ReplicationManagerStatusResponseProto;
+import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMCloseContainerRequestProto;
+import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMCloseContainerResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMDeleteContainerRequestProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMDeleteContainerResponseProto;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMListContainerRequestProto;
@@ -79,11 +79,10 @@ import org.apache.hadoop.hdds.utils.ProtocolMessageMetrics;
 import com.google.protobuf.ProtocolMessageEnum;
 import com.google.protobuf.RpcController;
 import com.google.protobuf.ServiceException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import static 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.PipelineResponseProto.Error.errorPipelineAlreadyExists;
 import static 
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.PipelineResponseProto.Error.success;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This class is the server-side translator that forwards requests received on
@@ -101,7 +100,7 @@ public final class 
StorageContainerLocationProtocolServerSideTranslatorPB
   private final StorageContainerLocationProtocol impl;
 
   private OzoneProtocolMessageDispatcher<ScmContainerLocationRequest,
-      ScmContainerLocationResponse>
+      ScmContainerLocationResponse, ProtocolMessageEnum>
       dispatcher;
 
   /**
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightPoint.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightPoint.java
index b3c64ae..2789d03 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightPoint.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightPoint.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.ozone.insight;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -28,11 +29,8 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.scm.ScmConfigKeys;
 import org.apache.hadoop.hdds.scm.cli.ContainerOperationClient;
 import org.apache.hadoop.hdds.scm.client.ScmClient;
-import org.apache.hadoop.hdds.server.http.PrometheusMetricsSink;
 import org.apache.hadoop.ozone.insight.LoggerSource.Level;
 
-import com.google.protobuf.ProtocolMessageEnum;
-
 /**
  * Default implementation of Insight point logic.
  */
@@ -42,7 +40,7 @@ public abstract class BaseInsightPoint implements 
InsightPoint {
    * List the related metrics.
    */
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     return new ArrayList<>();
   }
 
@@ -91,21 +89,35 @@ public abstract class BaseInsightPoint implements 
InsightPoint {
     return verbose ? Level.TRACE : Level.DEBUG;
   }
 
+  public void addProtocolMessageMetrics(
+      List<MetricGroupDisplay> metrics,
+      String prefix,
+      Component.Type type,
+      Object[] types
+  ) {
+    addProtocolMessageMetrics(metrics, prefix, new Component(type), types);
+  }
+
   /**
    * Default metrics for any message type based RPC ServerSide translators.
    */
-  public void addProtocolMessageMetrics(List<MetricGroupDisplay> metrics,
+  public void addProtocolMessageMetrics(
+      List<MetricGroupDisplay> metrics,
       String prefix,
-      Component.Type component,
-      ProtocolMessageEnum[] types) {
+      Component component,
+      Object[] types
+  ) {
 
     MetricGroupDisplay messageTypeCounters =
         new MetricGroupDisplay(component, "Message type counters");
-    for (ProtocolMessageEnum type : types) {
+    for (Object type : types) {
       String typeName = type.toString();
-      MetricDisplay metricDisplay = new MetricDisplay("Number of " + typeName,
-          prefix + "_" + PrometheusMetricsSink
-              .normalizeName(typeName));
+
+      Map<String, String> typeFilter = new HashMap<>();
+      typeFilter.put("type", typeName);
+      MetricDisplay metricDisplay =
+          new MetricDisplay("Number of " + typeName + " calls",
+              prefix + "_counter", typeFilter);
       messageTypeCounters.addMetrics(metricDisplay);
     }
     metrics.add(messageTypeCounters);
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightSubCommand.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightSubCommand.java
index 8101531..73937c5 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightSubCommand.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/BaseInsightSubCommand.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.hdds.HddsUtils;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.scm.ScmConfigKeys;
 import org.apache.hadoop.ozone.insight.Component.Type;
+import org.apache.hadoop.ozone.insight.datanode.DatanodeDispatcherInsight;
 import org.apache.hadoop.ozone.insight.datanode.RatisInsight;
 import org.apache.hadoop.ozone.insight.om.KeyManagerInsight;
 import org.apache.hadoop.ozone.insight.om.OmProtocolInsight;
@@ -98,6 +99,8 @@ public class BaseInsightSubCommand {
     insights.put("om.key-manager", new KeyManagerInsight());
     insights.put("om.protocol.client", new OmProtocolInsight());
     insights.put("datanode.pipeline", new RatisInsight(configuration));
+    insights.put("datanode.dispatcher",
+        new DatanodeDispatcherInsight(configuration));
 
     return insights;
   }
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/InsightPoint.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/InsightPoint.java
index 517ba57..e46d675 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/InsightPoint.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/InsightPoint.java
@@ -39,7 +39,7 @@ public interface InsightPoint {
   /**
    * List of the related metrics.
    */
-  List<MetricGroupDisplay> getMetrics();
+  List<MetricGroupDisplay> getMetrics(Map<String, String> filters);
 
   /**
    * List of the configuration classes.
@@ -47,7 +47,7 @@ public interface InsightPoint {
   List<Class> getConfigurationClasses();
 
   /**
-   * Decide if the specific log should be displayed or not..
+   * Decide if the specific log should be displayed or not.
    */
   boolean filterLog(Map<String, String> filters, String logLine);
 
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricGroupDisplay.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricGroupDisplay.java
index 08fd60c..eb74169 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricGroupDisplay.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricGroupDisplay.java
@@ -42,9 +42,9 @@ public class MetricGroupDisplay {
    */
   private String description;
 
-  public MetricGroupDisplay(Component component, String description) {
+  public MetricGroupDisplay(Component component, String metricName) {
     this.component = component;
-    this.description = description;
+    this.description = metricName;
   }
 
   public MetricGroupDisplay(Type componentType, String metricName) {
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricsSubCommand.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricsSubCommand.java
index d320c82..44e0b7b 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricsSubCommand.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/MetricsSubCommand.java
@@ -17,25 +17,28 @@
  */
 package org.apache.hadoop.ozone.insight;
 
-import org.apache.hadoop.hdds.cli.HddsVersionProvider;
-import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.HttpClientBuilder;
-import picocli.CommandLine;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
-import java.util.*;
+import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.stream.Collectors;
 
+import org.apache.hadoop.hdds.cli.HddsVersionProvider;
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+import picocli.CommandLine;
+
 /**
  * Command line interface to show metrics for a specific component.
  */
@@ -48,6 +51,10 @@ import java.util.stream.Collectors;
 public class MetricsSubCommand extends BaseInsightSubCommand
     implements Callable<Void> {
 
+  @CommandLine.Option(names = "-f", description = "Define filters to scope "
+      + "the output (eg. -f datanode=_1234_datanode_id)")
+  private Map<String, String> filters;
+
   @CommandLine.Parameters(description = "Name of the insight point (use list "
       + "to check the available options)")
   private String insightName;
@@ -59,13 +66,15 @@ public class MetricsSubCommand extends BaseInsightSubCommand
     InsightPoint insight =
         getInsight(conf, insightName);
     Set<Component> sources =
-        insight.getMetrics().stream().map(MetricGroupDisplay::getComponent)
+        insight.getMetrics(filters)
+            .stream()
+            .map(MetricGroupDisplay::getComponent)
             .collect(Collectors.toSet());
     Map<Component, List<String>> metrics = getMetrics(conf, sources);
     System.out.println(
         "Metrics for `" + insightName + "` (" + insight.getDescription() + 
")");
     System.out.println();
-    for (MetricGroupDisplay group : insight.getMetrics()) {
+    for (MetricGroupDisplay group : insight.getMetrics(filters)) {
       System.out.println(group.getDescription());
       System.out.println();
       for (MetricDisplay display : group.getMetrics()) {
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/DatanodeDispatcherInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/DatanodeDispatcherInsight.java
new file mode 100644
index 0000000..b717349
--- /dev/null
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/DatanodeDispatcherInsight.java
@@ -0,0 +1,107 @@
+/*
+ * 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.hadoop.ozone.insight.datanode;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
+import org.apache.hadoop.hdds.server.http.HttpConfig;
+import org.apache.hadoop.ozone.OzoneConfigKeys;
+import org.apache.hadoop.ozone.container.common.impl.HddsDispatcher;
+import org.apache.hadoop.ozone.insight.BaseInsightPoint;
+import org.apache.hadoop.ozone.insight.Component;
+import org.apache.hadoop.ozone.insight.Component.Type;
+import org.apache.hadoop.ozone.insight.InsightPoint;
+import org.apache.hadoop.ozone.insight.LoggerSource;
+import org.apache.hadoop.ozone.insight.MetricGroupDisplay;
+
+import static 
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DATANODE_HTTPS_BIND_PORT_DEFAULT;
+import static 
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DATANODE_HTTP_BIND_PORT_DEFAULT;
+
+/**
+ * Insight definition for HddsDispatcher.
+ */
+public class DatanodeDispatcherInsight extends BaseInsightPoint
+    implements InsightPoint {
+
+  private static final String DATANODE_FILTER = "datanode";
+
+  private OzoneConfiguration conf;
+
+  public DatanodeDispatcherInsight(
+      OzoneConfiguration conf
+  ) {
+    this.conf = conf;
+  }
+
+  public Component getDatanodeFromFilter(Map<String, String> filters) {
+    if (filters == null || !filters.containsKey(DATANODE_FILTER)) {
+      throw new IllegalArgumentException("datanode"
+          + " filter should be specified (-f " + "datanode"
+          + "=<host_or_ip)");
+    }
+
+    String policyStr = conf.get(OzoneConfigKeys.OZONE_HTTP_POLICY_KEY,
+        OzoneConfigKeys.OZONE_HTTP_POLICY_DEFAULT);
+    HttpConfig.Policy policy = HttpConfig.Policy.fromString(policyStr);
+
+    final int port = policy.isHttpEnabled() ?
+        HDDS_DATANODE_HTTP_BIND_PORT_DEFAULT :
+        HDDS_DATANODE_HTTPS_BIND_PORT_DEFAULT;
+
+    return new Component(Type.DATANODE, null,
+        filters.get("datanode"), port);
+  }
+
+  @Override
+  public List<LoggerSource> getRelatedLoggers(
+      boolean verbose,
+      Map<String, String> filters
+  ) {
+    List<LoggerSource> result = new ArrayList<>();
+    result.add(new LoggerSource(
+        getDatanodeFromFilter(filters),
+        HddsDispatcher.class.getCanonicalName(),
+        defaultLevel(verbose)));
+    return result;
+  }
+
+  @Override
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
+    List<MetricGroupDisplay> result = new ArrayList<>();
+
+    addProtocolMessageMetrics(result, "hdds_dispatcher",
+        getDatanodeFromFilter(filters),
+        ContainerProtos.Type.values());
+
+    return result;
+  }
+
+  @Override
+  public String getDescription() {
+    return "Datanode request dispatcher (after Ratis replication)";
+  }
+
+  @Override
+  public boolean filterLog(Map<String, String> filters, String logLine) {
+    return true;
+  }
+}
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/PipelineComponentUtil.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/PipelineComponentUtil.java
new file mode 100644
index 0000000..c309d62
--- /dev/null
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/PipelineComponentUtil.java
@@ -0,0 +1,78 @@
+/*
+ * 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.hadoop.ozone.insight.datanode;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+
+import org.apache.hadoop.hdds.protocol.DatanodeDetails;
+import org.apache.hadoop.hdds.scm.client.ScmClient;
+import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
+import org.apache.hadoop.ozone.insight.Component;
+import org.apache.hadoop.ozone.insight.Component.Type;
+
+/**
+ * Utilities to handle pipelines.
+ */
+public final class PipelineComponentUtil {
+
+  public static final String PIPELINE_FILTER = "pipeline";
+
+  private PipelineComponentUtil() {
+  }
+
+  public static String getPipelineIdFromFilters(Map<String, String> filters) {
+    if (filters == null || !filters.containsKey(PIPELINE_FILTER)) {
+      throw new IllegalArgumentException(PIPELINE_FILTER
+          + " filter should be specified (-f " + PIPELINE_FILTER
+          + "=<pipelineid)");
+    }
+
+    return filters.get(PIPELINE_FILTER);
+  }
+
+  /**
+   * Execute a function with each of the datanodes.
+   */
+  public static void withDatanodesFromPipeline(
+      ScmClient scmClient,
+      String pipelineId,
+      Function<Component, Void> func
+  ) throws IOException {
+
+    Optional<Pipeline> pipelineSelection = scmClient.listPipelines()
+        .stream()
+        .filter(
+            pipline -> pipline.getId().getId().toString().equals(pipelineId))
+        .findFirst();
+
+    if (!pipelineSelection.isPresent()) {
+      throw new IllegalArgumentException("No such multi-node pipeline.");
+    }
+    Pipeline pipeline = pipelineSelection.get();
+    for (DatanodeDetails datanode : pipeline.getNodes()) {
+      Component dn =
+          new Component(Type.DATANODE, datanode.getUuid().toString(),
+              datanode.getHostName(), 9882);
+      func.apply(dn);
+    }
+
+  }
+}
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/RatisInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/RatisInsight.java
index 94f1ddd..24238c2 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/RatisInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/datanode/RatisInsight.java
@@ -22,24 +22,21 @@ import java.io.UncheckedIOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.DatanodeDetails;
 import org.apache.hadoop.hdds.scm.client.ScmClient;
-import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
 import org.apache.hadoop.ozone.insight.BaseInsightPoint;
-import org.apache.hadoop.ozone.insight.Component;
-import org.apache.hadoop.ozone.insight.Component.Type;
 import org.apache.hadoop.ozone.insight.InsightPoint;
 import org.apache.hadoop.ozone.insight.LoggerSource;
 
+import static 
org.apache.hadoop.ozone.insight.datanode.PipelineComponentUtil.getPipelineIdFromFilters;
+import static 
org.apache.hadoop.ozone.insight.datanode.PipelineComponentUtil.withDatanodesFromPipeline;
+
 /**
- * Insight definition for datanode/pipline metrics.
+ * Insight definition for datanode/pipeline metrics.
  */
 public class RatisInsight extends BaseInsightPoint implements InsightPoint {
 
-  public static final String PIPELINE_FILTER = "pipeline";
   private OzoneConfiguration conf;
 
   public RatisInsight(OzoneConfiguration conf) {
@@ -49,38 +46,22 @@ public class RatisInsight extends BaseInsightPoint 
implements InsightPoint {
   @Override
   public List<LoggerSource> getRelatedLoggers(boolean verbose,
       Map<String, String> filters) {
-    if (filters == null || !filters.containsKey(PIPELINE_FILTER)) {
-      throw new IllegalArgumentException(PIPELINE_FILTER
-          + " filter should be specified (-f " + PIPELINE_FILTER
-          + "=<pipelineid)");
-    }
 
-    String pipelineId = filters.get(PIPELINE_FILTER);
     List<LoggerSource> result = new ArrayList<>();
 
     try (ScmClient scmClient = createScmClient(conf)) {
-      Optional<Pipeline> pipelineSelection = scmClient.listPipelines()
-          .stream()
-          .filter(
-              pipline -> pipline.getId().getId().toString().equals(pipelineId))
-          .findFirst();
-
-      if (!pipelineSelection.isPresent()) {
-        throw new IllegalArgumentException("No such multi-node pipeline.");
-      }
-      Pipeline pipeline = pipelineSelection.get();
-      for (DatanodeDetails datanode : pipeline.getNodes()) {
-        Component dn =
-            new Component(Type.DATANODE, datanode.getUuid().toString(),
-                datanode.getHostName(), 9882);
-        result
-            .add(new LoggerSource(dn, "org.apache.ratis.server.impl",
-                defaultLevel(verbose)));
-      }
+      withDatanodesFromPipeline(scmClient,
+          getPipelineIdFromFilters(filters),
+          dn -> {
+            result
+                .add(new LoggerSource(dn,
+                    "org.apache.ratis.server.impl",
+                    defaultLevel(verbose)));
+            return null;
+          });
     } catch (IOException e) {
       throw new UncheckedIOException("Can't enumerate required logs", e);
     }
-
     return result;
   }
 
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/KeyManagerInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/KeyManagerInsight.java
index f4aacf7..1710de2 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/KeyManagerInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/KeyManagerInsight.java
@@ -34,7 +34,7 @@ import org.apache.hadoop.ozone.om.KeyManagerImpl;
 public class KeyManagerInsight extends BaseInsightPoint {
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> display = new ArrayList<>();
 
     MetricGroupDisplay state =
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/OmProtocolInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/OmProtocolInsight.java
index 8c25430..e98818b 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/OmProtocolInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/om/OmProtocolInsight.java
@@ -46,7 +46,7 @@ public class OmProtocolInsight extends BaseInsightPoint {
   }
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> metrics = new ArrayList<>();
 
     Map<String, String> filter = new HashMap<>();
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/NodeManagerInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/NodeManagerInsight.java
index c58db4b..a6ba5e3 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/NodeManagerInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/NodeManagerInsight.java
@@ -44,7 +44,7 @@ public class NodeManagerInsight extends BaseInsightPoint {
   }
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> display = new ArrayList<>();
 
     MetricGroupDisplay nodes =
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ReplicaManagerInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ReplicaManagerInsight.java
index f15aad1..6d607b7 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ReplicaManagerInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ReplicaManagerInsight.java
@@ -42,7 +42,7 @@ public class ReplicaManagerInsight extends BaseInsightPoint {
   }
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> display = new ArrayList<>();
     return display;
   }
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolBlockLocationInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolBlockLocationInsight.java
index 1a90b78..3aac753 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolBlockLocationInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolBlockLocationInsight.java
@@ -50,7 +50,7 @@ public class ScmProtocolBlockLocationInsight extends 
BaseInsightPoint {
   }
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> metrics = new ArrayList<>();
 
     Map<String, String> filter = new HashMap<>();
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolContainerLocationInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolContainerLocationInsight.java
index a57dfd0..0c8228b 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolContainerLocationInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolContainerLocationInsight.java
@@ -50,7 +50,7 @@ public class ScmProtocolContainerLocationInsight extends 
BaseInsightPoint {
   }
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> metrics = new ArrayList<>();
 
     Map<String, String> filter = new HashMap<>();
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolDatanodeInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolDatanodeInsight.java
index 58e95c7..117df43 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolDatanodeInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolDatanodeInsight.java
@@ -51,7 +51,7 @@ public class ScmProtocolDatanodeInsight extends 
BaseInsightPoint {
   }
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> metrics = new ArrayList<>();
 
     Map<String, String> filter = new HashMap<>();
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolSecurityInsight.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolSecurityInsight.java
index 5f95ff1..aed8baf 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolSecurityInsight.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/scm/ScmProtocolSecurityInsight.java
@@ -50,7 +50,7 @@ public class ScmProtocolSecurityInsight extends 
BaseInsightPoint {
   }
 
   @Override
-  public List<MetricGroupDisplay> getMetrics() {
+  public List<MetricGroupDisplay> getMetrics(Map<String, String> filters) {
     List<MetricGroupDisplay> metrics = new ArrayList<>();
 
     Map<String, String> filter = new HashMap<>();
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java
index d64db61..73277e0 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java
@@ -59,8 +59,8 @@ public class OzoneManagerProtocolServerSideTranslatorPB 
implements
   private final OzoneManager ozoneManager;
   private final OzoneManagerDoubleBuffer ozoneManagerDoubleBuffer;
   private final AtomicLong transactionIndex = new AtomicLong(0L);
-  private final OzoneProtocolMessageDispatcher<OMRequest, OMResponse>
-      dispatcher;
+  private final OzoneProtocolMessageDispatcher<OMRequest, OMResponse,
+      ProtocolMessageEnum> dispatcher;
 
   /**
    * Constructs an instance of the server handler.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to