[ https://issues.apache.org/jira/browse/KAFKA-7401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16766359#comment-16766359 ]
ASF GitHub Bot commented on KAFKA-7401: --------------------------------------- hachikuji commented on pull request #6220: KAFKA-7401: Fix inconsistent range exception on segment recovery URL: https://github.com/apache/kafka/pull/6220 ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Broker fails to start when recovering a segment from before the log start > offset > -------------------------------------------------------------------------------- > > Key: KAFKA-7401 > URL: https://issues.apache.org/jira/browse/KAFKA-7401 > Project: Kafka > Issue Type: Bug > Components: log > Affects Versions: 1.1.0, 1.1.1 > Reporter: Bob Barrett > Assignee: Anna Povzner > Priority: Major > > If a segment needs to be recovered (for example, because of a missing index > file or uncompleted swap operation) and its base offset is less than the log > start offset, the broker will crash with the following error: > Fatal error during KafkaServer startup. Prepare to shutdown > (kafka.server.KafkaServer) > java.lang.IllegalArgumentException: inconsistent range > at java.util.concurrent.ConcurrentSkipListMap$SubMap.<init>(Unknown Source) > at java.util.concurrent.ConcurrentSkipListMap.subMap(Unknown Source) > at java.util.concurrent.ConcurrentSkipListMap.subMap(Unknown Source) > at kafka.log.Log$$anonfun$12.apply(Log.scala:1579) > at kafka.log.Log$$anonfun$12.apply(Log.scala:1578) > at scala.Option.map(Option.scala:146) > at kafka.log.Log.logSegments(Log.scala:1578) > at kafka.log.Log.kafka$log$Log$$recoverSegment(Log.scala:358) > at kafka.log.Log$$anonfun$completeSwapOperations$1.apply(Log.scala:389) > at kafka.log.Log$$anonfun$completeSwapOperations$1.apply(Log.scala:380) > at scala.collection.immutable.Set$Set1.foreach(Set.scala:94) > at kafka.log.Log.completeSwapOperations(Log.scala:380) > at kafka.log.Log.loadSegments(Log.scala:408) > at kafka.log.Log.<init>(Log.scala:216) > at kafka.log.Log$.apply(Log.scala:1765) > at kafka.log.LogManager.kafka$log$LogManager$$loadLog(LogManager.scala:260) > at > kafka.log.LogManager$$anonfun$loadLogs$2$$anonfun$11$$anonfun$apply$15$$anonfun$apply$2.apply$mcV$sp(LogManager.scala:340) > at kafka.utils.CoreUtils$$anon$1.run(CoreUtils.scala:62) > at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) > at java.util.concurrent.FutureTask.run(Unknown Source) > at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) > at java.lang.Thread.run(Unknown Source) > Since these segments are outside the log range, we should delete them, or at > least not block broker startup because of them. -- This message was sent by Atlassian JIRA (v7.6.3#76005)