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

Coen Damen commented on KAFKA-6471:
-----------------------------------

Hi Jason, thanks for your reply.

The Use Case is the following.

We are retrieving log files from a machine. These log records are transformed 
into Kafka messages. Writing a log file into Kafka is atomic. In case of a read 
failure (of a file) or a write failure (to Kafka), the transaction of writing 
messages to Kafka should be aborted an tried again.

When tried again, or when idle for a longer time, during a restart or 
commencing of the "job" we want to read where the processing was halted. e.g. 
the last successfully processed file. For this I expected to use the seekToEnd 
with a Consumer that has the setting read_committed. But, it moved to the end 
of the Topic, even after the Topic contained many aborted messages at the end.

Thank you,

Coen

 

> seekToEnd and seek give unclear results for Consumer with read_committed 
> isolation level
> ----------------------------------------------------------------------------------------
>
>                 Key: KAFKA-6471
>                 URL: https://issues.apache.org/jira/browse/KAFKA-6471
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 1.0.0
>            Reporter: Coen Damen
>            Priority: Major
>
> I am using the transactional KafkaProducer to send messages to a topic. This 
> works fine. I use a KafkaConsumer with read_committed isolation level and I 
> have an issue with the seek and seekToEnd methods. According to the 
> documentation, the seek and seekToEnd methods give me the LSO (Last Stable 
> Offset). But this is a bit confusing. As it gives me always the same value, 
> the END of the topic. No matter if the last entry is committed (by the 
> Producer) or part of an aborted transaction. Example, after I abort the last 
> 5 tries to insert 20_000 messages, the last 100_000 records should not be 
> read by the Consumer. But during a seekToEnd it moves to the end of the Topic 
> (including the 100_000 messages). But the poll() does not return them.
> I am looking for a way to retrieve the Last Committed Offset (so the last 
> successful committed message by the Producer). There seems to be no proper 
> API method for this. So do I need to roll my own?
> Option would be to move back and poll until no more records are retrieved, 
> this would result in the last committed message. But I would assume that 
> Kafka provides this method.
> We use Kafka 1.0.0.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to