diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BadDataLocationException.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BadDataLocationException.java index 5046a448959b..221c5751e077 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BadDataLocationException.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BadDataLocationException.java @@ -32,6 +32,14 @@ public class BadDataLocationException extends IOException { private final List failedLocations = new ArrayList<>(); private int failedLocationIndex; + /** + * Required for Unwrapping {@code RemoteException}. Used by + * {@link org.apache.hadoop.ipc.RemoteException#unwrapRemoteException()} + */ + public BadDataLocationException(String message) { + super(message); + } + public BadDataLocationException(DatanodeDetails dn) { super(); failedLocations.add(dn); diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerException.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerException.java index 00953df832da..f82835c603c4 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerException.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerException.java @@ -25,6 +25,16 @@ */ public class ContainerException extends SCMException { + /** + * Constructs a {@code ContainerException} with {@code null} + * as its result code.

+ * Required for Unwrapping {@code RemoteException}. Used by + * {@link org.apache.hadoop.ipc.RemoteException#unwrapRemoteException()} + */ + public ContainerException(String message) { + super(message); + } + /** * Constructs an {@code ContainerException} with {@code null} * as its error detail message. diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/exceptions/SCMException.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/exceptions/SCMException.java index b1dffa5e5135..b599af5074ed 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/exceptions/SCMException.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/exceptions/SCMException.java @@ -25,6 +25,17 @@ public class SCMException extends IOException { private final ResultCodes result; + /** + * Constructs an {@code SCMException} with {@code null} + * as its result code.

+ * Required for Unwrapping {@code RemoteException}. Used by + * {@link org.apache.hadoop.ipc.RemoteException#unwrapRemoteException()} + */ + public SCMException(String message) { + super(message); + this.result = null; + } + /** * Constructs an {@code IOException} with {@code null} * as its error detail message. diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ha/NonRetriableException.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ha/NonRetriableException.java index 52da99e67488..8badf731bdc3 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ha/NonRetriableException.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ha/NonRetriableException.java @@ -24,6 +24,15 @@ */ public class NonRetriableException extends IOException { + /** + * Constructs a {@code NonRetriableException} with the given detailed message.

+ * Required for Unwrapping {@code RemoteException}. Used by + * {@link org.apache.hadoop.ipc.RemoteException#unwrapRemoteException()} + */ + public NonRetriableException(String message) { + super(message); + } + public NonRetriableException(IOException exception) { super(exception); } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/InsufficientDatanodesException.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/InsufficientDatanodesException.java index c7ab1adcd090..a600ba3cb08f 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/InsufficientDatanodesException.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/InsufficientDatanodesException.java @@ -28,6 +28,16 @@ public final class InsufficientDatanodesException extends IOException { private final int required; private final int available; + /** + * Required for Unwrapping {@code RemoteException}. Used by + * {@link org.apache.hadoop.ipc.RemoteException#unwrapRemoteException()} + */ + public InsufficientDatanodesException(String message) { + super(message); + this.required = 0; + this.available = 0; + } + public InsufficientDatanodesException(int required, int available, String message) { super(message);