flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Till Rohrmann (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLINK-5232) Add a Thread default uncaught exception handler on the JobManager
Date Thu, 12 Jul 2018 10:16:00 GMT

    [ https://issues.apache.org/jira/browse/FLINK-5232?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16541432#comment-16541432

Till Rohrmann commented on FLINK-5232:

Hi [~yanghua], the issue is still relevant and I think it would be a good idea to solve it.

Apart from setting a default uncaught exception handler, I think it would also be necessary
to set this handler for the thread pools created by the {{ActorSystem}}. The way to do it,
could be to extend {{ActorSystem}} and to override the {{uncaughtExceptionHandler}} method.
At the moment we only exit the JVM if we encounter a fatal error but not if it is a non fatal

> Add a Thread default uncaught exception handler on the JobManager
> -----------------------------------------------------------------
>                 Key: FLINK-5232
>                 URL: https://issues.apache.org/jira/browse/FLINK-5232
>             Project: Flink
>          Issue Type: Sub-task
>          Components: JobManager
>            Reporter: Stephan Ewen
>            Assignee: vinoyang
>            Priority: Major
> When some JobManager threads die because of uncaught exceptions, we should bring down
the JobManager. If a thread dies from an uncaught exception, there is a high chance that the
JobManager becomes dysfunctional.
> The only sfae thing is to rely on the JobManager being restarted by YARN / Mesos / Kubernetes
/ etc.
> I suggest to add this code to the JobManager launch:
> {code}
> Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
>     @Override
>     public void uncaughtException(Thread t, Throwable e) {
>         try {
>             LOG.error("Thread {} died due to an uncaught exception. Killing process.",
>         } finally {
>             Runtime.getRuntime().halt(-1);
>         }
>     }
> });
> {code}

This message was sent by Atlassian JIRA

View raw message