kafka-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Xavier Léauté (JIRA) <j...@apache.org>
Subject [jira] [Created] (KAFKA-5006) KeyValueStore.put may throw exception unrelated to the current put attempt
Date Mon, 03 Apr 2017 21:33:41 GMT
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)

Mime
View raw message