From 3f92663aed8acf023c09eb6d7f92e214c677b027 Mon Sep 17 00:00:00 2001 From: Wei-Chiu Chuang Date: Tue, 26 Nov 2024 10:16:51 -0800 Subject: [PATCH] HDDS-11785. DataNode aborts ContainerStateMachine if it does not know any follower next index (#7480) --- .../server/ratis/ContainerStateMachine.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java index 0be2b6de6ef..23be4138b60 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java @@ -1005,12 +1005,15 @@ private void removeStateMachineDataIfNeeded(long index) { try { RaftServer.Division division = ratisServer.getServer().getDivision(getGroupId()); if (division.getInfo().isLeader()) { - long minIndex = Arrays.stream(division.getInfo() - .getFollowerNextIndices()).min().getAsLong(); - LOG.debug("Removing data corresponding to log index {} min index {} " - + "from cache", index, minIndex); - removeCacheDataUpTo(Math.min(minIndex, index)); + Arrays.stream(division.getInfo() + .getFollowerNextIndices()).min().ifPresent(minIndex -> { + removeCacheDataUpTo(Math.min(minIndex, index)); + LOG.debug("Removing data corresponding to log index {} min index {} " + + "from cache", index, minIndex); + }); } + } catch (RuntimeException e) { + throw e; } catch (Exception e) { throw new RuntimeException(e); }