Re: Explicit topic creation and topic metadata availability

2014-10-29 Thread Stevo Slavić
Created https://issues.apache.org/jira/browse/KAFKA-1737

Thanks for support!

Kind regards,
Stevo Slavic.

On Tue, Oct 28, 2014 at 2:07 AM, Guozhang Wang  wrote:

> I think AdminUtils just take a zkClient as its parameter, and the zkClient
> should setZkSerializer at the time when it is initialized.
>
> You can take a look at TopicCommand, which triggers AdminUtils.createTopic
> by initializing a zkClient and pass it in. I agree that we probably have to
> make it clearer in AdminUtils' comments (hence in the built scaladoc) since
> it is a public API. Then when scaladoc is built it can h
>
> Stevo, could you file a JIRA for the comments improvements?
>
> Guozhang
>
>
> On Mon, Oct 27, 2014 at 1:55 AM, Stevo Slavić  wrote:
>
> > OK,
> >
> > thanks for heads up!
> >
> > Is this requirement documented somewhere?
> > Would it make sense then to have AdminUtils, call setZkSerializer on
> > zkClient passed to it? Or maybe provide a factory method(s) for ZkClient
> in
> > AdminUtils, which would ensure  ZkSerializer is appropriate.
> >
> > Kind regards,
> > Stevo Slavic.
> >
> > On Mon, Oct 27, 2014 at 12:43 AM, Guozhang Wang 
> > wrote:
> >
> > > Hi Stevo,
> > >
> > > Sorry for the late reply.
> > >
> > > Yes, you have to use ZKStringSerializer when initializing zkClient.
> > However
> > > this is not related to key.serializer.class of the producer (not the
> > > KafkaProducer, which is the new producer that does not need any key
> > > serializer any more).
> > >
> > > key.serializer.class and value serializer.class are used to specify how
> > to
> > > encode / decode key value bytes of the message, while
> ZKStringSerializer
> > > specifies how to encode the bytes written in ZK metadata path.
> > >
> > > Guozhang
> > >
> > > On Wed, Oct 22, 2014 at 5:36 PM, Stevo Slavić 
> wrote:
> > >
> > > > It seems that used ZkSerializer has to be aligned with KafkaProducer
> > > > configured key.serializer.class.
> > > >
> > > > On Thu, Oct 23, 2014 at 1:13 AM, Stevo Slavić 
> > wrote:
> > > >
> > > > > Still have to understand what is going on, but when I set
> > > > > kafka.utils.ZKStringSerializer to be ZkSerializer for ZkClient used
> > in
> > > > > AdminUtils calls, KafkaProducer could see created topic...
> > > > > Default ZkSerializer is
> > > > > org.I0Itec.zkclient.serialize.SerializableSerializer.
> > > > >
> > > > > Kind regards,
> > > > > Stevo Slavic.
> > > > >
> > > > > On Wed, Oct 22, 2014 at 10:03 PM, Stevo Slavić 
> > > > wrote:
> > > > >
> > > > >> Output on trunk is clean too, after clean build:
> > > > >>
> > > > >> ~/git/oss/kafka [trunk|✔]
> > > > >> 22:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> > > > >> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> > > > >> Error while executing topic command next on empty iterator
> > > > >> java.util.NoSuchElementException: next on empty iterator
> > > > >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> > > > >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> > > > >> at
> > scala.collection.IterableLike$class.head(IterableLike.scala:91)
> > > > >> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> > > > >> at
> > > > >>
> > > >
> > >
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
> > > > >> at
> > > > >>
> > > >
> > >
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
> > > > >> at
> > > > >>
> > > >
> > >
> >
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> > > > >> at
> > > > scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> > > > >> at
> > kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
> > > > >> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
> > > > >> at kafka.admin.TopicCommand.main(TopicCommand.scala)
> > > > >>
> > > > >> On Wed, Oct 22, 2014 at 9:45 PM, Stevo Slavić 
> > > > wrote:
> > > > >>
> > > > >>> kafka-topics.sh execution, from latest trunk:
> > > > >>>
> > > > >>> ~/git/oss/kafka [trunk|✔]
> > > > >>> 21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> > > > >>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> > > > >>> SLF4J: Class path contains multiple SLF4J bindings.
> > > > >>> SLF4J: Found binding in
> > > > >>>
> > > >
> > >
> >
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> > > > >>> SLF4J: Found binding in
> > > > >>>
> > > >
> > >
> >
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> > > > >>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for
> > an
> > > > >>> explanation.
> > > > >>> SLF4J: Actual binding is of type
> > [org.slf4j.impl.Log4jLoggerFactory]
> > > > >>> Error while executing topic command next on empty iterator
> > > > >>> java.util.NoSuchElementE

