diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java index ff2c966983f4..4dab8714a367 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java @@ -22,6 +22,7 @@ import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.om.OzoneManager; import org.apache.hadoop.ozone.om.exceptions.NotLeaderException; +import org.apache.hadoop.ozone.om.exceptions.OMException; import org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolPB; import org.apache.hadoop.ozone.om.ratis.OzoneManagerDoubleBuffer; import org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer; @@ -34,6 +35,7 @@ import com.google.protobuf.RpcController; import com.google.protobuf.ServiceException; +import org.apache.hadoop.util.StringUtils; import org.apache.ratis.protocol.RaftPeerId; import org.apache.ratis.util.ExitUtils; import org.slf4j.Logger; @@ -153,12 +155,21 @@ private OMResponse createErrorResponse( OzoneManagerRatisUtils.exceptionToResponseStatus(exception)) .setCmdType(cmdType) .setSuccess(false); - if (exception.getMessage() != null) { - omResponse.setMessage(exception.getMessage()); + String errorMsg = exceptionErrorMessage(exception); + if (errorMsg != null) { + omResponse.setMessage(errorMsg); } return omResponse.build(); } + private String exceptionErrorMessage(IOException ex) { + if (ex instanceof OMException) { + return ex.getMessage(); + } else { + return StringUtils.stringifyException(ex); + } + } + /** * Submits request to OM's Ratis server. */