diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMNotLeaderException.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMNotLeaderException.java index 1abd92b55f8..91d541dcf7a 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMNotLeaderException.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/exceptions/OMNotLeaderException.java @@ -56,6 +56,13 @@ public OMNotLeaderException(RaftPeerId currentPeerId, this.leaderAddress = suggestedLeaderAddress; } + public OMNotLeaderException(String msg) { + super(msg); + this.currentPeerId = null; + this.leaderPeerId = null; + this.leaderAddress = null; + } + public String getSuggestedLeaderNodeId() { return leaderPeerId; } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java index f09efe0d5b2..7c04e392716 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java @@ -72,6 +72,7 @@ import org.apache.ratis.protocol.ClientId; import org.apache.ratis.protocol.SetConfigurationRequest; import org.apache.ratis.protocol.exceptions.LeaderNotReadyException; +import org.apache.ratis.protocol.exceptions.LeaderSteppingDownException; import org.apache.ratis.protocol.exceptions.NotLeaderException; import org.apache.ratis.protocol.exceptions.StateMachineException; import org.apache.ratis.protocol.Message; @@ -495,6 +496,11 @@ private OMResponse createOmResponseImpl(OMRequest omRequest, leaderNotReadyException.getMessage())); } + LeaderSteppingDownException leaderSteppingDownException = reply.getLeaderSteppingDownException(); + if (leaderSteppingDownException != null) { + throw new ServiceException(new OMNotLeaderException(leaderSteppingDownException.getMessage())); + } + StateMachineException stateMachineException = reply.getStateMachineException(); if (stateMachineException != null) {