@Override
    public void visit(ReplicaMetadataRequest replicaMetadataRequest) {
      metrics.replicaMetadataRequestQueueTimeInMs.update(requestQueueTime);
      metrics.replicaMetadataRequestRate.mark();
      metrics.replicaMetadataRequestProcessingTimeInMs.update(requestProcessingTime);
      // client id now has dc name at the end, for example: ClientId=replication-metadata-abc.example.com[dc1]
      String[] clientStrs = replicaMetadataRequest.getClientId().split("\\[");
      if (clientStrs.length > 1) {
        String clientDc = clientStrs[1].substring(0, clientStrs[1].length() - 1);
        if (!currentNode.getDatacenterName().equals(clientDc)) {
          metrics.updateCrossColoMetadataExchangeBytesRate(clientDc, responseBlobSize);
        }
      }
      responseQueueTimeHistogram = metrics.replicaMetadataResponseQueueTimeInMs;
      responseSendTimeHistogram = metrics.replicaMetadataSendTimeInMs;
      requestTotalTimeHistogram = metrics.replicaMetadataTotalTimeInMs;
      if (isRequestDropped) {
        metrics.replicaMetadataDroppedRate.mark();
        metrics.totalRequestDroppedRate.mark();
      }
    }
Used to update common metrics for the incoming request.
ambry-server/src/main/java/com/github/ambry/server/AmbryRequests.java