[ 
https://issues.apache.org/jira/browse/KAFKA-2100?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14640448#comment-14640448
 ] 

David Jacot commented on KAFKA-2100:
------------------------------------

I have looked at how Errors are used in the java client and I see mainly two 
options for preserving original error code:

1. We could modify Errors to not default to UNKNOWN and returns an error which 
preserves the original error code.
2. We could log a warning message when a lookup is made with an unknown error 
code.

Option 1 requires a refactoring of the Errors enum as it is not possible to 
create an new entry at runtime. One way would be to replace the enum by a class 
which defines static constants for each error. I think that it is quite clean 
approach but it is a bit less readable. Also, I'm wondering if not defaulting 
to UNKNOWN could impact logic of the client, for instance, if a retry is done 
based on an UNKNOWN error. I have attached a rough patch which show this. All 
tests pass with it.

Option 2 doesn't require any changes in the code base and will warn the end 
user.

I'm wondering how often this happens? Error codes are defined in the protocol 
so mapping between the client and the server (assuming they use the same 
version) should be one to one.

I would be happy to have any feedback/advice on how to move forward with this. 
[~gwenshap] Is it what you had in mind?

While reading the code of the client, I have noticed that few different ways 
are used to handle error codes. Mainly, the are keep as numerical values, and 
sometimes, they are converted to Errors. Would it be better to stay consistent 
and stick to one way or the other?

> Client Error doesn't preserve or display original server error code when it 
> is an unknown code
> ----------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-2100
>                 URL: https://issues.apache.org/jira/browse/KAFKA-2100
>             Project: Kafka
>          Issue Type: Bug
>          Components: clients
>            Reporter: Gwen Shapira
>            Assignee: David Jacot
>              Labels: newbie
>         Attachments: KAFKA-2100-1.patch
>
>
> When the java client receives an unfamiliar error code, it translates it into 
> UNKNOWN(-1, new UnknownServerException("The server experienced an unexpected 
> error when processing the request"))
> This completely loses the original code, which makes troubleshooting from the 
> client impossible. 
> Will be better to preserve the original code and write it to the log when 
> logging the error.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to