You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Damian Guy (JIRA)" <ji...@apache.org> on 2016/06/14 12:22:01 UTC

[jira] [Updated] (KAFKA-3835) Streams is creating two ProducerRecords for each send via RecordCollector

     [ https://issues.apache.org/jira/browse/KAFKA-3835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Damian Guy updated KAFKA-3835:
------------------------------
    Description: 
The RecordCollector.send(..) method below, currently receives a ProducerRecord from its caller and then creates another one to forward on to its producer.  The creation of 2 ProducerRecords should be removed.
{code}
public <K, V> void send(ProducerRecord<K, V> record, Serializer<K> keySerializer, Serializer<V> valueSerializer,
                            StreamPartitioner<K, V> partitioner)
{code}

We could replace the above method with
{code}
public <K, V> void send(K key,
                            V value,
                            String topic,
                            Integer partition,
                            Long timestamp,
                            Serializer<K> keySerializer,
                            Serializer<V> valueSerializer,
                            StreamPartitioner<K, V> partitioner)
{code}

This change should possibly also change StateChangeLogger to pass through the context.timestamp() of the original message.

  was:
The RecordCollector.send(..) method below, currently receives a ProducerRecord from its caller and then creates another one to forward on to its producer.  The creation of 2 ProducerRecords could be removed by having the calling code create the correct ProducerRecord, i.e, by serializing the key & value with the serializers and assigning the partition. The caller already has all of the information it needs 
{code}
public <K, V> void send(ProducerRecord<K, V> record, Serializer<K> keySerializer, Serializer<V> valueSerializer,
                            StreamPartitioner<K, V> partitioner)
{code}


> Streams is creating two ProducerRecords for each send via RecordCollector
> -------------------------------------------------------------------------
>
>                 Key: KAFKA-3835
>                 URL: https://issues.apache.org/jira/browse/KAFKA-3835
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 0.10.0.0
>            Reporter: Damian Guy
>            Assignee: Guozhang Wang
>            Priority: Minor
>             Fix For: 0.10.1.0
>
>
> The RecordCollector.send(..) method below, currently receives a ProducerRecord from its caller and then creates another one to forward on to its producer.  The creation of 2 ProducerRecords should be removed.
> {code}
> public <K, V> void send(ProducerRecord<K, V> record, Serializer<K> keySerializer, Serializer<V> valueSerializer,
>                             StreamPartitioner<K, V> partitioner)
> {code}
> We could replace the above method with
> {code}
> public <K, V> void send(K key,
>                             V value,
>                             String topic,
>                             Integer partition,
>                             Long timestamp,
>                             Serializer<K> keySerializer,
>                             Serializer<V> valueSerializer,
>                             StreamPartitioner<K, V> partitioner)
> {code}
> This change should possibly also change StateChangeLogger to pass through the context.timestamp() of the original message.



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