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