Yeah, we should mention that in the javadoc. Want to send a PR?

I like the "worse is better" philosophy - although we occasionally
choose complex implementation for simpler APIs (especially when it
comes to admin configurations).

On Tue, Nov 8, 2016 at 2:34 AM, Paul Mackles <pmack...@adobe.com> wrote:
> Hi Gwen - Makes sense. The way you explain it actually reminds me a little of 
> the "worse is better" philosophy: https://www.jwz.org/doc/worse-is-better.html
>
>
> Perhaps a mention in the javadoc for pause() and/or ConsumerRebalanceListener 
> would be sufficient.
>
> ________________________________
> From: Gwen Shapira <g...@confluent.io>
> Sent: Monday, November 07, 2016 3:34:39 PM
> To: Users
> Subject: Re: consumer client pause/resume/rebalance
>
> I think the current behavior is fairly reasonable. Following a
> rebalance the entire state of the consumer changes - you may get an
> entirely new set of partitions. A common use-case for pause is to
> allow a consumer to keep polling and avoid getting new events while it
> is retrying to process existing events - well, following a rebalance,
> it is possible that another consumer owns the partition, is already
> re-processing these events and the entire state needs to be reset.
>
> I usually recommend developers to treat rebalance as a restart (since
> you are getting a whole new set of partitions) and just follow
> whatever process you'd follow to set up after a restart. Since pauses
> don't survive restarts, I wouldn't expect them to survive a rebalance
> either.
>
> I hope this helps explain the behavior?
>
> On Mon, Nov 7, 2016 at 9:53 AM, Paul Mackles <pmack...@adobe.com> wrote:
>> Using the  v0.9.0.1 consumer API, I recently learned that paused partitions 
>> can unexpectedly become become unpaused during a rebalance. I also found an 
>> old thread from the mailing list which corroborates this behavior:
>>
>>
>> http://grokbase.com/t/kafka/users/161wgzckze/new-consumer-pause-reset-behaviour
>>
>>
>> <http://grokbase.com/t/kafka/users/161wgzckze/new-consumer-pause-reset-behaviour>While
>>  I can maintain the partition state myself, it seems like it would be a lot 
>> easier if this were either handled internally by the consumer API (i.e. 
>> pause the partitions that were previously paused before resuming) and/or 
>> make the partition state available to the RebalanceListener.
>>
>>
>> I did not find any existing tickets in JIRA related to this so I am 
>> wondering if this is a valid bug/enhancement or if someone found a decent 
>> workaround. All of the consumer API examples that I have found do not appear 
>> to handle this scenario.
>>
>>
>> Here is the code snippet from he client I have been working on:
>>
>>
>> consumer.pause(consumer.assignment().toArray(EMPTYTPARRAY));
>>
>> while (!isWritable()) {
>>   // WARNING: if there is a rebalance, this call may return some records!!!
>>   consumer.poll(0);
>>   Uninterruptibles.sleepUninterruptibly(pauseWait, TimeUnit.MILLISECONDS);
>> }
>>
>> consumer.resume(consumer.assignment().toArray(EMPTYTPARRAY));
>>
>>
>> Thanks,
>>
>> Paul
>>
>>
>>
>
>
>
> --
> Gwen Shapira
> Product Manager | Confluent
> 650.450.2760 | @gwenshap
> Follow us: Twitter | blog



-- 
Gwen Shapira
Product Manager | Confluent
650.450.2760 | @gwenshap
Follow us: Twitter | blog

Reply via email to