This is an automated email from the ASF dual-hosted git repository.
umamahesh 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 110dca5ec7 HDDS-6812. Fix INTERNAL_ERROR message on failed write.
(#3529)
110dca5ec7 is described below
commit 110dca5ec74722109cf1bb890db0ba15b5557cb3
Author: Aswin Shakil Balasubramanian <[email protected]>
AuthorDate: Thu Jun 23 15:31:57 2022 -0700
HDDS-6812. Fix INTERNAL_ERROR message on failed write. (#3529)
---
.../SCMContainerPlacementRackScatter.java | 3 +-
.../scm/pipeline/WritableECContainerProvider.java | 2 +-
...lockLocationProtocolServerSideTranslatorPB.java | 2 +-
.../pipeline/TestWritableECContainerProvider.java | 32 +++++++++++++++-------
4 files changed, 26 insertions(+), 13 deletions(-)
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackScatter.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackScatter.java
index 8db7ed5434..235bcd5965 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackScatter.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/SCMContainerPlacementRackScatter.java
@@ -116,7 +116,8 @@ public final class SCMContainerPlacementRackScatter
"TotalNode = " + totalNodesCount +
" AvailableNode = " + availableNodes.size() +
" RequiredNode = " + nodesRequired +
- " ExcludedNode = " + excludedNodesCount, null);
+ " ExcludedNode = " + excludedNodesCount,
+ SCMException.ResultCodes.FAILED_TO_FIND_SUITABLE_NODE);
}
List<DatanodeDetails> mutableFavoredNodes = new ArrayList<>();
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/WritableECContainerProvider.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/WritableECContainerProvider.java
index 117d957753..7e8e3d1e11 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/WritableECContainerProvider.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/WritableECContainerProvider.java
@@ -157,7 +157,7 @@ public class WritableECContainerProvider
} catch (IOException e) {
LOG.error("Unable to allocate a container for {} after trying all "
+ "existing containers", repConfig, e);
- return null;
+ throw e;
}
}
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 bdf248bea5..4ed5233840 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
@@ -178,7 +178,7 @@ public final class
ScmBlockLocationProtocolServerSideTranslatorPB
}
private Status exceptionToResponseStatus(IOException ex) {
- if (ex instanceof SCMException) {
+ if (ex instanceof SCMException && ((SCMException) ex).getResult() != null)
{
return Status.values()[((SCMException) ex).getResult().ordinal()];
} else {
return Status.INTERNAL_ERROR;
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestWritableECContainerProvider.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestWritableECContainerProvider.java
index e1065e8b52..9c0ddc180f 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestWritableECContainerProvider.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestWritableECContainerProvider.java
@@ -40,6 +40,7 @@ import
org.apache.hadoop.hdds.scm.pipeline.choose.algorithms.HealthyPipelineChoo
import org.apache.hadoop.hdds.utils.db.DBStore;
import org.apache.hadoop.hdds.utils.db.DBStoreBuilder;
import org.apache.ozone.test.GenericTestUtils;
+import org.junit.Assert;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Matchers;
@@ -66,7 +67,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.verify;
@@ -221,7 +221,8 @@ public class TestWritableECContainerProvider {
}
@Test
- public void testUnableToCreateAnyPipelinesReturnsNull() throws IOException {
+ public void testUnableToCreateAnyPipelinesThrowsException()
+ throws IOException {
pipelineManager = new MockPipelineManager(
dbStore, scmhaManager, nodeManager) {
@Override
@@ -234,9 +235,12 @@ public class TestWritableECContainerProvider {
provider = new WritableECContainerProvider(
conf, pipelineManager, containerManager, pipelineChoosingPolicy);
- ContainerInfo container =
- provider.getContainer(1, repConfig, OWNER, new ExcludeList());
- assertNull(container);
+ try {
+ provider.getContainer(1, repConfig, OWNER, new ExcludeList());
+ Assert.fail();
+ } catch (IOException ex) {
+ GenericTestUtils.assertExceptionContains("Cannot create pipelines", ex);
+ }
}
@Test
@@ -261,12 +265,20 @@ public class TestWritableECContainerProvider {
provider = new WritableECContainerProvider(
conf, pipelineManager, containerManager, pipelineChoosingPolicy);
- ContainerInfo container =
- provider.getContainer(1, repConfig, OWNER, new ExcludeList());
+ try {
+ provider.getContainer(1, repConfig, OWNER, new ExcludeList());
+ Assert.fail();
+ } catch (IOException ex) {
+ GenericTestUtils.assertExceptionContains("Cannot create pipelines", ex);
+ }
+
for (int i = 0; i < 5; i++) {
- ContainerInfo nextContainer =
- provider.getContainer(1, repConfig, OWNER, new ExcludeList());
- assertEquals(container, nextContainer);
+ try {
+ provider.getContainer(1, repConfig, OWNER, new ExcludeList());
+ Assert.fail();
+ } catch (IOException ex) {
+ GenericTestUtils.assertExceptionContains("Cannot create pipelines",
ex);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]