You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@kafka.apache.org by Stevo Slavić <ss...@gmail.com> on 2015/07/22 11:09:18 UTC

New consumer - partitions auto assigned only on poll

Hello Apache Kafka community,

In the new consumer I encountered unexpected behavior. After constructing
KafakConsumer instance with configured consumer rebalance callback handler,
and subscribing to a topic with "consumer.subscribe(topic)", retrieving
subscriptions would return empty set and callback handler would not get
called (no partitions ever assigned or revoked), no matter how long
instance was up.

Then I found by inspecting KafkaConsumer code that partition assignment
will only be triggered on first poll, pollOnce has:

// ensure we have partitions assigned if we expect to
if (subscriptions.partitionsAutoAssigned())
    coordinator.ensurePartitionAssignment();

Would it make sense to include this fragment in KafkaConsumer.subscriptions
accessor as well?

Kind regards,
Stevo Slavic.

Re: New consumer - partitions auto assigned only on poll

Posted by Stevo Slavić <ss...@gmail.com>.
Hello Jason,

Thanks for feedback. I've created ticket for this
https://issues.apache.org/jira/browse/KAFKA-2359

Kind regards,
Stevo Slavic.

On Wed, Jul 22, 2015 at 6:18 PM, Jason Gustafson <ja...@confluent.io> wrote:

> Hey Stevo,
>
> That's a good point. I think the javadoc is pretty clear that this could
> return no partitions when the consumer has no active assignment, but it may
> be a little unintuitive to have to call poll() after subscribing before you
> can get the assigned partitions. I can't think of a strong reason not to go
> ahead with the assignment in subscriptions() other than to keep it
> non-blocking. Perhaps you can open a ticket and we can get feedback from
> some other devs?
>
> Thanks,
> Jason
>
> On Wed, Jul 22, 2015 at 2:09 AM, Stevo Slavić <ss...@gmail.com> wrote:
>
> > Hello Apache Kafka community,
> >
> > In the new consumer I encountered unexpected behavior. After constructing
> > KafakConsumer instance with configured consumer rebalance callback
> handler,
> > and subscribing to a topic with "consumer.subscribe(topic)", retrieving
> > subscriptions would return empty set and callback handler would not get
> > called (no partitions ever assigned or revoked), no matter how long
> > instance was up.
> >
> > Then I found by inspecting KafkaConsumer code that partition assignment
> > will only be triggered on first poll, pollOnce has:
> >
> > // ensure we have partitions assigned if we expect to
> > if (subscriptions.partitionsAutoAssigned())
> >     coordinator.ensurePartitionAssignment();
> >
> > Would it make sense to include this fragment in
> KafkaConsumer.subscriptions
> > accessor as well?
> >
> > Kind regards,
> > Stevo Slavic.
> >
>

Re: New consumer - partitions auto assigned only on poll

Posted by Jason Gustafson <ja...@confluent.io>.
Hey Stevo,

That's a good point. I think the javadoc is pretty clear that this could
return no partitions when the consumer has no active assignment, but it may
be a little unintuitive to have to call poll() after subscribing before you
can get the assigned partitions. I can't think of a strong reason not to go
ahead with the assignment in subscriptions() other than to keep it
non-blocking. Perhaps you can open a ticket and we can get feedback from
some other devs?

Thanks,
Jason

On Wed, Jul 22, 2015 at 2:09 AM, Stevo Slavić <ss...@gmail.com> wrote:

> Hello Apache Kafka community,
>
> In the new consumer I encountered unexpected behavior. After constructing
> KafakConsumer instance with configured consumer rebalance callback handler,
> and subscribing to a topic with "consumer.subscribe(topic)", retrieving
> subscriptions would return empty set and callback handler would not get
> called (no partitions ever assigned or revoked), no matter how long
> instance was up.
>
> Then I found by inspecting KafkaConsumer code that partition assignment
> will only be triggered on first poll, pollOnce has:
>
> // ensure we have partitions assigned if we expect to
> if (subscriptions.partitionsAutoAssigned())
>     coordinator.ensurePartitionAssignment();
>
> Would it make sense to include this fragment in KafkaConsumer.subscriptions
> accessor as well?
>
> Kind regards,
> Stevo Slavic.
>