Ver Fonte

HDDS-1310. In datanode once a container becomes unhealthy, datanode restart fails.

Signed-off-by: Nanda kumar <nanda@apache.org>
(cherry picked from commit 5c0a81ad3c3d28cc1dd8d91594298d3fc7ebcfa4)
Sandeep Nemuri há 6 anos atrás
pai
commit
f6acbc9caf

+ 3 - 0
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainer.java

@@ -618,6 +618,9 @@ public class KeyValueContainer implements Container<KeyValueContainerData> {
     case CLOSED:
       state = ContainerReplicaProto.State.CLOSED;
       break;
+    case UNHEALTHY:
+      state = ContainerReplicaProto.State.UNHEALTHY;
+      break;
     default:
       throw new StorageContainerException("Invalid Container state found: " +
           containerData.getContainerID(), INVALID_CONTAINER_STATE);

+ 13 - 0
hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java

@@ -332,6 +332,19 @@ public class TestKeyValueContainer {
         keyValueContainerData.getState());
   }
 
+  @Test
+  public void testReportOfUnhealthyContainer() throws Exception {
+    keyValueContainer.create(volumeSet, volumeChoosingPolicy, scmId);
+    Assert.assertNotNull(keyValueContainer.getContainerReport());
+    keyValueContainer.markContainerUnhealthy();
+    File containerFile = keyValueContainer.getContainerFile();
+    keyValueContainerData = (KeyValueContainerData) ContainerDataYaml
+        .readContainerFile(containerFile);
+    assertEquals(ContainerProtos.ContainerDataProto.State.UNHEALTHY,
+        keyValueContainerData.getState());
+    Assert.assertNotNull(keyValueContainer.getContainerReport());
+  }
+
   @Test
   public void testUpdateContainer() throws IOException {
     keyValueContainer.create(volumeSet, volumeChoosingPolicy, scmId);