You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Tom Bentley (Jira)" <ji...@apache.org> on 2021/03/01 12:10:00 UTC

[jira] [Commented] (KAFKA-8946) Single byte header issues WARN logging

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

Tom Bentley commented on KAFKA-8946:
------------------------------------

I think this is a bug in org.apache.kafka.connect.data.Values#parse which should be fixed. Even if the input is not something it can parse it should be throwing a DataException rather than StringIndexOutOfBoundsException.

> Single byte header issues WARN logging
> --------------------------------------
>
>                 Key: KAFKA-8946
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8946
>             Project: Kafka
>          Issue Type: Improvement
>          Components: KafkaConnect
>    Affects Versions: 2.3.0
>            Reporter: Henning Treu
>            Priority: Minor
>
> Setting a single byte header like
> {code:java}
> headers.add("MY_CUSTOM_HEADER", new byte[] { 1 });
> {code}
> will cause a WARN message with full stack trace:
> {code:java}
> [2019-08-29 06:27:40,599] WARN Failed to deserialize value for header 'MY_CUSTOM_HEADER' on topic '<my_kafka_topic>', so using byte array (org.apache.kafka.connect.storage.SimpleHeaderConverter)
> java.lang.StringIndexOutOfBoundsException: String index out of range: 0
> at java.lang.String.charAt(String.java:658)
> at org.apache.kafka.connect.data.Values.parse(Values.java:816)
> at org.apache.kafka.connect.data.Values.parseString(Values.java:373)
> at org.apache.kafka.connect.storage.SimpleHeaderConverter.toConnectHeader(SimpleHeaderConverter.java:64)
> at org.apache.kafka.connect.runtime.WorkerSinkTask.convertHeadersFor(WorkerSinkTask.java:501)
> at org.apache.kafka.connect.runtime.WorkerSinkTask.convertMessages(WorkerSinkTask.java:469)
> at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:301)
> at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:205)
> at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:173)
> at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:170)
> at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:214)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> {code}
> Since Kafka will continue with the headers as 
> {code:java}
> Schema.BYTES_SCHEMA
> {code}
>  the warning seems a little harsh.
> There are two options:
> # Handle none-String header values explicitly
> # Drop the stacktrace logging and put it to an extra DEBUG log



--
This message was sent by Atlassian Jira
(v8.3.4#803005)