You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Stephan Ewen (Jira)" <ji...@apache.org> on 2019/09/11 07:33:00 UTC

[jira] [Commented] (FLINK-14034) In FlinkKafkaProducer, KafkaTransactionState should be made public or invoke should be made final

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

Stephan Ewen commented on FLINK-14034:
--------------------------------------

I agree, to make things clear, the current design, {{invoke()}} should be final.
Exposing the transaction state might be a bit fragile in the current state.

Can you share a bit more about the use case? What do you plan to do in the sink that would not work in a {{MapFunction}}?



> In FlinkKafkaProducer, KafkaTransactionState should be made public or invoke should be made final
> -------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-14034
>                 URL: https://issues.apache.org/jira/browse/FLINK-14034
>             Project: Flink
>          Issue Type: Wish
>          Components: Connectors / Kafka
>    Affects Versions: 1.9.0
>            Reporter: Niels van Kaam
>            Priority: Trivial
>
> It is not possible to override the invoke method of the FlinkKafkaProducer, because the first parameter, KafkaTransactionState, is a private inner class.  It is not possible to override the original invoke of SinkFunction, because TwoPhaseCommitSinkFunction (which is implemented by FlinkKafkaProducer) does override the original invoke method with final.
> [https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-kafka/src/main/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducer.java]
> If there is a particular reason for this, it would be better to make the invoke method in FlinkKafkaProducer final as well, and document the reason such that it is clear this is by design (I don't see any overrides in the same package).
> Otherwise, I would make the KafkaTransactionState publicly visible. I would like to override the Invoke method to create a custom KafkaProducer which performs some additional generic validations and transformations. (which can also be done in a process-function, but a custom sink would simplify the code of jobs)
>  



--
This message was sent by Atlassian Jira
(v8.3.2#803003)