Re: Explicit topic creation and topic metadata availability

2014-10-27 Thread Guozhang Wang
I think AdminUtils just take a zkClient as its parameter, and the zkClient
should setZkSerializer at the time when it is initialized.

You can take a look at TopicCommand, which triggers AdminUtils.createTopic
by initializing a zkClient and pass it in. I agree that we probably have to
make it clearer in AdminUtils' comments (hence in the built scaladoc) since
it is a public API. Then when scaladoc is built it can h

Stevo, could you file a JIRA for the comments improvements?

Guozhang


On Mon, Oct 27, 2014 at 1:55 AM, Stevo Slavić  wrote:

> OK,
>
> thanks for heads up!
>
> Is this requirement documented somewhere?
> Would it make sense then to have AdminUtils, call setZkSerializer on
> zkClient passed to it? Or maybe provide a factory method(s) for ZkClient in
> AdminUtils, which would ensure  ZkSerializer is appropriate.
>
> Kind regards,
> Stevo Slavic.
>
> On Mon, Oct 27, 2014 at 12:43 AM, Guozhang Wang 
> wrote:
>
> > Hi Stevo,
> >
> > Sorry for the late reply.
> >
> > Yes, you have to use ZKStringSerializer when initializing zkClient.
> However
> > this is not related to key.serializer.class of the producer (not the
> > KafkaProducer, which is the new producer that does not need any key
> > serializer any more).
> >
> > key.serializer.class and value serializer.class are used to specify how
> to
> > encode / decode key value bytes of the message, while ZKStringSerializer
> > specifies how to encode the bytes written in ZK metadata path.
> >
> > Guozhang
> >
> > On Wed, Oct 22, 2014 at 5:36 PM, Stevo Slavić  wrote:
> >
> > > It seems that used ZkSerializer has to be aligned with KafkaProducer
> > > configured key.serializer.class.
> > >
> > > On Thu, Oct 23, 2014 at 1:13 AM, Stevo Slavić 
> wrote:
> > >
> > > > Still have to understand what is going on, but when I set
> > > > kafka.utils.ZKStringSerializer to be ZkSerializer for ZkClient used
> in
> > > > AdminUtils calls, KafkaProducer could see created topic...
> > > > Default ZkSerializer is
> > > > org.I0Itec.zkclient.serialize.SerializableSerializer.
> > > >
> > > > Kind regards,
> > > > Stevo Slavic.
> > > >
> > > > On Wed, Oct 22, 2014 at 10:03 PM, Stevo Slavić 
> > > wrote:
> > > >
> > > >> Output on trunk is clean too, after clean build:
> > > >>
> > > >> ~/git/oss/kafka [trunk|✔]
> > > >> 22:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> > > >> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> > > >> Error while executing topic command next on empty iterator
> > > >> java.util.NoSuchElementException: next on empty iterator
> > > >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> > > >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> > > >> at
> scala.collection.IterableLike$class.head(IterableLike.scala:91)
> > > >> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> > > >> at
> > > >>
> > >
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
> > > >> at
> > > >>
> > >
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
> > > >> at
> > > >>
> > >
> >
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> > > >> at
> > > scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> > > >> at
> kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
> > > >> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
> > > >> at kafka.admin.TopicCommand.main(TopicCommand.scala)
> > > >>
> > > >> On Wed, Oct 22, 2014 at 9:45 PM, Stevo Slavić 
> > > wrote:
> > > >>
> > > >>> kafka-topics.sh execution, from latest trunk:
> > > >>>
> > > >>> ~/git/oss/kafka [trunk|✔]
> > > >>> 21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> > > >>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> > > >>> SLF4J: Class path contains multiple SLF4J bindings.
> > > >>> SLF4J: Found binding in
> > > >>>
> > >
> >
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> > > >>> SLF4J: Found binding in
> > > >>>
> > >
> >
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> > > >>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for
> an
> > > >>> explanation.
> > > >>> SLF4J: Actual binding is of type
> [org.slf4j.impl.Log4jLoggerFactory]
> > > >>> Error while executing topic command next on empty iterator
> > > >>> java.util.NoSuchElementException: next on empty iterator
> > > >>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> > > >>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> > > >>> at
> > scala.collection.IterableLike$class.head(IterableLike.scala:91)
> > > >>> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> > > >>> at
> > > >>>
> > >
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$

