Hi Alexandru, I think your issue will be fixed by KAFKA-4254. There's a PR available and should be merged shortly. Can you please verify?
Thanks, Ismael On Wed, Oct 12, 2016 at 11:00 AM, Alexandru Ionita < alexandru.ion...@gmail.com> wrote: > OK. then my question is: why is not the producer trying to recover from > this error by updating its topic metadata right away instead of waiting for > the "metadata.max.age.ms" to expire? > > 2016-10-12 11:43 GMT+02:00 Manikumar <manikumar.re...@gmail.com>: > > > we have similar setting "metadata.max.age.ms" in new producer api. > > Its default value is 300sec. > > > > On Wed, Oct 12, 2016 at 3:04 PM, Alexandru Ionita < > > alexandru.ion...@gmail.com> wrote: > > > > > Hello kafka users!! > > > > > > I'm trying implement/use a mechanism to make a Kafka producer > > imperatively > > > update its topic metadata for a particular topic. > > > > > > Here is the use case: > > > > > > we are adding partitions on topics programmatically because we want to > > very > > > strictly control how messages are published to particular partitions. > > > > > > We are using AdminUtils.addPartitions to achieve this. > > > We then store the ID of the newly added partition in Zookeeper so that > we > > > persist a mapping to a partition ID for our particular domain key. > > > > > > The problem we are facing right now is that the Kafka producer won't > > > refresh its topic metadata until after a while, preventing the producer > > > from posting to those partitions by throwing an error : > > > > > > Caused by: java.lang.IllegalArgumentException: Invalid partition given > > > with > > > record: 56 is not in the range [0...55]. > > > at > > > org.apache.kafka.clients.producer.KafkaProducer. > > > partition(KafkaProducer.java:717) > > > ~[kafka-clients-0.10.0.1.jar:na] > > > at > > > org.apache.kafka.clients.producer.KafkaProducer.doSend( > > > KafkaProducer.java:459) > > > ~[kafka-clients-0.10.0.1.jar:na] > > > at > > > org.apache.kafka.clients.producer.KafkaProducer.send( > > > KafkaProducer.java:430) > > > ~[kafka-clients-0.10.0.1.jar:na] > > > at > > > org.apache.kafka.clients.producer.KafkaProducer.send( > > > KafkaProducer.java:353) > > > ~[kafka-clients-0.10.0.1.jar:na] > > > > > > As I somewhere read (https://github.com/SOHU-Co/kafka-node/issues/175 > ), > > > the > > > producer should try to recover from such error by pulling the latest > > > version of the topic metadata. > > > > > > This doesn't happening and I will keep getting those errors for like 60 > > > seconds until the producer eventually will be able to publish to that > > > partition. > > > > > > In the previous version of kafka (0.8) there was a producer setting > > called > > > topic.metadata.refresh.interval.ms that was aimed to make the producer > > > pull > > > that information. This is what I found related to that setting in the > 0.8 > > > documentation: "The producer generally refreshes the topic metadata > from > > > brokers when there is a failure (partition missing, leader not > > > available...) > > > " > > > > > > Any ideas and comments on this are much appreciated. > > > Thanks > > > > > >