opentracing-contrib / java-kafka-client

OpenTracing Instrumentation for Apache Kafka Client
Apache License 2.0
125 stars 64 forks source link

HeadersMapInjectAdapter wastes space in headers #88

Open william-tran opened 3 years ago

william-tran commented 3 years ago

https://github.com/opentracing-contrib/java-kafka-client/blob/release-0.1.15/opentracing-kafka-client/src/main/java/io/opentracing/contrib/kafka/HeadersMapInjectAdapter.java#L38

@Override
public void put(String key, String value) {    
    headers.add(key, value.getBytes(StandardCharsets.UTF_8));
}

This just appends headers to the end of the list, and inject can happen repeatedly in processing a message. With baggage, this can result it a lot of repeated data.

We could instead headers.remove(key).add(key, value.getBytes(StandardCharsets.UTF_8)); which trades an iteration over all headers and potential arraylist removals for each key.