Re: Explicit topic creation and topic metadata availability

2014-10-27 Thread Stevo Slavić
OK,

thanks for heads up!

Is this requirement documented somewhere?
Would it make sense then to have AdminUtils, call setZkSerializer on
zkClient passed to it? Or maybe provide a factory method(s) for ZkClient in
AdminUtils, which would ensure  ZkSerializer is appropriate.

Kind regards,
Stevo Slavic.

On Mon, Oct 27, 2014 at 12:43 AM, Guozhang Wang  wrote:

> Hi Stevo,
>
> Sorry for the late reply.
>
> Yes, you have to use ZKStringSerializer when initializing zkClient. However
> this is not related to key.serializer.class of the producer (not the
> KafkaProducer, which is the new producer that does not need any key
> serializer any more).
>
> key.serializer.class and value serializer.class are used to specify how to
> encode / decode key value bytes of the message, while ZKStringSerializer
> specifies how to encode the bytes written in ZK metadata path.
>
> Guozhang
>
> On Wed, Oct 22, 2014 at 5:36 PM, Stevo Slavić  wrote:
>
> > It seems that used ZkSerializer has to be aligned with KafkaProducer
> > configured key.serializer.class.
> >
> > On Thu, Oct 23, 2014 at 1:13 AM, Stevo Slavić  wrote:
> >
> > > Still have to understand what is going on, but when I set
> > > kafka.utils.ZKStringSerializer to be ZkSerializer for ZkClient used in
> > > AdminUtils calls, KafkaProducer could see created topic...
> > > Default ZkSerializer is
> > > org.I0Itec.zkclient.serialize.SerializableSerializer.
> > >
> > > Kind regards,
> > > Stevo Slavic.
> > >
> > > On Wed, Oct 22, 2014 at 10:03 PM, Stevo Slavić 
> > wrote:
> > >
> > >> Output on trunk is clean too, after clean build:
> > >>
> > >> ~/git/oss/kafka [trunk|✔]
> > >> 22:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> > >> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> > >> Error while executing topic command next on empty iterator
> > >> java.util.NoSuchElementException: next on empty iterator
> > >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> > >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> > >> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
> > >> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> > >> at
> > >>
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
> > >> at
> > >>
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
> > >> at
> > >>
> >
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> > >> at
> > scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> > >> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
> > >> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
> > >> at kafka.admin.TopicCommand.main(TopicCommand.scala)
> > >>
> > >> On Wed, Oct 22, 2014 at 9:45 PM, Stevo Slavić 
> > wrote:
> > >>
> > >>> kafka-topics.sh execution, from latest trunk:
> > >>>
> > >>> ~/git/oss/kafka [trunk|✔]
> > >>> 21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> > >>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> > >>> SLF4J: Class path contains multiple SLF4J bindings.
> > >>> SLF4J: Found binding in
> > >>>
> >
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> > >>> SLF4J: Found binding in
> > >>>
> >
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> > >>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
> > >>> explanation.
> > >>> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
> > >>> Error while executing topic command next on empty iterator
> > >>> java.util.NoSuchElementException: next on empty iterator
> > >>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> > >>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> > >>> at
> scala.collection.IterableLike$class.head(IterableLike.scala:91)
> > >>> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> > >>> at
> > >>>
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:170)
> > >>> at
> > >>>
> >
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:160)
> > >>> at
> > >>>
> >
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> > >>> at
> > scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> > >>> at
> kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:160)
> > >>> at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
> > >>> at kafka.admin.TopicCommand.main(TopicCommand.scala)
> > >>>
> > >>>
> > >>> Output from same command on 0.8.1 branch is better, but still same
> > >>> exception:
> > >>>
> > >>> ~/git/oss/kafka [0.8.1|✔]
> > >>> 21:12 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> > >>> 059915

Re: Explicit topic creation and topic metadata availability

2014-10-26 Thread Guozhang Wang
Hi Stevo,

Sorry for the late reply.

Yes, you have to use ZKStringSerializer when initializing zkClient. However
this is not related to key.serializer.class of the producer (not the
KafkaProducer, which is the new producer that does not need any key
serializer any more).

