You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tr...@apache.org on 2018/09/20 09:41:00 UTC
[flink] 05/05: [hotfix] Unstrip UndeclaredThrowableExceptions from
entrypoints
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 <tr...@apache.org>
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;
}