This is an automated email from the ASF dual-hosted git repository.

sodonnell 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 1a63207add HDDS-7775. EC: Exception encountered while deleting 
UNHEALTHY replica in Datanode (#4173)
1a63207add is described below

commit 1a63207add78089cf6b08c9a23eaeb38f7f8ca70
Author: Siddhant Sangwan <[email protected]>
AuthorDate: Thu Jan 12 23:45:06 2023 +0530

    HDDS-7775. EC: Exception encountered while deleting UNHEALTHY replica in 
Datanode (#4173)
---
 .../hadoop/hdds/scm/container/replication/ReplicationManager.java    | 5 +++--
 .../replication/health/ClosedWithUnhealthyReplicasHandler.java       | 2 +-
 .../scm/container/replication/health/DeletingContainerHandler.java   | 3 ++-
 .../hdds/scm/container/replication/health/EmptyContainerHandler.java | 2 +-
 .../replication/health/TestClosedWithUnhealthyReplicasHandler.java   | 2 +-
 .../container/replication/health/TestDeletingContainerHandler.java   | 2 +-
 .../scm/container/replication/health/TestEmptyContainerHandler.java  | 2 +-
 7 files changed, 10 insertions(+), 8 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ReplicationManager.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ReplicationManager.java
index 1b5ee43fe3..6f93e81ead 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ReplicationManager.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/ReplicationManager.java
@@ -408,14 +408,15 @@ public class ReplicationManager implements SCMService {
    * @param container Container to be deleted
    * @param replicaIndex Index of the container replica to be deleted
    * @param datanode  The datanode on which the replica should be deleted
+   * @param force true to force delete a container that is open or not empty
    * @throws NotLeaderException when this SCM is not the leader
    */
   public void sendDeleteCommand(final ContainerInfo container, int 
replicaIndex,
-      final DatanodeDetails datanode) throws NotLeaderException {
+      final DatanodeDetails datanode, boolean force) throws NotLeaderException 
{
     LOG.debug("Sending delete command for container {} and index {} on {}",
         container, replicaIndex, datanode);
     final DeleteContainerCommand deleteCommand =
-        new DeleteContainerCommand(container.containerID(), false);
+        new DeleteContainerCommand(container.containerID(), force);
     deleteCommand.setReplicaIndex(replicaIndex);
     sendDatanodeCommand(deleteCommand, container, datanode);
   }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ClosedWithUnhealthyReplicasHandler.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ClosedWithUnhealthyReplicasHandler.java
index 3b9b30d3a4..205d41923c 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ClosedWithUnhealthyReplicasHandler.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/ClosedWithUnhealthyReplicasHandler.java
@@ -121,7 +121,7 @@ public class ClosedWithUnhealthyReplicasHandler extends 
AbstractCheck {
     LOG.debug("Trying to delete UNHEALTHY replica [{}]", replica);
     try {
       replicationManager.sendDeleteCommand(containerInfo,
-          replica.getReplicaIndex(), replica.getDatanodeDetails());
+          replica.getReplicaIndex(), replica.getDatanodeDetails(), true);
     } catch (NotLeaderException e) {
       LOG.warn("Failed to delete UNHEALTHY replica [{}]", replica, e);
     }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/DeletingContainerHandler.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/DeletingContainerHandler.java
index 9bc0160a3b..6da647b70d 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/DeletingContainerHandler.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/DeletingContainerHandler.java
@@ -87,7 +87,8 @@ public class DeletingContainerHandler extends AbstractCheck {
         .forEach(rp -> {
           try {
             replicationManager.sendDeleteCommand(
-                containerInfo, rp.getReplicaIndex(), rp.getDatanodeDetails());
+                containerInfo, rp.getReplicaIndex(), rp.getDatanodeDetails(),
+                false);
           } catch (NotLeaderException e) {
             LOG.warn("Failed to delete empty replica with index {} for " +
                     "container {} on datanode {}", rp.getReplicaIndex(),
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/EmptyContainerHandler.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/EmptyContainerHandler.java
index 808f3f4165..30f2cb4bb6 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/EmptyContainerHandler.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/replication/health/EmptyContainerHandler.java
@@ -112,7 +112,7 @@ public class EmptyContainerHandler extends AbstractCheck {
 
       try {
         replicationManager.sendDeleteCommand(containerInfo,
-            rp.getReplicaIndex(), rp.getDatanodeDetails());
+            rp.getReplicaIndex(), rp.getDatanodeDetails(), false);
       } catch (NotLeaderException e) {
         LOG.warn("Failed to delete empty replica with index {} for container" +
                 " {} on datanode {}",
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
index 1b638b6db9..bf6232329f 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestClosedWithUnhealthyReplicasHandler.java
@@ -143,7 +143,7 @@ public class TestClosedWithUnhealthyReplicasHandler {
         ArgumentCaptor.forClass(Integer.class);
     Mockito.verify(replicationManager, Mockito.times(2))
         .sendDeleteCommand(Mockito.eq(container), Mockito.anyInt(), 
Mockito.any(
-            DatanodeDetails.class));
+            DatanodeDetails.class), Mockito.eq(true));
     // replica index that delete was sent for should either be 2 or 5
     replicaIndexCaptor.getAllValues()
         .forEach(index -> Assert.assertTrue(index == 2 || index == 5));
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
index e2a147ffd2..eeaf290c7b 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestDeletingContainerHandler.java
@@ -233,6 +233,6 @@ public class TestDeletingContainerHandler {
 
     Mockito.verify(replicationManager, Mockito.times(times))
         .sendDeleteCommand(Mockito.any(ContainerInfo.class), Mockito.anyInt(),
-            Mockito.any(DatanodeDetails.class));
+            Mockito.any(DatanodeDetails.class), Mockito.eq(false));
   }
 }
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestEmptyContainerHandler.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestEmptyContainerHandler.java
index bac90b4c39..9585a1a230 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestEmptyContainerHandler.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestEmptyContainerHandler.java
@@ -215,7 +215,7 @@ public class TestEmptyContainerHandler {
     Assertions.assertEquals(assertion, emptyContainerHandler.handle(request));
     Mockito.verify(replicationManager, Mockito.times(times))
         .sendDeleteCommand(Mockito.any(ContainerInfo.class), Mockito.anyInt(),
-            Mockito.any(DatanodeDetails.class));
+            Mockito.any(DatanodeDetails.class), Mockito.eq(false));
     Assertions.assertEquals(numEmptyExpected, request.getReport().getStat(
         ReplicationManagerReport.HealthState.EMPTY));
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to