Did you put transaction markers into account?

Each time a transaction is committed or aborted, a commit or abort
marker is written that occupies one offset.


-Matthias


On 10/17/19 8:38 AM, Ludwig Schmid wrote:
> Hello,
> 
> in an application I use a producer and a consumer. The consumer polls data 
> from the same topic (replication-factor 1) the producer sends to. The 
> producer works transactional and within a transaction
> the producer sends records to the topic and also sends offsets. The 
> application looks something like this:
> 
> consumer.poll(Duration)
> // Do some processing with polled records
> producer.beginTransaction();
> producer.send(new ProducerRecord<>(...));
> producer.sendOffsetsToTransaction(offsets, GROUP_ID);
> producer.commitTransaction();
> 
> Call to consumer.committed(topicPartition) and 
> consumer.endOffset(topicPartition) immediately after the 
> producer.commitTransaction() do not return the expected values.
> For example, the produced record has offset 36, returned end offset is 31. 
> The sendOffsetToTransactio is 28, returned committed offset is 24. However in 
> the next loop, the commited offset returned is 28.
> 
> This looks strange to me, since, according to the docs, the transactional 
> APIs are blocking. Therefore I would be happy, if you could explain the 
> described behavior.
> 
> Kafka version: kafka_2.12-2.1.0
> 
> Thank you in advandce,
> Ludwig
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to