Xavier Léauté created KAFKA-5006:
------------------------------------

             Summary: KeyValueStore.put may throw exception unrelated to the 
current put attempt
                 Key: KAFKA-5006
                 URL: https://issues.apache.org/jira/browse/KAFKA-5006
             Project: Kafka
          Issue Type: Bug
          Components: streams
    Affects Versions: 0.10.2.0, 0.10.1.0, 0.10.0.0
            Reporter: Xavier Léauté


It is possible for {{KeyValueStore.put(K key, V value)}} to throw an exception 
unrelated to the store in question. Due to [the way that 
{{RecordCollector.send}} is currently 
implemented|https://github.com/confluentinc/kafka/blob/3.2.x/streams/src/main/java/org/apache/kafka/streams/processor/internals/RecordCollectorImpl.java#L76]
the exception thrown would be for any previous record produced by the stream 
task, possibly for a completely unrelated topic the same task is producing to.

This can be very confusing for someone attempting to correctly handle 
exceptions thrown by put(), as they would not be able to add any additional 
debugging information to understand the operation that caused the problem. 
Worse, such logging would likely confuse the user, since they might mislead 
themselves into thinking the changelog record created by calling put() caused 
the problem.

Given that there is likely no way for the user to recover from an exception 
thrown by an unrelated produce request, it is questionable whether we should 
even try to raise the exception at this level. A short-term fix would be to 
simply delegate this exception to the uncaught exception handler.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to