This is an automated email from the ASF dual-hosted git repository.

trohrmann pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git

commit 6522f17217e5f81829e5e51c39837bc3ce6b5ff4
Author: Till Rohrmann <[email protected]>
AuthorDate: Wed Sep 19 17:34:42 2018 +0200

    [hotfix] Unstrip UndeclaredThrowableExceptions from entrypoints
    
    In order to better report errors while starting the cluster, we unstrip all
    UndeclaredThrowableExceptions from the entrypoints. This should give a 
better
    user experience.
---
 .../java/org/apache/flink/client/cli/CliFrontend.java     |  6 ++++--
 .../flink/mesos/entrypoint/MesosTaskExecutorRunner.java   | 15 +++++++--------
 .../flink/runtime/webmonitor/history/HistoryServer.java   | 13 +++++--------
 .../flink/runtime/entrypoint/ClusterEntrypoint.java       |  6 ++++--
 .../flink/runtime/taskexecutor/TaskManagerRunner.java     |  4 +++-
 .../org/apache/flink/yarn/YarnTaskExecutorRunner.java     | 14 +++++++-------
 .../org/apache/flink/yarn/cli/FlinkYarnSessionCli.java    | 13 ++++++++-----
 7 files changed, 38 insertions(+), 33 deletions(-)

diff --git 
a/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java 
b/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java
index e2a260c..f8258b1 100644
--- a/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java
+++ b/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java
@@ -69,6 +69,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.UndeclaredThrowableException;
 import java.net.InetSocketAddress;
 import java.net.URL;
 import java.text.SimpleDateFormat;
