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

ASF GitHub Bot commented on KAFKA-7401:
---------------------------------------

apovzner commented on pull request #6220: KAFKA-7401: Fix inconsistent range 
exception on segment recovery
URL: https://github.com/apache/kafka/pull/6220
 
 
   This PR fixes "java.lang.IllegalArgumentException: inconsistent range" which 
happens on broker startup after  unclean shutdown during log cleaning phase 
that creates swap files (in case where base offset < log start offset).  Added 
`testRecoveryAfterCrashAndIncrementedLogStartOffset` that reproduces Kafka-7401.
   
   ### Committer Checklist (excluded from commit message)
   - [ ] Verify design and implementation 
   - [ ] Verify test coverage and CI build status
   - [ ] Verify documentation (including upgrade notes)
   
 
----------------------------------------------------------------
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)

Reply via email to