Magnus Reftel created KAFKA-5359:
------------------------------------

             Summary: Exceptions from RequestFuture lack parts of the stack 
trace
                 Key: KAFKA-5359
                 URL: https://issues.apache.org/jira/browse/KAFKA-5359
             Project: Kafka
          Issue Type: Bug
          Components: clients
            Reporter: Magnus Reftel
            Priority: Minor


When an exception occurs within a task that reports its result using a 
RequestFuture, that exception is stored in a field on the RequestFuture using 
the {{raise}} method. In many places in the code where such futures are 
completed, that exception is then thrown directly using {{throw 
future.exception();}} (see e.g. 
[Fetcher.getTopicMetadata|https://github.com/apache/kafka/blob/aebba89a2b9b5ea6a7cab2599555232ef3fe21ad/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Fetcher.java#L316]).
This means that the exception that ends up in client code only has stack traces 
related to the original exception, but nothing leading up to the completion of 
the future. The client therefore gets no indication of what was going on in the 
client code - only that it somehow ended up in the Kafka libraries, and that a 
task failed at some point.
One solution to this is to use the exceptions from the future as causes for 
chained exceptions, so that the client gets a stack trace that shows what the 
client was doing, in addition to getting the stack traces for the exception in 
the task.



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

Reply via email to