You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Robert Metzger (JIRA)" <ji...@apache.org> on 2015/09/22 17:29:04 UTC

[jira] [Commented] (KAFKA-2236) offset request reply racing with segment rolling

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

Robert Metzger commented on KAFKA-2236:
---------------------------------------

I've seen this error as well in the integration tests of Flink (We are starting a Kafka Broker with the test to test our Kafka connectors):
{code}
14:43:03,328 INFO  kafka.network.Processor                                       - Closing socket connection to /127.0.0.1.
14:43:03,334 WARN  kafka.server.KafkaApis                                        - [KafkaApi-0] Error while responding to offset request
java.lang.ArrayIndexOutOfBoundsException: 1
	at kafka.server.KafkaApis.fetchOffsetsBefore(KafkaApis.scala:469)
	at kafka.server.KafkaApis.fetchOffsets(KafkaApis.scala:449)
	at kafka.server.KafkaApis$$anonfun$17.apply(KafkaApis.scala:411)
	at kafka.server.KafkaApis$$anonfun$17.apply(KafkaApis.scala:402)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.immutable.Map$Map1.foreach(Map.scala:109)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
	at scala.collection.AbstractTraversable.map(Traversable.scala:105)
	at kafka.server.KafkaApis.handleOffsetRequest(KafkaApis.scala:402)
	at kafka.server.KafkaApis.handle(KafkaApis.scala:61)
	at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:59)
	at java.lang.Thread.run(Thread.java:745)
{code}

on the client side, we are seeing a {{kafka.common.UnknownException}}:
{code}
Caused by: java.lang.RuntimeException: Unable to get last offset for topic customPartitioningTestTopic and partitions [FetchPartition {partition=2, offset=-915623761776}]. 
Exception for partition 2: kafka.common.UnknownException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
	at java.lang.Class.newInstance(Class.java:438)
	at kafka.common.ErrorMapping$.exceptionFor(ErrorMapping.scala:86)
	at kafka.common.ErrorMapping.exceptionFor(ErrorMapping.scala)
	at org.apache.flink.streaming.connectors.kafka.internals.LegacyFetcher$SimpleConsumerThread.getLastOffset(LegacyFetcher.java:521)
	at org.apache.flink.streaming.connectors.kafka.internals.LegacyFetcher$SimpleConsumerThread.run(LegacyFetcher.java:370)
{code}

Here is the log of the travis build: https://s3.amazonaws.com/archive.travis-ci.org/jobs/81584444/log.txt
this is the archive containing the full logs at INFO level: https://flink-logs-us.s3.amazonaws.com/travis-artifacts/rmetzger/flink/1123/1123.4.tar.gz (see 2.log)

It would be nice if you could address the issue with the next release.

> offset request reply racing with segment rolling
> ------------------------------------------------
>
>                 Key: KAFKA-2236
>                 URL: https://issues.apache.org/jira/browse/KAFKA-2236
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.8.2.0
>         Environment: Linux x86_64, java.1.7.0_72, discovered using librdkafka based client.
>            Reporter: Alfred Landrum
>            Assignee: Jason Gustafson
>            Priority: Critical
>              Labels: newbie
>
> My use case with kafka involves an aggressive retention policy that rolls segment files frequently. My librdkafka based client sees occasional errors to offset requests, showing up in the broker log like:
> [2015-06-02 02:33:38,047] INFO Rolled new log segment for 'receiver-93b40462-3850-47c1-bcda-8a3e221328ca-50' in 1 ms. (kafka.log.Log)
> [2015-06-02 02:33:38,049] WARN [KafkaApi-0] Error while responding to offset request (kafka.server.KafkaApis)
> java.lang.ArrayIndexOutOfBoundsException: 3
>         at kafka.server.KafkaApis.fetchOffsetsBefore(KafkaApis.scala:469)
>         at kafka.server.KafkaApis.fetchOffsets(KafkaApis.scala:449)
>         at kafka.server.KafkaApis$$anonfun$17.apply(KafkaApis.scala:411)
>         at kafka.server.KafkaApis$$anonfun$17.apply(KafkaApis.scala:402)
>         at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>         at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
>         at scala.collection.immutable.Map$Map1.foreach(Map.scala:109)
>         at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
>         at scala.collection.AbstractTraversable.map(Traversable.scala:105)
>         at kafka.server.KafkaApis.handleOffsetRequest(KafkaApis.scala:402)
>         at kafka.server.KafkaApis.handle(KafkaApis.scala:61)
>         at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:59)
>         at java.lang.Thread.run(Thread.java:745)
> quoting Guozhang Wang's reply to my query on the users list:
> "I check the 0.8.2 code and may probably find a bug related to your issue.
> Basically, segsArray.last.size is called multiple times during handling
> offset requests, while segsArray.last could get concurrent appends. Hence
> it is possible that in line 461, if(segsArray.last.size > 0) returns false
> while later in line 468, if(segsArray.last.size > 0) could return true."
> http://mail-archives.apache.org/mod_mbox/kafka-users/201506.mbox/%3CCAHwHRrUK-3wdoEAaFbsD0E859Ea0gXixfxgDzF8E3%3D_8r7K%2Bpw%40mail.gmail.com%3E



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