[ 
https://issues.apache.org/jira/browse/KAFKA-2123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14619432#comment-14619432
 ] 

Jason Gustafson commented on KAFKA-2123:
----------------------------------------

[~ewencp], [~guozhang], apologies for the big commit, but I saw an opportunity 
to consolidate some of the features from Ewen's previous patch with those 
introduced in KAFKA-2168 into a general ConsumerNetworkClient. This allowed me 
to push the retry logic that spilled into KafkaConsumer back into Coordinator 
and Fetcher while still ensuring that consumer.wakeup() would continue to work 
and scheduled tasks (such as auto-commits and heartbeats) would get executed at 
the right time regardless of where the thread of execution was. I have not, 
however, preserved the commit queue from Ewen's initial patches, but we can 
bring it back if we think it adds a lot of value.

> Make new consumer offset commit API use callback + future
> ---------------------------------------------------------
>
>                 Key: KAFKA-2123
>                 URL: https://issues.apache.org/jira/browse/KAFKA-2123
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: clients, consumer
>            Reporter: Ewen Cheslack-Postava
>            Assignee: Ewen Cheslack-Postava
>            Priority: Critical
>             Fix For: 0.8.3
>
>         Attachments: KAFKA-2123.patch, KAFKA-2123.patch, 
> KAFKA-2123_2015-04-30_11:23:05.patch, KAFKA-2123_2015-05-01_19:33:19.patch, 
> KAFKA-2123_2015-05-04_09:39:50.patch, KAFKA-2123_2015-05-04_22:51:48.patch, 
> KAFKA-2123_2015-05-29_11:11:05.patch
>
>
> The current version of the offset commit API in the new consumer is
> void commit(offsets, commit type)
> where the commit type is either sync or async. This means you need to use 
> sync if you ever want confirmation that the commit succeeded. Some 
> applications will want to use asynchronous offset commit, but be able to tell 
> when the commit completes.
> This is basically the same problem that had to be fixed going from old 
> consumer -> new consumer and I'd suggest the same fix using a callback + 
> future combination. The new API would be
> Future<Void> commit(Map<TopicPartition, Long> offsets, ConsumerCommitCallback 
> callback);
> where ConsumerCommitCallback contains a single method:
> public void onCompletion(Exception exception);
> We can provide shorthand variants of commit() for eliding the different 
> arguments.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to