You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Nacho Munoz (JIRA)" <ji...@apache.org> on 2017/04/14 11:38:41 UTC

[jira] [Comment Edited] (KAFKA-4979) Handcrafted JoinGroupRequest makes consumers on the same group to exit abruptly

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

Nacho Munoz edited comment on KAFKA-4979 at 4/14/17 11:37 AM:
--------------------------------------------------------------

I was playing with the Kafka protocol from Clojure leveraging the AdminClient send method. I'm happy to open a PR to fix this if it's considered an issue. Please see below a handcrafted JoinGroupRequest that triggers the exception described: 

{noformat}
(send-to admin-client 
              (Node. 1 "localhost" 9092) 
              ApiKeys/JOIN_GROUP 
              (JoinGroupRequest$Builder. "group-test"
                                                             10000
                                                              ""
                                                              "consumer"
                                                              [
                                                               (JoinGroupRequest$ProtocolMetadata. "range"
                                                                                                                                         (ByteBuffer/wrap (.getBytes "")))
                                                               (JoinGroupRequest$ProtocolMetadata. "roundrobin"
                                                                                                                                         (ByteBuffer/wrap (.getBytes "")))]))
{noformat}


was (Author: nachomdo):
I was playing with the Kafka protocol from Clojure leveraging the AdminClient send method. I'm happy to open a PR to fix this if it's considered an issue. Please see below a handcrafted JoinGroupRequest that triggers the exception described: 

{noformat}
(send-to admin-client (Node. 1 "localhost" 9092) ApiKeys/JOIN_GROUP (JoinGroupRequest$Builder. "group-test"
                                                                                                    10000
                                                                                                    ""
                                                                                                    "consumer"
                                                                                                    [
                                                                                                     (JoinGroupRequest$ProtocolMetadata. "range"
                                                                                                                                         (ByteBuffer/wrap (.getBytes "")))
                                                                                                     (JoinGroupRequest$ProtocolMetadata. "roundrobin"
                                                                                                                                         (ByteBuffer/wrap (.getBytes "")))]))
{noformat}

> Handcrafted JoinGroupRequest makes consumers on the same group to exit abruptly
> -------------------------------------------------------------------------------
>
>                 Key: KAFKA-4979
>                 URL: https://issues.apache.org/jira/browse/KAFKA-4979
>             Project: Kafka
>          Issue Type: Bug
>          Components: consumer
>    Affects Versions: 0.10.2.0
>            Reporter: Nacho Munoz
>            Priority: Minor
>
> Given an application with a consumer group X it is possible to make the application crash by creating a bad JoinGroupRequest for the same group. I don't know if that is the expected behaviour but I think that, maybe, this could return an error and leave the application unaffected by the rogue request. Please let me know if you need any further information or if I can do anything to help. 
> You can see the exception below: 
> [2017-03-28 16:57:00,819] ERROR Error processing message, terminating consumer process:  (kafka.tools.ConsoleConsumer$)
> org.apache.kafka.common.protocol.types.SchemaException: Error reading field 'version': java.nio.BufferUnderflowException
>         at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:72)
>         at org.apache.kafka.clients.consumer.internals.ConsumerProtocol.deserializeSubscription(ConsumerProtocol.java:94)
>         at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.performAssignment(ConsumerCoordinator.java:320)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.onJoinLeader(AbstractCoordinator.java:488)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.access$1100(AbstractCoordinator.java:89)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$JoinGroupResponseHandler.handle(AbstractCoordinator.java:438)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$JoinGroupResponseHandler.handle(AbstractCoordinator.java:420)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$CoordinatorResponseHandler.onSuccess(AbstractCoordinator.java:764)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$CoordinatorResponseHandler.onSuccess(AbstractCoordinator.java:745)
>         at org.apache.kafka.clients.consumer.internals.RequestFuture$1.onSuccess(RequestFuture.java:186)
>         at org.apache.kafka.clients.consumer.internals.RequestFuture.fireSuccess(RequestFuture.java:149)
>         at org.apache.kafka.clients.consumer.internals.RequestFuture.complete(RequestFuture.java:116)
>         at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient$RequestFutureCompletionHandler.fireCompletion(ConsumerNetworkClient.java:493)
>         at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.firePendingCompletedRequests(ConsumerNetworkClient.java:322)
>         at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:253)
>         at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:172)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:334)
>         at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureActiveGroup(AbstractCoordinator.java:303)
>         at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:286)
>         at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1030)
>         at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:995)
>         at kafka.consumer.NewShinyConsumer.receive(BaseConsumer.scala:88)
>         at kafka.tools.ConsoleConsumer$.process(ConsoleConsumer.scala:120)
>         at kafka.tools.ConsoleConsumer$.run(ConsoleConsumer.scala:75)
>         at kafka.tools.ConsoleConsumer$.main(ConsoleConsumer.scala:50)
>         at kafka.tools.ConsoleConsumer.main(ConsoleConsumer.scala)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)