key.serializer.class and value serializer.class are used to specify how to
encode / decode key value bytes of the message, while ZKStringSerializer
specifies how to encode the bytes written in ZK metadata path.

Guozhang

On Wed, Oct 22, 2014 at 5:36 PM, Stevo Slavić  wrote:

> It seems that used ZkSerializer has to be aligned with KafkaProducer
> configured key.serializer.class.
>
> On Thu, Oct 23, 2014 at 1:13 AM, Stevo Slavić  wrote:
>
> > Still have to understand what is going on, but when I set
> > kafka.utils.ZKStringSerializer to be ZkSerializer for ZkClient used in
> > AdminUtils calls, KafkaProducer could see created topic...
> > Default ZkSerializer is
> > org.I0Itec.zkclient.serialize.SerializableSerializer.
> >
> > Kind regards,
> > Stevo Slavic.
> >
> > On Wed, Oct 22, 2014 at 10:03 PM, Stevo Slavić 
> wrote:
> >
> >> Output on trunk is clean too, after clean build:
> >>
> >> ~/git/oss/kafka [trunk|✔]
> >> 22:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> >> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> >> Error while executing topic command next on empty iterator
> >> java.util.NoSuchElementException: next on empty iterator
> >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> >> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> >> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
> >> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> >> at
> >>
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
> >> at
> >>
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
> >> at
> >>
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> >> at
> scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> >> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
> >> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
> >> at kafka.admin.TopicCommand.main(TopicCommand.scala)
> >>
> >> On Wed, Oct 22, 2014 at 9:45 PM, Stevo Slavić 
> wrote:
> >>
> >>> kafka-topics.sh execution, from latest trunk:
> >>>
> >>> ~/git/oss/kafka [trunk|✔]
> >>> 21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> >>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> >>> SLF4J: Class path contains multiple SLF4J bindings.
> >>> SLF4J: Found binding in
> >>>
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> >>> SLF4J: Found binding in
> >>>
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> >>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
> >>> explanation.
> >>> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
> >>> Error while executing topic command next on empty iterator
> >>> java.util.NoSuchElementException: next on empty iterator
> >>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> >>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> >>> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
> >>> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> >>> at
> >>>
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:170)
> >>> at
> >>>
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:160)
> >>> at
> >>>
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> >>> at
> scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> >>> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:160)
> >>> at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
> >>> at kafka.admin.TopicCommand.main(TopicCommand.scala)
> >>>
> >>>
> >>> Output from same command on 0.8.1 branch is better, but still same
> >>> exception:
> >>>
> >>> ~/git/oss/kafka [0.8.1|✔]
> >>> 21:12 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> >>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> >>> Error while executing topic command null
> >>> java.util.NoSuchElementException
> >>> at scala.collection.IterableLike$class.head(IterableLike.scala:101)
> >>> at scala.collection.immutable.Map$EmptyMap$.head(Map.scala:73)
> >>> at
> >>>
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
> >>> at
> >>>
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
> >>> at
> >>>
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
> >>>  

Re: Explicit topic creation and topic metadata availability

2014-10-22 Thread Stevo Slavić
It seems that used ZkSerializer has to be aligned with KafkaProducer
configured key.serializer.class.

On Thu, Oct 23, 2014 at 1:13 AM, Stevo Slavić  wrote:

