[ 
https://issues.apache.org/jira/browse/HADOOP-19259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17929896#comment-17929896
 ] 

ASF GitHub Bot commented on HADOOP-19259:
-----------------------------------------

pjfanning commented on code in PR #7428:
URL: https://github.com/apache/hadoop/pull/7428#discussion_r1968300209


##########
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java:
##########
@@ -846,14 +846,36 @@ private T runWithRetry() throws IOException {
             node = url.getAuthority();
           }
           try {
-            IOException newIoe = ioe.getClass().getConstructor(String.class)
-                .newInstance(node + ": " + ioe.getMessage());
-            newIoe.initCause(ioe.getCause());
+            final Throwable cause = ioe.getCause();
+            IOException newIoe = null;
+            if (cause != null) {
+              try {
+                DynConstructors.Ctor<? extends IOException> ctor =
+                    new DynConstructors.Builder()
+                        .impl(ioe.getClass(), String.class, Throwable.class)
+                        .buildChecked();
+                newIoe = ctor.newInstance(node + ": " + ioe.getMessage(), 
cause);
+              } catch (NoSuchMethodException e) {
+                // no matching constructor - try next approach below
+              }
+            }
+            if (newIoe == null) {
+              DynConstructors.Ctor<? extends IOException> ctor =
+                  new DynConstructors.Builder()
+                      .impl(ioe.getClass(), String.class)
+                      .buildChecked();
+              newIoe = ctor.newInstance(node + ": " + ioe.getMessage());
+              if (cause != null) {
+                try {
+                  newIoe.initCause(cause);
+                } catch (Exception e) {
+                  // Unable to initCause. Ignore the exception.
+                }
+              }
+            }
             newIoe.setStackTrace(ioe.getStackTrace());

Review Comment:
   neither newIoe nor ioe can be null at this line





> upgrade to jackson 2.14.3
> -------------------------
>
>                 Key: HADOOP-19259
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19259
>             Project: Hadoop Common
>          Issue Type: Task
>          Components: common
>            Reporter: PJ Fanning
>            Priority: Major
>              Labels: pull-request-available
>
> see HADOOP-19230 and HADOOP-18332
> Jackson 2.18 is causing some trouble but Jackson 2.14 has some useful 
> changes. I can follow up later and try to use a newer version of Jackson but 
> this is a start.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to