Kafka
  1. Kafka
  2. KAFKA-698

broker may expose uncommitted data to a consumer

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: 0.8.0
    • Fix Version/s: 0.8.0
    • Component/s: core
    • Labels:
      None

      Description

      We saw the following error in the log during testing. The problem seems to be that when the high watermark was at offset 39021, the broker incorrectly exposed an uncommitted message (at offset 39022) to the client. This doesn't always happen, but can happen when certain conditions are met, which I should explain in the comments.

      2013/01/11 00:54:42.059 ERROR [KafkaApis] [kafka-request-handler-2] [kafka] [] [KafkaApi-277] error when processing request (service_metrics,2,39022,2000000)
      java.lang.IllegalArgumentException: Attempt to read with a maximum offset (39021) less than the start offset (39022).
      at kafka.log.LogSegment.read(LogSegment.scala:105)
      at kafka.log.Log.read(Log.scala:386)
      at kafka.server.KafkaApis.kafka$server$KafkaApis$$readMessageSet(KafkaApis.scala:369)
      at kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$readMessageSets$1.apply(KafkaApis.scala:327)
      at kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$readMessageSets$1.apply(KafkaApis.scala:323)
      at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
      at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
      at scala.collection.immutable.Map$Map1.foreach(Map.scala:105)
      at scala.collection.TraversableLike$class.map(TraversableLike.scala:206)
      at scala.collection.immutable.Map$Map1.map(Map.scala:93)
      at kafka.server.KafkaApis.kafka$server$KafkaApis$$readMessageSets(KafkaApis.scala:323)
      at kafka.server.KafkaApis$$anonfun$maybeUnblockDelayedFetchRequests$2.apply(KafkaApis.scala:165)
      at kafka.server.KafkaApis$$anonfun$maybeUnblockDelayedFetchRequests$2.apply(KafkaApis.scala:164)
      at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
      at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:43)
      at kafka.server.KafkaApis.maybeUnblockDelayedFetchRequests(KafkaApis.scala:164)
      at kafka.server.KafkaApis$$anonfun$handleProducerRequest$3.apply(KafkaApis.scala:186)
      at kafka.server.KafkaApis$$anonfun$handleProducerRequest$3.apply(KafkaApis.scala:185)
      at scala.collection.immutable.Map$Map1.foreach(Map.scala:105)
      at kafka.server.KafkaApis.handleProducerRequest(KafkaApis.scala:185)
      at kafka.server.KafkaApis.handle(KafkaApis.scala:58)
      at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:41)
      at java.lang.Thread.run(Thread.java:619)

        Activity

        Jun Rao created issue -
        Jun Rao made changes -
        Field Original Value New Value
        Attachment kafka-699.patch [ 12564657 ]
        Jun Rao made changes -
        Status Open [ 1 ] Patch Available [ 10002 ]
        Jun Rao made changes -
        Attachment kafka-699.patch [ 12564657 ]
        Jun Rao made changes -
        Comment [ Attach a patch. It removes replicaId from javaapi.FetchRequest and restricts the scope of the constructor in scala FetchRequest that sets replicaId. ]
        Jun Rao made changes -
        Status Patch Available [ 10002 ] Open [ 1 ]
        Jay Kreps made changes -
        Attachment KAFKA-698-v1.patch [ 12564738 ]
        Neha Narkhede made changes -
        Assignee Jay Kreps [ jkreps ]
        Jay Kreps made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 0.8 [ 12317244 ]
        Resolution Fixed [ 1 ]
        Neha Narkhede made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Jay Kreps
            Reporter:
            Jun Rao
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development