> Still have to understand what is going on, but when I set
> kafka.utils.ZKStringSerializer to be ZkSerializer for ZkClient used in
> AdminUtils calls, KafkaProducer could see created topic...
> Default ZkSerializer is
> org.I0Itec.zkclient.serialize.SerializableSerializer.
>
> Kind regards,
> Stevo Slavic.
>
> On Wed, Oct 22, 2014 at 10:03 PM, Stevo Slavić  wrote:
>
>> Output on trunk is clean too, after clean build:
>>
>> ~/git/oss/kafka [trunk|✔]
>> 22:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
>> Error while executing topic command next on empty iterator
>> java.util.NoSuchElementException: next on empty iterator
>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
>> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
>> at scala.collection.AbstractIterable.head(Iterable.scala:54)
>> at
>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
>> at
>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
>> at
>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
>> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
>> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>>
>> On Wed, Oct 22, 2014 at 9:45 PM, Stevo Slavić  wrote:
>>
>>> kafka-topics.sh execution, from latest trunk:
>>>
>>> ~/git/oss/kafka [trunk|✔]
>>> 21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
>>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
>>> SLF4J: Class path contains multiple SLF4J bindings.
>>> SLF4J: Found binding in
>>> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
>>> SLF4J: Found binding in
>>> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
>>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
>>> explanation.
>>> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
>>> Error while executing topic command next on empty iterator
>>> java.util.NoSuchElementException: next on empty iterator
>>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
>>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
>>> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
>>> at scala.collection.AbstractIterable.head(Iterable.scala:54)
>>> at
>>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:170)
>>> at
>>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:160)
>>> at
>>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>>> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:160)
>>> at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
>>> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>>>
>>>
>>> Output from same command on 0.8.1 branch is better, but still same
>>> exception:
>>>
>>> ~/git/oss/kafka [0.8.1|✔]
>>> 21:12 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
>>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
>>> Error while executing topic command null
>>> java.util.NoSuchElementException
>>> at scala.collection.IterableLike$class.head(IterableLike.scala:101)
>>> at scala.collection.immutable.Map$EmptyMap$.head(Map.scala:73)
>>> at
>>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
>>> at
>>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
>>> at
>>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
>>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:43)
>>> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
>>> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
>>> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>>>
>>> On Wed, Oct 22, 2014 at 5:30 PM, Guozhang Wang 
>>> wrote:
>>>
 Hello Stevo,

 Your understanding about the configs are correct, and it is indeed wired
 that the producer gets the exception after topic is created. Could you
 use
 the kafka-topics command to check if the leaders exist?

 kafka-topics.sh --zookeeper XXX --topic [topic-name] describe

 Guozhang

 On Wed, Oct 22, 2014 at 5:57 AM, Stevo Slavić 
 wrote:
>>>

Re: Explicit topic creation and topic metadata availability

2014-10-22 Thread Stevo Slavić
Still have to understand what is going on, but when I set
kafka.utils.ZKStringSerializer to be ZkSerializer for ZkClient used in
AdminUtils calls, KafkaProducer could see created topic...
Default ZkSerializer is
org.I0Itec.zkclient.serialize.SerializableSerializer.

Kind regards,
Stevo Slavic.

On Wed, Oct 22, 2014 at 10:03 PM, Stevo Slavić  wrote:

> Output on trunk is clean too, after clean build:
>
> ~/git/oss/kafka [trunk|✔]
> 22:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> Error while executing topic command next on empty iterator
> java.util.NoSuchElementException: next on empty iterator
> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> at
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
> at
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
> at
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>
> On Wed, Oct 22, 2014 at 9:45 PM, Stevo Slavić  wrote:
>
>> kafka-topics.sh execution, from latest trunk:
>>
>> ~/git/oss/kafka [trunk|✔]
>> 21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
>> SLF4J: Class path contains multiple SLF4J bindings.
>> SLF4J: Found binding in
>> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
>> SLF4J: Found binding in
>> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
>> explanation.
>> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
>> Error while executing topic command next on empty iterator
>> java.util.NoSuchElementException: next on empty iterator
>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
>> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
>> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
>> at scala.collection.AbstractIterable.head(Iterable.scala:54)
>> at
>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:170)
>> at
>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:160)
>> at
>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
>> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:160)
>> at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
>> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>>
>>
>> Output from same command on 0.8.1 branch is better, but still same
>> exception:
>>
>> ~/git/oss/kafka [0.8.1|✔]
>> 21:12 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
>> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
>> Error while executing topic command null
>> java.util.NoSuchElementException
>> at scala.collection.IterableLike$class.head(IterableLike.scala:101)
>> at scala.collection.immutable.Map$EmptyMap$.head(Map.scala:73)
>> at
>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
>> at
>> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
>> at
>> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
>> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:43)
>> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
>> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
>> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>>
>> On Wed, Oct 22, 2014 at 5:30 PM, Guozhang Wang 
>> wrote:
>>
>>> Hello Stevo,
>>>
>>> Your understanding about the configs are correct, and it is indeed wired
>>> that the producer gets the exception after topic is created. Could you
>>> use
>>> the kafka-topics command to check if the leaders exist?
>>>
>>> kafka-topics.sh --zookeeper XXX --topic [topic-name] describe
>>>
>>> Guozhang
>>>
>>> On Wed, Oct 22, 2014 at 5:57 AM, Stevo Slavić  wrote:
>>>
>>> > Hello Apache Kafka users,
>>> >
>>> > Using Kafka 0.8.1.1 (single instance with single ZK 3.4.6 running
>>> locally),
>>> > with auto topic creation disabled, in a test I have topic created with
>>> > AdminUtils.createTopic (AdminUtils.topicExists returns true) but

