diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java index f07cc3a294bd..26bc853b0fe9 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java @@ -55,6 +55,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.ThreadFactoryBuilder; +import org.apache.ratis.util.ExitUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -410,6 +411,11 @@ public void startDaemon() { stateMachineThread = new ThreadFactoryBuilder() .setDaemon(true) .setNameFormat("Datanode State Machine Thread - %d") + .setUncaughtExceptionHandler((Thread t, Throwable ex) -> { + String message = "Terminate Datanode, encounter uncaught exception" + + " in Datanode State Machine Thread"; + ExitUtils.terminate(1, message, ex, LOG); + }) .build().newThread(startStateMachineTask); stateMachineThread.start(); }