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

Dong Lin commented on KAFKA-2390:
---------------------------------

[~nehanarkhede]Sure! Let me explain my understanding here. BTW, we have had 
extended discussion on this with [~hachikuji] and [~ewencp] at 
https://github.com/apache/kafka/pull/118

While seek() is meant to update an internal fetch position for use in the next 
poll(), users may not know this internal implementation fact and may expect 
seek() to be successfully applied after it returns. If the position in seek() 
is out of range, a default policy, e.g. latest, may be applied while leaving 
user unaware of this. We find it may be useful to give user the option of 
getting alerted when the position to seek is invalid.

We also discussed whether we need callback in seek() if we have a listener for 
out-of-range exception. Here is a usecase where callback in seek() can be 
useful. I will copy&past it from github discussion:

"An out-of-range exception can happen for one of the three reasons: 1) invalid 
offset in seek, 2) unclean leader election, and 3) consumer lags behind too 
much. One reasonable strategy that I envision is that, consumer will throw 
exception and quit for 1), reset offset to latest for 2), and reset offset to 
earliest for 3). Such a strategy can be implemented using a combination of 
ConsumerSeekCallback and ConsumerListener, but not with ConsumerListener alone."

Does it make sense? Thanks for discussion.


> Seek() should take a callback.
> ------------------------------
>
>                 Key: KAFKA-2390
>                 URL: https://issues.apache.org/jira/browse/KAFKA-2390
>             Project: Kafka
>          Issue Type: Sub-task
>            Reporter: Jiangjie Qin
>            Assignee: Dong Lin
>
> Currently seek is an async call. To have the same interface as other calls 
> like commit(), seek() should take a callback. This callback will be invoked 
> if the position to seek triggers OFFSET_OUT_OF_RANGE exception from broker.



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

Reply via email to