We're using the Kafka Streams processor API and directly performing get() and 
put() on two different state stores (KeyValueStore) from a single processor. If 
two puts are performed from one processor, e.g.:

1. store1.put(...)
2. store2.put(...)

my understanding is that if processing.guarantee="at_least_once", it is 
possible that the commit from 1. succeeds but the commit from 2. fails (or vice 
versa). And if we need to guarantee that either both or neither succeed, we 
need to enable processing.guarantee="exactly_once". I believe the relevant code 
is here: 
https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/processor/internals/StreamTask.java#L547

Is my understanding correct?

Thanks,
Alex

Reply via email to