diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java index f4ee6d133200..b3ce0ef18e5e 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java @@ -298,6 +298,13 @@ public ScmContainerLocationResponse processRequest( .setStartMaintenanceNodesResponse(startMaintenanceNodes( request.getStartMaintenanceNodesRequest())) .build(); + case DeleteContainer: + return ScmContainerLocationResponse.newBuilder() + .setCmdType(request.getCmdType()) + .setStatus(Status.OK) + .setScmDeleteContainerResponse( + deleteContainer(request.getScmDeleteContainerRequest())) + .build(); default: throw new IllegalArgumentException( "Unknown command type: " + request.getCmdType()); diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestContainerOperations.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestContainerOperations.java index 8d8e5853f274..b5e672352cea 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestContainerOperations.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestContainerOperations.java @@ -25,6 +25,8 @@ import org.apache.hadoop.hdds.scm.ScmConfigKeys; import org.apache.hadoop.hdds.scm.cli.ContainerOperationClient; import org.apache.hadoop.hdds.scm.client.ScmClient; +import org.apache.hadoop.ipc.RemoteException; +import org.apache.hadoop.test.LambdaTestUtils; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -71,13 +73,22 @@ public static void cleanup() throws Exception { * @throws Exception */ @Test - public void testCreate() throws Exception { + public void testCreateAndDelete() throws Exception { ContainerWithPipeline container = storageClient.createContainer(HddsProtos .ReplicationType.STAND_ALONE, HddsProtos.ReplicationFactor .ONE, OzoneConsts.OZONE); - assertEquals(container.getContainerInfo().getContainerID(), storageClient - .getContainer(container.getContainerInfo().getContainerID()) + long containerID = container.getContainerInfo().getContainerID(); + assertEquals(containerID, storageClient.getContainer(containerID) .getContainerID()); + + storageClient.deleteContainer( + container.getContainerInfo().getContainerID(), true); + //Make sure that the Container has been deleted. + LambdaTestUtils.intercept(RemoteException.class, + "Container with id " + + container.getContainerInfo().getContainerID() + " not found", + () -> storageClient.getContainer(containerID)); + } }