Hello Kafka!

I'm using Flink with a Kafka and seeing an edge case that I'm hoping to get 
some help to find the source code that would explain!

In the Flink setup, I have a transactional producer that's regularly committing 
transactions with a consistent transactional ID. But all these transactions 
have no data records written into them.
Based on my understanding according to the transactions design doc. After 
transactional.id.expiration.ms has passed, because there have been transactions 
committed regularly, the transactional id should not expire, and the 
transactionalId mapping would contain the PID.
But since there is no record written for that producer, it's possible that the 
PID is expired.

We are seeing endTxnRequests failing with invalidMappingException. But looking 
from the source code, since the transactional id entry should still exist. I 
don't see why this could be the reason that an InvalidMappingException is 
thrown.

My questions are:

  1.  Is it correct that if transactions are being regularly committed, 
transactional id should not expire even if there is no data written by the 
producer?
  2.  what failures can be triggered when a transactional id has NOT expired, 
but the associated producer id has expired?
  3.  Do the expiration of producer id trigger a cleanup task to remove the 
transactional id entry from the PID snapshot file?

Thank you!

Reply via email to