This is an automated email from the ASF dual-hosted git repository.
erose pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new bdeceeedad HDDS-7635. Update failure metrics when allocate block fails
in preExecute. (#4086)
bdeceeedad is described below
commit bdeceeedad1f1d79028c3379950bcbc9707491f5
Author: Aswin Shakil Balasubramanian <[email protected]>
AuthorDate: Mon Dec 19 11:04:49 2022 -0800
HDDS-7635. Update failure metrics when allocate block fails in preExecute.
(#4086)
---
.../test/java/org/apache/hadoop/ozone/om/TestOmMetrics.java | 13 +++++++++++++
.../hadoop/ozone/om/request/file/OMFileCreateRequest.java | 3 ++-
.../hadoop/ozone/om/request/key/OMAllocateBlockRequest.java | 3 ++-
.../hadoop/ozone/om/request/key/OMKeyCreateRequest.java | 3 ++-
.../apache/hadoop/ozone/om/request/key/OMKeyRequest.java | 5 ++++-
5 files changed, 23 insertions(+), 4 deletions(-)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmMetrics.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmMetrics.java
index 9f6141d8f9..8d6fb8f9fe 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmMetrics.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmMetrics.java
@@ -65,6 +65,7 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
import org.junit.rules.Timeout;
import org.mockito.Mockito;
@@ -316,8 +317,20 @@ public class TestOmMetrics {
writeClient.commitKey(keyArgs, keySession.getId());
writeClient.deleteKey(keyArgs);
+ keyArgs = createKeyArgs(volumeName, bucketName,
+ new ECReplicationConfig("rs-6-4-1024K"));
+ try {
+ keySession = writeClient.openKey(keyArgs);
+ writeClient.commitKey(keyArgs, keySession.getId());
+ } catch (Exception e) {
+ //Expected Failure in preExecute due to not enough datanode
+ Assertions.assertTrue(e.getMessage()
+ .contains("No enough datanodes to choose"));
+ }
+
omMetrics = getMetrics("OMMetrics");
assertCounter("NumKeys", 2L, omMetrics);
+ assertCounter("NumBlockAllocationFails", 1L, omMetrics);
// inject exception to test for Failure Metrics on the read path
Mockito.doThrow(exception).when(mockKm).lookupKey(any(), any());
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java
index 634ba81f2a..37dd8ce846 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java
@@ -141,7 +141,8 @@ public class OMFileCreateRequest extends OMKeyRequest {
new ExcludeList(), requestedSize, scmBlockSize,
ozoneManager.getPreallocateBlocksMax(),
ozoneManager.isGrpcBlockTokenEnabled(),
- ozoneManager.getOMNodeId());
+ ozoneManager.getOMNodeId(),
+ ozoneManager.getMetrics());
KeyArgs.Builder newKeyArgs = keyArgs.toBuilder()
.setModificationTime(Time.now()).setType(type).setFactor(factor)
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
index ecc2bf06c5..92097475c6 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java
@@ -117,7 +117,8 @@ public class OMAllocateBlockRequest extends OMKeyRequest {
ozoneManager.getBlockTokenSecretManager(), repConfig, excludeList,
ozoneManager.getScmBlockSize(), ozoneManager.getScmBlockSize(),
ozoneManager.getPreallocateBlocksMax(),
- ozoneManager.isGrpcBlockTokenEnabled(),
ozoneManager.getOMNodeId());
+ ozoneManager.isGrpcBlockTokenEnabled(), ozoneManager.getOMNodeId(),
+ ozoneManager.getMetrics());
// Set modification time and normalize key if required.
KeyArgs.Builder newKeyArgs =
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
index 10206d80f3..ae0f484f42 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
@@ -150,7 +150,8 @@ public class OMKeyCreateRequest extends OMKeyRequest {
new ExcludeList(), requestedSize, scmBlockSize,
ozoneManager.getPreallocateBlocksMax(),
ozoneManager.isGrpcBlockTokenEnabled(),
- ozoneManager.getOMNodeId());
+ ozoneManager.getOMNodeId(),
+ ozoneManager.getMetrics());
newKeyArgs = keyArgs.toBuilder().setModificationTime(Time.now())
.setType(type).setFactor(factor)
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
index 8c79e16dcd..62374c310f 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
@@ -39,6 +39,7 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.OmUtils;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.OzoneConsts;
+import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.PrefixManager;
import org.apache.hadoop.ozone.om.ResolvedBucket;
import org.apache.hadoop.ozone.om.helpers.BucketEncryptionKeyInfo;
@@ -134,7 +135,8 @@ public abstract class OMKeyRequest extends OMClientRequest {
OzoneBlockTokenSecretManager secretManager,
ReplicationConfig replicationConfig, ExcludeList excludeList,
long requestedSize, long scmBlockSize, int preallocateBlocksMax,
- boolean grpcBlockTokenEnabled, String omID) throws IOException {
+ boolean grpcBlockTokenEnabled, String omID, OMMetrics omMetrics)
+ throws IOException {
int dataGroupSize = replicationConfig instanceof ECReplicationConfig
? ((ECReplicationConfig) replicationConfig).getData() : 1;
int numBlocks = (int) Math.min(preallocateBlocksMax,
@@ -148,6 +150,7 @@ public abstract class OMKeyRequest extends OMClientRequest {
.allocateBlock(scmBlockSize, numBlocks, replicationConfig, omID,
excludeList);
} catch (SCMException ex) {
+ omMetrics.incNumBlockAllocateCallFails();
if (ex.getResult()
.equals(SCMException.ResultCodes.SAFE_MODE_EXCEPTION)) {
throw new OMException(ex.getMessage(),
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]