Re: Explicit topic creation and topic metadata availability

2014-10-22 Thread Stevo Slavić
Output on trunk is clean too, after clean build:

~/git/oss/kafka [trunk|✔]
22:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
059915e6-56ef-4b8e-8e95-9f676313a01c --describe
Error while executing topic command next on empty iterator
java.util.NoSuchElementException: next on empty iterator
at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
at scala.collection.IterableLike$class.head(IterableLike.scala:91)
at scala.collection.AbstractIterable.head(Iterable.scala:54)
at
kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
at
kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
at
scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
at kafka.admin.TopicCommand.main(TopicCommand.scala)

On Wed, Oct 22, 2014 at 9:45 PM, Stevo Slavić  wrote:

> kafka-topics.sh execution, from latest trunk:
>
> ~/git/oss/kafka [trunk|✔]
> 21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> SLF4J: Class path contains multiple SLF4J bindings.
> SLF4J: Found binding in
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: Found binding in
> [jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
> explanation.
> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
> Error while executing topic command next on empty iterator
> java.util.NoSuchElementException: next on empty iterator
> at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
> at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
> at scala.collection.IterableLike$class.head(IterableLike.scala:91)
> at scala.collection.AbstractIterable.head(Iterable.scala:54)
> at
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:170)
> at
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:160)
> at
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:160)
> at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>
>
> Output from same command on 0.8.1 branch is better, but still same
> exception:
>
> ~/git/oss/kafka [0.8.1|✔]
> 21:12 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
> 059915e6-56ef-4b8e-8e95-9f676313a01c --describe
> Error while executing topic command null
> java.util.NoSuchElementException
> at scala.collection.IterableLike$class.head(IterableLike.scala:101)
> at scala.collection.immutable.Map$EmptyMap$.head(Map.scala:73)
> at
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
> at
> kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
> at
> scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
> at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:43)
> at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
> at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
> at kafka.admin.TopicCommand.main(TopicCommand.scala)
>
> On Wed, Oct 22, 2014 at 5:30 PM, Guozhang Wang  wrote:
>
>> Hello Stevo,
>>
>> Your understanding about the configs are correct, and it is indeed wired
>> that the producer gets the exception after topic is created. Could you use
>> the kafka-topics command to check if the leaders exist?
>>
>> kafka-topics.sh --zookeeper XXX --topic [topic-name] describe
>>
>> Guozhang
>>
>> On Wed, Oct 22, 2014 at 5:57 AM, Stevo Slavić  wrote:
>>
>> > Hello Apache Kafka users,
>> >
>> > Using Kafka 0.8.1.1 (single instance with single ZK 3.4.6 running
>> locally),
>> > with auto topic creation disabled, in a test I have topic created with
>> > AdminUtils.createTopic (AdminUtils.topicExists returns true) but
>> > KafkaProducer on send request keeps throwing
>> > UnknownTopicOrPartitionException even after 100 retries, both when
>> > topic.metadata.refresh.interval.ms and retry.backoff.ms are left at
>> > defaults, and when customized.
>> >
>> > Am I doing something wrong or is this a known bug?
>> >
>> > How long does it typically take for metadata to be refreshed?
>> > How long does it take for leader to be elected?
>> >
>> > Documentation for retry.backoff.ms states:
>> > "

Re: Explicit topic creation and topic metadata availability

2014-10-22 Thread Stevo Slavić
kafka-topics.sh execution, from latest trunk:

~/git/oss/kafka [trunk|✔]
21:00 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
059915e6-56ef-4b8e-8e95-9f676313a01c --describe
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
[jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in
[jar:file:/Users/d062007/git/oss/kafka/core/build/dependant-libs-2.10.1/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Error while executing topic command next on empty iterator
java.util.NoSuchElementException: next on empty iterator
at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)
at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)
at scala.collection.IterableLike$class.head(IterableLike.scala:91)
at scala.collection.AbstractIterable.head(Iterable.scala:54)
at
kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:170)
at
kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:160)
at
scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:160)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
at kafka.admin.TopicCommand.main(TopicCommand.scala)


