You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Ashish Kumar Singh (JIRA)" <ji...@apache.org> on 2014/12/14 20:35:13 UTC

[jira] [Comment Edited] (KAFKA-742) Existing directories under the Kafka data directory without any data cause process to not start

    [ https://issues.apache.org/jira/browse/KAFKA-742?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14246074#comment-14246074 ] 

Ashish Kumar Singh edited comment on KAFKA-742 at 12/14/14 7:34 PM:
--------------------------------------------------------------------

Created RB: https://reviews.apache.org/r/29030/

bq. Are we enabling metrics logging by default? Are we creating the metrics dir even if metrics logging is not enabled. This needs to be sanity checked...

metrics dir is created by a metrics reporter during its init, which is called by {{KafkaMetricsReporter}} only if the reported is registered.

bq. If there are bogus directories under the log directory I think the right thing to do is to give a better error message (something like "Found directory /x/y/z, 'z' is not in the form topic-partition")

{{parseTopicPartitionName}} only gets log directory name and not the path. I can make changes for it to receive directory path rather than just the name. However, I think just specifying that dir "some_dir" is not in the form topic-partition should be good enough. Let me know if you guys think otherwise. Other possible solution is I can catch the exception thrown by {{parseTopicPartitionName}} in the caller, which has the path for dir, and throw exception with full path of the dir.


was (Author: singhashish):
Created RB: https://reviews.apache.org/r/29030/

bq. Are we enabling metrics logging by default? Are we creating the metrics dir even if metrics logging is not enabled. This needs to be sanity checked...

metrics dir is created by a metrics reporter during its init, which is called by KafkaMetricsReporter only if the reported is registered.

bq. If there are bogus directories under the log directory I think the right thing to do is to give a better error message (something like "Found directory /x/y/z, 'z' is not in the form topic-partition")

parseTopicPartitionName only gets log directory name and not the path. I can make changes for it to receive directory path rather than just the name. However, I think just specifying that dir "some_dir" is not in the form topic-partition should be good enough. Let me know if you guys think otherwise. Other possible solution is I can catch the exception thrown by parseTopicPartitionName in the caller, which has the path for dir, and throw exception with full path of the dir.

> Existing directories under the Kafka data directory without any data cause process to not start
> -----------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-742
>                 URL: https://issues.apache.org/jira/browse/KAFKA-742
>             Project: Kafka
>          Issue Type: Bug
>          Components: config
>    Affects Versions: 0.8.0
>            Reporter: Chris Curtin
>            Assignee: Ashish Kumar Singh
>             Fix For: 0.8.3
>
>
> I incorrectly setup the configuration file to have the metrics go to /var/kafka/metrics while the logs were in /var/kafka. On startup I received the following error then the daemon exited:
> 30   [main] INFO  kafka.log.LogManager  - [Log Manager on Broker 0] Loading log 'metrics'
> 32   [main] FATAL kafka.server.KafkaServerStartable  - Fatal error during KafkaServerStable startup. Prepare to shutdown
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
>         at java.lang.String.substring(String.java:1937)
>         at kafka.log.LogManager.kafka$log$LogManager$$parseTopicPartitionName(LogManager.scala:335)
>         at kafka.log.LogManager$$anonfun$loadLogs$1$$anonfun$apply$3.apply(LogManager.scala:112)
>         at kafka.log.LogManager$$anonfun$loadLogs$1$$anonfun$apply$3.apply(LogManager.scala:109)
>         at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
>         at scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:34)
>         at kafka.log.LogManager$$anonfun$loadLogs$1.apply(LogManager.scala:109)
>         at kafka.log.LogManager$$anonfun$loadLogs$1.apply(LogManager.scala:101)
>         at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
>         at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:32)
>         at kafka.log.LogManager.loadLogs(LogManager.scala:101)
>         at kafka.log.LogManager.<init>(LogManager.scala:62)
>         at kafka.server.KafkaServer.startup(KafkaServer.scala:59)
>         at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:34)
>         at kafka.Kafka$.main(Kafka.scala:46)
>         at kafka.Kafka.main(Kafka.scala)
> 34   [main] INFO  kafka.server.KafkaServer  - [Kafka Server 0], shutting down
> This was on a brand new cluster so no data or metrics logs existed yet.
> Moving the metrics to their own directory (not a child of the logs) allowed the daemon to start.
> Took a few minutes to figure out what was wrong.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)