@@ -1121,8 +1122,9 @@ public class CliFrontend {
                        System.exit(retCode);
                }
                catch (Throwable t) {
-                       LOG.error("Fatal error while running command line 
interface.", t);
-                       t.printStackTrace();
+                       final Throwable strippedThrowable = 
ExceptionUtils.stripException(t, UndeclaredThrowableException.class);
+                       LOG.error("Fatal error while running command line 
interface.", strippedThrowable);
+                       strippedThrowable.printStackTrace();
                        System.exit(31);
                }
        }
diff --git 
a/flink-mesos/src/main/java/org/apache/flink/mesos/entrypoint/MesosTaskExecutorRunner.java
 
b/flink-mesos/src/main/java/org/apache/flink/mesos/entrypoint/MesosTaskExecutorRunner.java
index 11a4130..cc1289f 100644
--- 
a/flink-mesos/src/main/java/org/apache/flink/mesos/entrypoint/MesosTaskExecutorRunner.java
+++ 
b/flink-mesos/src/main/java/org/apache/flink/mesos/entrypoint/MesosTaskExecutorRunner.java
@@ -30,6 +30,7 @@ import 
org.apache.flink.runtime.taskexecutor.TaskManagerRunner;
 import org.apache.flink.runtime.util.EnvironmentInformation;
 import org.apache.flink.runtime.util.JvmShutdownSafeguard;
 import org.apache.flink.runtime.util.SignalHandler;
+import org.apache.flink.util.ExceptionUtils;
 import org.apache.flink.util.Preconditions;
 
 import org.apache.commons.cli.CommandLine;
@@ -40,8 +41,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
 import java.util.Map;
-import java.util.concurrent.Callable;
 
 /**
  * The entry point for running a TaskManager in a Mesos container.
@@ -104,17 +105,15 @@ public class MesosTaskExecutorRunner {
                SecurityUtils.install(sc);
 
                try {
-                       SecurityUtils.getInstalledContext().runSecured(new 
Callable<Integer>() {
-                               @Override
-                               public Integer call() throws Exception {
-                                       
TaskManagerRunner.runTaskManager(configuration, resourceId);
+                       SecurityUtils.getInstalledContext().runSecured(() -> {
+                               TaskManagerRunner.runTaskManager(configuration, 
resourceId);
 
-                                       return 0;
-                               }
+                               return 0;
                        });
                }
                catch (Throwable t) {
-                       LOG.error("Error while starting the TaskManager", t);
+                       final Throwable strippedThrowable = 
ExceptionUtils.stripException(t, UndeclaredThrowableException.class);
+                       LOG.error("Error while starting the TaskManager", 
strippedThrowable);
                        System.exit(INIT_ERROR_EXIT_CODE);
                }
        }
diff --git 
a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java
 
b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java
index 0891426..53c5a83 100644
--- 
a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java
+++ 
b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java
@@ -35,6 +35,7 @@ import 
org.apache.flink.runtime.security.SecurityConfiguration;
 import org.apache.flink.runtime.security.SecurityUtils;
 import org.apache.flink.runtime.webmonitor.WebMonitorUtils;
 import org.apache.flink.runtime.webmonitor.utils.WebFrontendBootstrap;
+import org.apache.flink.util.ExceptionUtils;
 import org.apache.flink.util.FileUtils;
 import org.apache.flink.util.FlinkException;
 import org.apache.flink.util.Preconditions;
@@ -121,14 +122,10 @@ public class HistoryServer {
                                }
                        });
                        System.exit(0);
-               } catch (UndeclaredThrowableException ute) {
-                       Throwable cause = ute.getUndeclaredThrowable();
-                       LOG.error("Failed to run HistoryServer.", cause);
-                       cause.printStackTrace();
-                       System.exit(1);
-               } catch (Exception e) {
-                       LOG.error("Failed to run HistoryServer.", e);
-                       e.printStackTrace();
+               } catch (Throwable t) {
+                       final Throwable strippedThrowable = 
ExceptionUtils.stripException(t, UndeclaredThrowableException.class);
+                       LOG.error("Failed to run HistoryServer.", 
strippedThrowable);
+                       strippedThrowable.printStackTrace();
                        System.exit(1);
                }
        }
diff --git 
a/flink-runtime/src/main/java/org/apache/flink/runtime/entrypoint/ClusterEntrypoint.java
 
b/flink-runtime/src/main/java/org/apache/flink/runtime/entrypoint/ClusterEntrypoint.java
index 0fd4389..1a8c058 100755
--- 
a/flink-runtime/src/main/java/org/apache/flink/runtime/entrypoint/ClusterEntrypoint.java
+++ 
b/flink-runtime/src/main/java/org/apache/flink/runtime/entrypoint/ClusterEntrypoint.java
@@ -84,6 +84,7 @@ import javax.annotation.concurrent.GuardedBy;
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -192,12 +193,13 @@ public abstract class ClusterEntrypoint implements 
FatalErrorHandler {
                                return null;
                        });
                } catch (Throwable t) {
-                       LOG.error("Cluster initialization failed.", t);
+                       final Throwable strippedThrowable = 
ExceptionUtils.stripException(t, UndeclaredThrowableException.class);
+                       LOG.error("Cluster initialization failed.", 
strippedThrowable);
 
                        shutDownAndTerminate(
                                STARTUP_FAILURE_RETURN_CODE,
                                ApplicationStatus.FAILED,
-                               t.getMessage(),
+                               strippedThrowable.getMessage(),
                                false);
                }
        }
diff --git 
a/flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunner.java
 
b/flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunner.java
index 5c1f420..40e628a 100644
--- 
a/flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunner.java
+++ 
b/flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunner.java
@@ -64,6 +64,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
+import java.lang.reflect.UndeclaredThrowableException;
 import java.net.BindException;
 import java.net.InetAddress;
 import java.util.ArrayList;
@@ -301,7 +302,8 @@ public class TaskManagerRunner implements 
FatalErrorHandler, AutoCloseableAsync
                                }
                        });
                } catch (Throwable t) {
-                       LOG.error("TaskManager initialization failed.", t);
+                       final Throwable strippedThrowable = 
ExceptionUtils.stripException(t, UndeclaredThrowableException.class);
+                       LOG.error("TaskManager initialization failed.", 
strippedThrowable);
                        System.exit(STARTUP_FAILURE_RETURN_CODE);
                }
        }
diff --git 
a/flink-yarn/src/main/java/org/apache/flink/yarn/YarnTaskExecutorRunner.java 
b/flink-yarn/src/main/java/org/apache/flink/yarn/YarnTaskExecutorRunner.java
index 0e70de9..a419bb8 100644
--- a/flink-yarn/src/main/java/org/apache/flink/yarn/YarnTaskExecutorRunner.java
+++ b/flink-yarn/src/main/java/org/apache/flink/yarn/YarnTaskExecutorRunner.java
@@ -32,6 +32,7 @@ import 
org.apache.flink.runtime.taskexecutor.TaskManagerRunner;
 import org.apache.flink.runtime.util.EnvironmentInformation;
 import org.apache.flink.runtime.util.JvmShutdownSafeguard;
 import org.apache.flink.runtime.util.SignalHandler;
+import org.apache.flink.util.ExceptionUtils;
 import org.apache.flink.util.Preconditions;
 
 import org.apache.hadoop.security.UserGroupInformation;
@@ -40,6 +41,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.lang.reflect.UndeclaredThrowableException;
 import java.util.Map;
 import java.util.concurrent.Callable;
 
@@ -136,17 +138,15 @@ public class YarnTaskExecutorRunner {
 
                        SecurityUtils.install(sc);
 
-                       SecurityUtils.getInstalledContext().runSecured(new 
Callable<Void>() {
-                               @Override
-                               public Void call() throws Exception {
-                                       
TaskManagerRunner.runTaskManager(configuration, new ResourceID(containerId));
-                                       return null;
-                               }
+                       
SecurityUtils.getInstalledContext().runSecured((Callable<Void>) () -> {
+                               TaskManagerRunner.runTaskManager(configuration, 
new ResourceID(containerId));
+                               return null;
                        });
                }
                catch (Throwable t) {
+                       final Throwable strippedThrowable = 
ExceptionUtils.stripException(t, UndeclaredThrowableException.class);
                        // make sure that everything whatever ends up in the log
-                       LOG.error("YARN TaskManager initialization failed.", t);
+                       LOG.error("YARN TaskManager initialization failed.", 
strippedThrowable);
                        System.exit(INIT_ERROR_EXIT_CODE);
                }
        }
diff --git 
a/flink-yarn/src/main/java/org/apache/flink/yarn/cli/FlinkYarnSessionCli.java 
b/flink-yarn/src/main/java/org/apache/flink/yarn/cli/FlinkYarnSessionCli.java
index c0180a8..90aca89 100644
--- 
a/flink-yarn/src/main/java/org/apache/flink/yarn/cli/FlinkYarnSessionCli.java
+++ 
b/flink-yarn/src/main/java/org/apache/flink/yarn/cli/FlinkYarnSessionCli.java
@@ -36,6 +36,7 @@ import 
org.apache.flink.runtime.concurrent.ScheduledExecutorServiceAdapter;
 import org.apache.flink.runtime.security.SecurityConfiguration;
 import org.apache.flink.runtime.security.SecurityUtils;
 import org.apache.flink.runtime.util.LeaderConnectionInfo;
+import org.apache.flink.util.ExceptionUtils;
 import org.apache.flink.util.ExecutorUtils;
 import org.apache.flink.util.FlinkException;
 import org.apache.flink.util.Preconditions;
@@ -71,6 +72,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
+import java.lang.reflect.UndeclaredThrowableException;
 import java.net.URLDecoder;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
@@ -811,8 +813,9 @@ public class FlinkYarnSessionCli extends 
AbstractCustomCommandLine<ApplicationId
                        retCode = 
SecurityUtils.getInstalledContext().runSecured(() -> cli.run(args));
                } catch (CliArgsException e) {
                        retCode = handleCliArgsException(e);
-               } catch (Exception e) {
-                       retCode = handleError(e);
+               } catch (Throwable t) {
+                       final Throwable strippedThrowable = 
ExceptionUtils.stripException(t, UndeclaredThrowableException.class);
+                       retCode = handleError(strippedThrowable);
                }
 
                System.exit(retCode);
@@ -949,15 +952,15 @@ public class FlinkYarnSessionCli extends 
AbstractCustomCommandLine<ApplicationId
                return 1;
        }
 
-       private static int handleError(Exception e) {
-               LOG.error("Error while running the Flink Yarn session.", e);
+       private static int handleError(Throwable t) {
+               LOG.error("Error while running the Flink Yarn session.", t);
 
                System.err.println();
                
System.err.println("------------------------------------------------------------");
                System.err.println(" The program finished with the following 
exception:");
                System.err.println();
 
-               e.printStackTrace();
+               t.printStackTrace();
                return 1;
        }
 

Reply via email to