Output from same command on 0.8.1 branch is better, but still same
exception:

~/git/oss/kafka [0.8.1|✔]
21:12 $ bin/kafka-topics.sh --zookeeper 127.0.0.1:50194 --topic
059915e6-56ef-4b8e-8e95-9f676313a01c --describe
Error while executing topic command null
java.util.NoSuchElementException
at scala.collection.IterableLike$class.head(IterableLike.scala:101)
at scala.collection.immutable.Map$EmptyMap$.head(Map.scala:73)
at
kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:137)
at
kafka.admin.TopicCommand$$anonfun$describeTopic$1.apply(TopicCommand.scala:127)
at
scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:57)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:43)
at kafka.admin.TopicCommand$.describeTopic(TopicCommand.scala:127)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:56)
at kafka.admin.TopicCommand.main(TopicCommand.scala)

On Wed, Oct 22, 2014 at 5:30 PM, Guozhang Wang  wrote:

> Hello Stevo,
>
> Your understanding about the configs are correct, and it is indeed wired
> that the producer gets the exception after topic is created. Could you use
> the kafka-topics command to check if the leaders exist?
>
> kafka-topics.sh --zookeeper XXX --topic [topic-name] describe
>
> Guozhang
>
> On Wed, Oct 22, 2014 at 5:57 AM, Stevo Slavić  wrote:
>
> > Hello Apache Kafka users,
> >
> > Using Kafka 0.8.1.1 (single instance with single ZK 3.4.6 running
> locally),
> > with auto topic creation disabled, in a test I have topic created with
> > AdminUtils.createTopic (AdminUtils.topicExists returns true) but
> > KafkaProducer on send request keeps throwing
> > UnknownTopicOrPartitionException even after 100 retries, both when
> > topic.metadata.refresh.interval.ms and retry.backoff.ms are left at
> > defaults, and when customized.
> >
> > Am I doing something wrong or is this a known bug?
> >
> > How long does it typically take for metadata to be refreshed?
> > How long does it take for leader to be elected?
> >
> > Documentation for retry.backoff.ms states:
> > "Before each retry, the producer refreshes the metadata of relevant
> topics
> > to see if a new leader has been elected. Since leader election takes a
> bit
> > of time, this property specifies the amount of time that the producer
> waits
> > before refreshing the metadata."
> >
> > Do I understand this docs correctly - on failure to send a message, such
> as
> > unknown topic, if retries are configured producer will wait for
> configured
> > retry.backoff.ms, then it will initiate and wait for metadata refresh to
> > complete, and only then retry sending?
> >
> > Kind regards,
> > Stevo Slavic.
> >
>
>
>
> --
> -- Guozhang
>


Re: Explicit topic creation and topic metadata availability

2014-10-22 Thread Guozhang Wang
Hello Stevo,

Your understanding about the configs are correct, and it is indeed wired
that the producer gets the exception after topic is created. Could you use
the kafka-topics command to check if the leaders exist?

kafka-topics.sh --zookeeper XXX --topic [topic-name] describe

Guozhang

On Wed, Oct 22, 2014 at 5:57 AM, Stevo Slavić  wrote:

> Hello Apache Kafka users,
>
> Using Kafka 0.8.1.1 (single instance with single ZK 3.4.6 running locally),
> with auto topic creation disabled, in a test I have topic created with
> AdminUtils.createTopic (AdminUtils.topicExists returns true) but
> KafkaProducer on send request keeps throwing
> UnknownTopicOrPartitionException even after 100 retries, both when
> topic.metadata.refresh.interval.ms and retry.backoff.ms are left at
> defaults, and when customized.
>
> Am I doing something wrong or is this a known bug?
>
> How long does it typically take for metadata to be refreshed?
> How long does it take for leader to be elected?
>
> Documentation for retry.backoff.ms states:
> "Before each retry, the producer refreshes the metadata of relevant topics
> to see if a new leader has been elected. Since leader election takes a bit
> of time, this property specifies the amount of time that the producer waits
> before refreshing the metadata."
>
> Do I understand this docs correctly - on failure to send a message, such as
> unknown topic, if retries are configured producer will wait for configured
> retry.backoff.ms, then it will initiate and wait for metadata refresh to
> complete, and only then retry sending?
>
> Kind regards,
> Stevo Slavic.
>



-- 
-- Guozhang