为什么dockerized Java app不会在异常时终止

时间:2018-01-30 12:52:08

标签: java docker exception

我在 anapsix / alpine-java:8 基于docker image的容器中有一个运行为PID 1的java应用程序。在大多数情况下,当发生异常时,应用程序会终止,容器也会终止。我昨天注意到这个应用程序的一个实例在“main”线程中引发了一个异常,但没有终止数小时。

Exception in thread "main" org.apache.kafka.streams.errors.BrokerNotFoundException: Could not find any available broker. Check your StreamsConfig setting 'bootstrap.servers'. This error might also occur, if you try to connect to pre-0.10 brokers. Kafka Streams requires broker version 0.10.1.x or higher.
        at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.ensureOneNodeIsReady(StreamsKafkaClient.java:251)
        at org.apache.kafka.streams.processor.internals.StreamsKafkaClient.getAnyReadyBrokerId(StreamsKafkaClient.java:280)
        ... 

我使用“kill -3 1”进行了堆栈转储。我没有在堆栈转储中看到“main”线程。此外,“DestroyJavaVM”已创建,如果我理解正确,只会在“main”退出后发生。

"DestroyJavaVM" #33 prio=5 os_prio=0 tid=0x00007fbf2400c800 nid=0x32 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

我的问题是,为什么这个实例没有终止?我试图通过在“main”线程中使这个应用程序抛出异常来重现这几次。每次,应用程序都会按预期终止。可以找到完整堆栈转储here

0 个答案:

没有答案