From c1d94aad78dee2bd0bd7ec18414ae91d1dd622ba Mon Sep 17 00:00:00 2001 From: sumitagrawl Date: Tue, 20 May 2025 11:00:33 +0530 Subject: [PATCH 1/2] HDDS-12926. remove *.tmp.* exclusion in DU --- .../src/main/java/org/apache/hadoop/hdds/fs/DUFactory.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/fs/DUFactory.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/fs/DUFactory.java index a89e914398c9..266244763cea 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/fs/DUFactory.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/fs/DUFactory.java @@ -31,7 +31,6 @@ public class DUFactory implements SpaceUsageCheckFactory { private static final String DU_CACHE_FILE = "scmUsed"; - private static final String EXCLUDE_PATTERN = "*.tmp.*"; private Conf conf; @@ -46,7 +45,7 @@ public SpaceUsageCheckFactory setConfiguration( public SpaceUsageCheckParams paramsFor(File dir) { Duration refreshPeriod = conf.getRefreshPeriod(); - SpaceUsageSource source = new DU(dir, EXCLUDE_PATTERN); + SpaceUsageSource source = new DU(dir, null); SpaceUsagePersistence persistence = new SaveSpaceUsageToFile( new File(dir, DU_CACHE_FILE), refreshPeriod); From 568d643b46f6f21f83b4af371cfa3832afa13670 Mon Sep 17 00:00:00 2001 From: sumitagrawl Date: Wed, 16 Jul 2025 11:24:09 +0530 Subject: [PATCH 2/2] HDDS-13448. DeleteBlocksCommandHandler thread stop for normal exception --- .../DeleteBlocksCommandHandler.java | 4 ++- .../TestDeleteBlocksCommandHandler.java | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java index dbc6b72968f9..419b27b56546 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java @@ -480,8 +480,10 @@ public void handleTasksResults( try { DeleteBlockTransactionExecutionResult result = f.get(); handler.accept(result); - } catch (InterruptedException | ExecutionException e) { + } catch (ExecutionException e) { LOG.error("task failed.", e); + } catch (InterruptedException e) { + LOG.error("task interrupted.", e); Thread.currentThread().interrupt(); } }); diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestDeleteBlocksCommandHandler.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestDeleteBlocksCommandHandler.java index bc9c33197a0c..85d20f509afd 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestDeleteBlocksCommandHandler.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestDeleteBlocksCommandHandler.java @@ -40,13 +40,16 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import org.apache.hadoop.hdds.HddsConfigKeys; @@ -271,6 +274,28 @@ public List> answer( blockDeleteMetrics.getTotalLockTimeoutTransactionCount()); } + @Test + public void testDeleteBlocksCommandHandlerExceptionShouldNotInterrupt() throws Exception { + setup(); + // future task will throw first execution exception, and next one will succeed + doAnswer((Answer>>) invocationOnMock -> { + List> result = new ArrayList<>(); + CompletableFuture future = + new CompletableFuture<>(); + future.completeExceptionally(new ExecutionException("Simulated Exception", new IOException())); + result.add(future); + future = new CompletableFuture<>(); + future.complete(new DeleteBlockTransactionExecutionResult(null, false)); + result.add(future); + return result; + }).when(handler).submitTasks(any()); + + // last task as success should be returned as result, ignoring the first failed task + List deleteBlockTransactionResults = + handler.executeCmdWithRetry(Collections.emptyList()); + assertEquals(1, deleteBlockTransactionResults.size()); + } + @ContainerTestVersionInfo.ContainerTest public void testDeleteCmdWorkerInterval( ContainerTestVersionInfo versionInfo) throws Exception {