Hi, There are some typos in my last email, although hopefully I made myself clear with the context, sorry about that:
FLIP-179 -> FLIP-197 FlinkKafkaConsumer -> FlinkKafkaProducer Best regards, Jing On Thu, Jan 19, 2023 at 5:30 AM Jing Ge <j...@ververica.com> wrote: > Hi, > > Thanks Martijn for bringing this to our attention. This > discussion deserves a much wider range of attention. because graduation of > the Sink API will have an impact on all connectors. > > For me, briefly speaking, like I already pointed out in another thread > [1], it is too hasty and risky to do it in 1.17 and even in 1.18. Here are > some reasons I knew and there might be more: > > 1. commonly, it is fine to follow FLIP-179 [2], since most API has only > one implementation. Two release cycles for @PublicEvolving should be good > enough to test the API design and implementation and get feedback and make > the API stable. But, Connector API (including the Sink API) is a special > case. There will be more than 10 different implementations, Some of them > are very important for Flink users' daily work. Rules defined in FLIP-179 > should be adapted in this case. > > 2. Currently, afaik, there are only two Sink API implementations and none > of them is graduated. KafkaSink is @PublicEvloving and FileSink > is @Experimental. It is very risky to graduate the fundamental Sink API > before none of its implementation has been graduated. > > 3. We have an awkward situation with one of the most important connectors, > the Kafka connector. The KafakSink is @PublicEvolving but the > FlinkKafkaConsumer is already deprecated. Users are confused and some of > them are still sticking to FlinkKafkaConsumer, since it is normally not > recommended to use @PublicEvolving in production. I tried to graduate the > KafkaSink and remove the FlinkKafkaProducer to push users using KafkaSink > in this thread [3]. But there are some tasks to finish as a prerequisite. > Things got more complicated as expected and some new rules > need to be defined and discussed. I will write a new FLIP to address this > issue later. > > 4. Even if we could graduate the Kafka connector, it is still risky to > graduate the SinkV2 API, which will make the Kafka connector special > comparing to others, i.e. kafka connector as the first class vs. others as > the second class. This is not what we want to see. > > 5. Afaik, there are still some fresh construction wrt the SinkV2 @Yun Gao > <yungao...@aliyun.com> > > 6. Flink wants to be the unified batch and stream processing framework. It > might be rational, if a more batch oriented Sink implementation could be > done and graduated before we graduate the Sink API. The JDBC connector > might be a feasible choice. > > Therefore, a solid solution should be: > > 1. Develop three SinkV2 implementations. Considering batch, stream, > popularity, etc. I personally would choose Kafka, File, and JDBC. But the > list deserves further discussion. > 2. graduate all three SinkV2 implementations and remove old > implementations. If there are any rejections in the community for removing > the old implementation. It means the related SinkV2 implementation is not > ready to graduate. We will need more time. > 3. 1 - 2 release cycles to get feedback from users wrt those SinkV2 > implementations. > 3. graduate the SinkV2 API. > > Now we could see, if we could find developers focusing on them and deliver > them on time, we would still need at least 4 release cycles before we > could graduate the Sink API. > > If we want to pace up and could live with some risk, we could go with the > following process: > > 1. Remove FlinkKafkaProucer and graduate KafkaSink in Flink 1.18 in the > ideal case. > 2. Get feedback and stabilize the API while we continue working on Flink > and release 1.19 > 3. granduate the Sink API in Flink 1.20 > 4. be aware that we might have to develop SinkV3 if any unknown > requirements become known after new Sink implementation is developed. > > Please pay attention, this process is still hasty and risky. Because it > only satisfied Kafka and might have a big impact on other connectors, i.e. > we are treating the Kafka connector as the king. > > Please don't get me wrong. I am not trying to block this change. On the > contrary, I am keen to graduate SinkV2 API and remove old API and > implementations. But I think it is important to be aware of the risk and > make sure everyone is on the same page. There might be some other > information I don't know and I am happy to hear any opposite opinions that > can push the SinkV2 API to be graduated asap. > > Last but not least, this discussion starts during the holiday season in > China. @Qingsheng Ren <renqs...@gmail.com> @Jark Wu <imj...@gmail.com> I > would like to have your attention please. > > Best regards, > Jing > > > [1] https://lists.apache.org/thread/l05m6cf8fwkkbpnjtzbg9l2lo40oxzd1 > [2] > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-197%3A+API+stability+graduation+process > [3] https://lists.apache.org/thread/m3o48c2d8j9g5t9s89hqs6qvr924s71o > > On Thu, Jan 19, 2023 at 3:26 AM Lijie Wang <wangdachui9...@gmail.com> > wrote: > >> Hi Martijn, >> >> Thanks for driving this. I have a only concern about the Sink.InitContext. >> >> Does the Sink.InitContext will also be changed to @Public ? As described >> in >> FLIP-287, currently the Sink.InitContext still lacks some necessary >> information to migrate existing connectors to new sinks. If it is marked >> as >> public/stable, we can no longer modify it in the future(since most >> connectors are not migrated to SinkV2 currently, we may find we need more >> information via InitContext in the future migrations). >> >> Best, >> Lijie >> >> Yun Tang <myas...@live.com> 于2023年1月18日周三 21:13写道: >> >> > SinkV2 was introduced in Flink-1.15 and annotated as @PublicEvolving >> from >> > the 1st day [1]. From FLIP-197, we can promote it to @Public since it >> > already existed with two releases. >> > And I didn't find a FLIP to discuss the process to deprecate APIs, >> > considering the SinkFunction has actually been stale for some time, I >> think >> > we can deprecate it with the @Public SinkV2. >> > >> > Thus, +1 (binding) for this proposal. >> > >> > [1] https://issues.apache.org/jira/browse/FLINK-25555 >> > >> > Best >> > Yun Tang >> > >> > ________________________________ >> > From: Martijn Visser <martijnvis...@apache.org> >> > Sent: Wednesday, January 18, 2023 18:50 >> > To: dev <dev@flink.apache.org>; Jing Ge <j...@ververica.com>; Yun Tang >> < >> > myas...@live.com> >> > Subject: [DISCUSS] Promote SinkV2 to @Public and deprecate SinkFunction >> > >> > Hi all, >> > >> > While discussing FLIP-281 [1] the discussion also turned to the >> > SinkFunction and the SinkV2 API. For a broader discussion I'm opening >> up a >> > separate discussion thread. >> > >> > As Yun Tang has mentioned in that discussion thread, it would be a good >> > time to deprecate the SinkFunction to avoid the need to introduce new >> > functions towards (to be) deprecated APIs. Jing rightfully mentioned >> that >> > it would be confusing to deprecate the SinkFunction if its successor is >> not >> > yet marked as @Public (it's currently @PublicEvolving). >> > >> > My proposal would be to promote the SinkV2 API to @public in Flink 1.17 >> > and mark the SinkFunction as @deprecated in Flink 1.17 >> > >> > The original Sink interface was introduced in Flink 1.12 with FLIP-143 >> [2] >> > and extended with FLIP-177 in Flink 1.14 [3] and has been improved on >> > further as Sink V2 via FLIP-191 in Flink 1.15 [4]. >> > >> > Looking at the API stability graduation process [5], the fact that Sink >> V2 >> > was introduced in Flink 1.15 would mean that we could warrant a >> promotion >> > to @public already (given that there have been two releases with 1.15 >> and >> > 1.16 where it was introduced). Combined with the fact that SinkV2 has >> been >> > the result of iteration over the introduction of the original Sink API >> > since Flink 1.12, I would argue that the promotion is overdue. >> > >> > If we promote the Sink API to @public, I think we should also >> immediately >> > mark the SinkFunction as @deprecated. >> > >> > Looking forward to your thoughts. >> > >> > Best regards, >> > >> > Martijn >> > >> > >> > [1] https://lists.apache.org/thread/l05m6cf8fwkkbpnjtzbg9l2lo40oxzd1 >> > [2] >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-143%3A+Unified+Sink+API >> > [3] >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-177%3A+Extend+Sink+API >> > [4] >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-191%3A+Extend+unified+Sink+interface+to+support+small+file+compaction >> > [5] >> > >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-197%3A+API+stability+graduation+process >> > >> > >> >