[jira] [Commented] (KAFKA-4350) Can't mirror from Kafka 0.9 to Kafka 0.10.1
[ https://issues.apache.org/jira/browse/KAFKA-4350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15621305#comment-15621305 ] Jiangjie Qin commented on KAFKA-4350: - [~ecesena] In Kafka the wire protocol compatibility is taken care by the brokers. The clients will always send the latest wire protocol they are aware of. It is the brokers' responsibility to adapt to the clients protocol version and send corresponding response back. For example, if the broker is running at 0.10 and it receives a request which is sent by a 0.9 client, the broker will send the response with the version in 0.9. That means the newer brokers support older clients. However, if a broker is running in 0.9 and receives a request sent by a 0.10 client. Because the broker does not even know the 0.10 protocol, depending on the type of request, different exception might be seen on the client side. In your case, it seems the 0.9 broker sent back a metadata response to a 0.10 client. The 0.10 client is expecting a cluster_id field in the response which does not exist in 0.9 metadata response. Therefore a schema exception was thrown as you saw. This is the limitation mentioned by [~hachikuji]. So if you want to replicate data between 0.9 and 0.10 brokers, mirror maker in 0.9 Kafka should be used so that it can talk to both 0.9 and 0.10 brokers. > Can't mirror from Kafka 0.9 to Kafka 0.10.1 > --- > > Key: KAFKA-4350 > URL: https://issues.apache.org/jira/browse/KAFKA-4350 > Project: Kafka > Issue Type: Bug >Reporter: Emanuele Cesena > > I'm running 2 clusters: K9 with Kafka 0.9 and K10 with Kafka 0.10.1. > In K10, I've set up mirror maker to clone a topic from K9 to K10. > Mirror maker immediately fails while starting, any suggestion? Following > error message and configs. > Error message: > {code:java} > [2016-10-26 23:54:01,663] FATAL [mirrormaker-thread-0] Mirror maker thread > failure due to (kafka.tools.MirrorMaker$MirrorMakerThread) > org.apache.kafka.common.protocol.types.SchemaException: Error reading field > 'cluster_id': Error reading string of length 418, only 43 bytes available > at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:73) > at > org.apache.kafka.clients.NetworkClient.parseResponse(NetworkClient.java:380) > at > org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:449) > at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:269) > at > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:232) > at > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:180) > at > org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:193) > at > org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:248) > at > org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1013) > at > org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:979) > at > kafka.tools.MirrorMaker$MirrorMakerNewConsumer.receive(MirrorMaker.scala:582) > at > kafka.tools.MirrorMaker$MirrorMakerThread.run(MirrorMaker.scala:431) > [2016-10-26 23:54:01,679] FATAL [mirrormaker-thread-0] Mirror maker thread > exited abnormally, stopping the whole mirror maker. > (kafka.tools.MirrorMaker$MirrorMakerThread) > {code} > Consumer: > {code:} > group.id=mirrormaker001 > client.id=mirrormaker001 > bootstrap.servers=...K9... > security.protocol=PLAINTEXT > auto.offset.reset=earliest > {code} > (note that I first run without client.id, then tried adding a client.id > because -- same error in both cases) > Producer: > {code:} > bootstrap.servers=...K10... > security.protocol=PLAINTEXT > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (KAFKA-4350) Can't mirror from Kafka 0.9 to Kafka 0.10.1
[ https://issues.apache.org/jira/browse/KAFKA-4350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15621249#comment-15621249 ] Emanuele Cesena commented on KAFKA-4350: [~hachikuji] Sorry, I'm a bit confused. I need to replicate from Kafka 0.9 to 0.10. I don't think MM 0.9 works for writing to Kafka 0.10, or at least I've tried it in my settings (i.e., K 0.9 -> MM 0.9 -> K 0.10), it didn't work, then I read around and always saw recommendations to use the new MM against the old broker, not viceversa. So I went for MM 0.10: K 0.9 -> MM 0.10 -> K 0.10. In this case, I can use either the new client or the old client (setting bootstrap.servers vs zookeeper.connect). I understand that the new client may not work for reading from K 0.9. But supposedly, the old client (in MM 0.10) should work, shouldn't it? This is the core of the issue I'm reporting, I'm getting errors even with the old client. > Can't mirror from Kafka 0.9 to Kafka 0.10.1 > --- > > Key: KAFKA-4350 > URL: https://issues.apache.org/jira/browse/KAFKA-4350 > Project: Kafka > Issue Type: Bug >Reporter: Emanuele Cesena > > I'm running 2 clusters: K9 with Kafka 0.9 and K10 with Kafka 0.10.1. > In K10, I've set up mirror maker to clone a topic from K9 to K10. > Mirror maker immediately fails while starting, any suggestion? Following > error message and configs. > Error message: > {code:java} > [2016-10-26 23:54:01,663] FATAL [mirrormaker-thread-0] Mirror maker thread > failure due to (kafka.tools.MirrorMaker$MirrorMakerThread) > org.apache.kafka.common.protocol.types.SchemaException: Error reading field > 'cluster_id': Error reading string of length 418, only 43 bytes available > at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:73) > at > org.apache.kafka.clients.NetworkClient.parseResponse(NetworkClient.java:380) > at > org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:449) > at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:269) > at > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:232) > at > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:180) > at > org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:193) > at > org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:248) > at > org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1013) > at > org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:979) > at > kafka.tools.MirrorMaker$MirrorMakerNewConsumer.receive(MirrorMaker.scala:582) > at > kafka.tools.MirrorMaker$MirrorMakerThread.run(MirrorMaker.scala:431) > [2016-10-26 23:54:01,679] FATAL [mirrormaker-thread-0] Mirror maker thread > exited abnormally, stopping the whole mirror maker. > (kafka.tools.MirrorMaker$MirrorMakerThread) > {code} > Consumer: > {code:} > group.id=mirrormaker001 > client.id=mirrormaker001 > bootstrap.servers=...K9... > security.protocol=PLAINTEXT > auto.offset.reset=earliest > {code} > (note that I first run without client.id, then tried adding a client.id > because -- same error in both cases) > Producer: > {code:} > bootstrap.servers=...K10... > security.protocol=PLAINTEXT > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (KAFKA-4350) Can't mirror from Kafka 0.9 to Kafka 0.10.1
[ https://issues.apache.org/jira/browse/KAFKA-4350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15613815#comment-15613815 ] Jason Gustafson commented on KAFKA-4350: [~ecesena] Unfortunately, this is a limitation of the clients. New clients are not compatible with older brokers. It should be possible to use the 0.9 MM to replicate to and from an 0.10 broker though. > Can't mirror from Kafka 0.9 to Kafka 0.10.1 > --- > > Key: KAFKA-4350 > URL: https://issues.apache.org/jira/browse/KAFKA-4350 > Project: Kafka > Issue Type: Bug >Reporter: Emanuele Cesena > > I'm running 2 clusters: K9 with Kafka 0.9 and K10 with Kafka 0.10.1. > In K10, I've set up mirror maker to clone a topic from K9 to K10. > Mirror maker immediately fails while starting, any suggestion? Following > error message and configs. > Error message: > {code:java} > [2016-10-26 23:54:01,663] FATAL [mirrormaker-thread-0] Mirror maker thread > failure due to (kafka.tools.MirrorMaker$MirrorMakerThread) > org.apache.kafka.common.protocol.types.SchemaException: Error reading field > 'cluster_id': Error reading string of length 418, only 43 bytes available > at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:73) > at > org.apache.kafka.clients.NetworkClient.parseResponse(NetworkClient.java:380) > at > org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:449) > at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:269) > at > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:232) > at > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:180) > at > org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:193) > at > org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:248) > at > org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1013) > at > org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:979) > at > kafka.tools.MirrorMaker$MirrorMakerNewConsumer.receive(MirrorMaker.scala:582) > at > kafka.tools.MirrorMaker$MirrorMakerThread.run(MirrorMaker.scala:431) > [2016-10-26 23:54:01,679] FATAL [mirrormaker-thread-0] Mirror maker thread > exited abnormally, stopping the whole mirror maker. > (kafka.tools.MirrorMaker$MirrorMakerThread) > {code} > Consumer: > {code:} > group.id=mirrormaker001 > client.id=mirrormaker001 > bootstrap.servers=...K9... > security.protocol=PLAINTEXT > auto.offset.reset=earliest > {code} > (note that I first run without client.id, then tried adding a client.id > because -- same error in both cases) > Producer: > {code:} > bootstrap.servers=...K10... > security.protocol=PLAINTEXT > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (KAFKA-4350) Can't mirror from Kafka 0.9 to Kafka 0.10.1
[ https://issues.apache.org/jira/browse/KAFKA-4350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15612592#comment-15612592 ] Emanuele Cesena commented on KAFKA-4350: I did a bit more investigation. I can reproduce similar errors (not exactly the same, but I think very much related) just using the kafka-console-consumer from kafka 0.10.1 distribution against kafka 0.9 broker(s). If I use the new consumer (default), I get a similar error to the mirror maker above. {code:java} org.apache.kafka.common.protocol.types.SchemaException: Error reading field 'brokers': Error reading field 'host': Error reading string of length 27233, only 515 bytes available at org.apache.kafka.common.protocol.types.Schema.read(Schema.java:73) at org.apache.kafka.clients.NetworkClient.parseResponse(NetworkClient.java:380) at org.apache.kafka.clients.NetworkClient.handleCompletedReceives(NetworkClient.java:449) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:269) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:232) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:180) at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:193) at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:248) at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1013) at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:979) at kafka.consumer.NewShinyConsumer.(BaseConsumer.scala:67) at kafka.tools.ConsoleConsumer$.run(ConsoleConsumer.scala:69) at kafka.tools.ConsoleConsumer$.main(ConsoleConsumer.scala:50) at kafka.tools.ConsoleConsumer.main(ConsoleConsumer.scala) {code} Interestingly, even the old consumer fails (and similarly, mirror maker with the old consumer also fails). The setup seems to be fine, with debug logs I can see multiple "Got ping response" messages, but suddenly I receive a SocketTimeoutException: {code:java} [2016-10-27 17:25:32,549] DEBUG Got ping response for sessionid: 0x557fcb463450fb0 after 1ms (org.apache.zookeeper.ClientCnxn) ... [2016-10-27 17:25:34,691] INFO Reconnect due to error: (kafka.consumer.SimpleConsumer) java.net.SocketTimeoutException at sun.nio.ch.SocketAdaptor$SocketInputStream.read(SocketAdaptor.java:211) at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103) at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:81) at kafka.network.BlockingChannel.readCompletely(BlockingChannel.scala:129) at kafka.network.BlockingChannel.receive(BlockingChannel.scala:120) at kafka.consumer.SimpleConsumer.liftedTree1$1(SimpleConsumer.scala:86) at kafka.consumer.SimpleConsumer.kafka$consumer$SimpleConsumer$$sendRequest(SimpleConsumer.scala:83) at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(SimpleConsumer.scala:132) at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply(SimpleConsumer.scala:132) at kafka.consumer.SimpleConsumer$$anonfun$fetch$1$$anonfun$apply$mcV$sp$1.apply(SimpleConsumer.scala:132) at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:33) at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply$mcV$sp(SimpleConsumer.scala:131) at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply(SimpleConsumer.scala:131) at kafka.consumer.SimpleConsumer$$anonfun$fetch$1.apply(SimpleConsumer.scala:131) at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:33) at kafka.consumer.SimpleConsumer.fetch(SimpleConsumer.scala:130) at kafka.consumer.ConsumerFetcherThread.fetch(ConsumerFetcherThread.scala:109) at kafka.consumer.ConsumerFetcherThread.fetch(ConsumerFetcherThread.scala:29) at kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:118) at kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:103) at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:63) {code} In the same system (but well isolated) I also have kafka 0.9, and the consumer works fine with the server. I mean, if I run: {code:java} /path/to/kafka0.9/kafka-console-consumer {code} works, and with the same params: {code:java} /path/to/kafka0.10.1/kafka-console-consumer {code} fails as above. > Can't mirror from Kafka 0.9 to Kafka 0.10.1 > --- > > Key: KAFKA-4350 > URL: https://issu