You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Guozhang Wang (JIRA)" <ji...@apache.org> on 2015/01/14 19:49:35 UTC
[jira] [Commented] (KAFKA-768) broker should exit if hitting
exceptions durin startup
[ https://issues.apache.org/jira/browse/KAFKA-768?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14277430#comment-14277430 ]
Guozhang Wang commented on KAFKA-768:
-------------------------------------
We encountered a general deaklock issue with System.exit(), where a startup / shutdown aware container wrapping KafkaServerStartable that has shutdown hook executed by another thread is blocked waiting for the main thread in startup() to set the startup_finished flag while the main thread is blocked on waiting for the shutdown hook thread to join.
So I would like to propose a bit different solution:
1. Replace System.exit(1) in startup with the shutdown() call.
2. In KafkaServer.shutdown, move
{code}
brokerState.newState(NotRunning)
shutdownLatch.countDown()
startupComplete.set(false)
{code}
to the final block.
3. Remove the System.exit(1) in shutdown() call.
This will resolve this issue but as well works with a startup / shutdown aware container that has a shutdown hook depending on the startup logic to be complete.
> broker should exit if hitting exceptions durin startup
> ------------------------------------------------------
>
> Key: KAFKA-768
> URL: https://issues.apache.org/jira/browse/KAFKA-768
> Project: Kafka
> Issue Type: Bug
> Components: core
> Affects Versions: 0.8.0
> Reporter: Jun Rao
> Assignee: Jun Rao
> Priority: Blocker
> Labels: p1
> Fix For: 0.8.0
>
> Attachments: kafka-768.patch
>
>
> A broker hit the following exception, but didn't exit.
> 2013/02/20 01:54:21.341 FATAL [KafkaServerStartable] [main] [kafka] [] Fatal error during KafkaServerStable startup. Prepare to shutdown
> kafka.common.KafkaException: Failed to create data directory /export/content/kafka/i001_caches
> at kafka.log.LogManager$$anonfun$createAndValidateLogDirs$2.apply(LogManager.scala:77)
> at kafka.log.LogManager$$anonfun$createAndValidateLogDirs$2.apply(LogManager.scala:72)
> at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
> at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:32)
> at kafka.log.LogManager.createAndValidateLogDirs(LogManager.scala:72)
> at kafka.log.LogManager.<init>(LogManager.scala:60)
> at kafka.server.KafkaServer.startup(KafkaServer.scala:59)
> at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:34)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)