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; }
