HDDS-7063. Increment createContainer metric when container is created while writing chunk (#3643)
Reviewed-by: Wei-Chiu Chuang <weichiu@apache.org>
Reviewed-by: Doroszlai, Attila <adoroszlai@apache.org>
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 60bb8e5..6dde018 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
@@ -66,6 +66,7 @@
import static org.apache.hadoop.hdds.scm.protocolPB.ContainerCommandResponseBuilders.malformedRequest;
import static org.apache.hadoop.hdds.scm.protocolPB.ContainerCommandResponseBuilders.unsupportedRequest;
+import org.apache.hadoop.util.Time;
import org.apache.ratis.thirdparty.com.google.protobuf.ProtocolMessageEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -191,7 +192,7 @@
ContainerType containerType;
ContainerCommandResponseProto responseProto = null;
- long startTime = System.currentTimeMillis();
+ long startTime = Time.monotonicNow();
Type cmdType = msg.getCmdType();
long containerID = msg.getContainerID();
metrics.incContainerOpsMetrics(cmdType);
@@ -261,6 +262,10 @@
// If container does not exist, create one for WriteChunk and
// PutSmallFile request
responseProto = createContainer(msg);
+ metrics.incContainerOpsMetrics(Type.CreateContainer);
+ metrics.incContainerOpsLatencies(Type.CreateContainer,
+ Time.monotonicNow() - startTime);
+
if (responseProto.getResult() != Result.SUCCESS) {
StorageContainerException sce = new StorageContainerException(
"ContainerID " + containerID + " creation failed",
@@ -313,7 +318,7 @@
responseProto = handler.handle(msg, container, dispatcherContext);
if (responseProto != null) {
metrics.incContainerOpsLatencies(cmdType,
- System.currentTimeMillis() - startTime);
+ Time.monotonicNow() - startTime);
// If the request is of Write Type and the container operation
// is unsuccessful, it implies the applyTransaction on the container
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/metrics/TestContainerMetrics.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/metrics/TestContainerMetrics.java
index 7fd3817..c09df7a 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/metrics/TestContainerMetrics.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/metrics/TestContainerMetrics.java
@@ -28,7 +28,6 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
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;
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
import org.apache.hadoop.hdds.scm.XceiverClientGrpc;
@@ -124,13 +123,6 @@
server.start();
client.connect();
- // Create container
- ContainerCommandRequestProto request = ContainerTestHelper
- .getCreateContainerRequest(containerID, pipeline);
- ContainerCommandResponseProto response = client.sendCommand(request);
- Assert.assertEquals(ContainerProtos.Result.SUCCESS,
- response.getResult());
-
// Write Chunk
BlockID blockID = ContainerTestHelper.getTestBlockID(containerID);
ContainerTestHelper.getWriteChunkRequest(
@@ -138,7 +130,8 @@
ContainerProtos.ContainerCommandRequestProto writeChunkRequest =
ContainerTestHelper.getWriteChunkRequest(
pipeline, blockID, 1024);
- response = client.sendCommand(writeChunkRequest);
+ ContainerCommandResponseProto response =
+ client.sendCommand(writeChunkRequest);
Assert.assertEquals(ContainerProtos.Result.SUCCESS,
response.getResult());