Thanks Ahmed for the update, the FLIP looks good to me now. Best, Leonard
> 2024年5月22日 下午4:34,Ahmed Hamdy <hamdy10...@gmail.com> 写道: > >> >> (1) Implicitly point a public API change is not enough, Could you add a >> section Public Interfaces to enumerate all Public APIs that you proposed >> and you changed? >> It’s a standard part of a FLIP template[1]. >> > yes this is updated in the FLIP now. > > > >> (2) About the proposed public interface ResultHandler<RequestEntryT>, >> Could you explain or show how to use the methods #completeExceptionally and >> #retryForEntries? I didn’t find >> detail explanation or Usage example code to understand them. >> > > Added to the FLIP now. > > > >> (3) Could you add necessary java documents for all public API changes like >> new method AsyncSinkWriterConfiguration#setRequestTimeoutMs ? The java doc >> of [2] is a good example. >> > > sure, Added now. > > (4) Another minor reminder AsyncSinkBase is a @PublicEvolving interface >> too, please correct it, and please ensure the backward compatibility has >> been considered for all public interfaces the FLIP changed. >> > Done > > Best Regards > Ahmed Hamdy > > > On Wed, 22 May 2024 at 04:16, Leonard Xu <xbjt...@gmail.com> wrote: > >> Thanks for your reply, Ahmed. >> >>> (2) The FLIP-451 aims to introduce a timeout configuration, but I didn’t >>>> find the configuration in FLIP even I lookup some historical versions of >>>> the FLIP. Did I miss some key informations? >>>> >>> >>> Yes, I tried to implicitly point that it will be added to the existing >>> AsyncSinkWriterConfiguration to not inflate the FLIP, but I get it might >> be >>> confusing. I have added the changes to the configuration classes in the >>> FLIP to make it clearer. >> >> (1) Implicitly point a public API change is not enough, Could you add a >> section Public Interfaces to enumerate all Public APIs that you proposed >> and you changed? >> It’s a standard part of a FLIP template[1]. >> >> (2) About the proposed public interface ResultHandler<RequestEntryT>, >> Could you explain or show how to use the methods #completeExceptionally and >> #retryForEntries? I didn’t find >> detail explanation or Usage example code to understand them. >> >> (3) Could you add necessary java documents for all public API changes like >> new method AsyncSinkWriterConfiguration#setRequestTimeoutMs ? The java doc >> of [2] is a good example. >> >> (4) Another minor reminder AsyncSinkBase is a @PublicEvolving interface >> too, please correct it, and please ensure the backward compatibility has >> been considered for all public interfaces the FLIP changed. >> >> >> Best, >> Leonard >> [1]https://cwiki.apache.org/confluence/display/FLINK/FLIP+Template >> [2] >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-171%3A+Async+Sink >> >> >>> >>> >>> On Tue, 21 May 2024 at 14:56, Leonard Xu <xbjt...@gmail.com> wrote: >>> >>>> Thanks Ahmed for kicking off this discussion, sorry for jumping the >>>> discussion late. >>>> >>>> (1)I’m confused about the discuss thread name ‘FLIP-451: Refactor Async >>>> sink API’ and FLIP title/vote thread name ' >>>> FLIP-451: Introduce timeout configuration to AsyncSink API < >>>> >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-451%3A+Introduce+timeout+configuration+to+AsyncSink+API >>> ’, >>>> they are different for me. Could you help explain the change history? >>>> >>>> (2) The FLIP-451 aims to introduce a timeout configuration, but I didn’t >>>> find the configuration in FLIP even I lookup some historical versions of >>>> the FLIP. Did I miss some key informations? >>>> >>>> (3) About the code change part, there’re some un-complete pieces in >>>> AsyncSinkWriter for example `submitRequestEntries(List<RequestEntryT> >>>> requestEntries,);` is incorrect and `sendTime` variable I didn’t >>>> find the place we define it and where we use it. >>>> >>>> Sorry for jumping the discussion thread during vote phase again. >>>> >>>> Best, >>>> Leonard >>>> >>>> >>>>> 2024年5月21日 下午3:49,Ahmed Hamdy <hamdy10...@gmail.com> 写道: >>>>> >>>>> Hi Hong, >>>>> Thanks for pointing that out, no we are not >>>>> deprecating getFatalExceptionCons(). I have updated the FLIP >>>>> Best Regards >>>>> Ahmed Hamdy >>>>> >>>>> >>>>> On Mon, 20 May 2024 at 15:40, Hong Liang <h...@apache.org> wrote: >>>>> >>>>>> Hi Ahmed, >>>>>> Thanks for putting this together! Should we still be marking >>>>>> getFatalExceptionCons() as @Deprecated in this FLIP, if we are not >>>>>> providing a replacement? >>>>>> >>>>>> Regards, >>>>>> Hong >>>>>> >>>>>> On Mon, May 13, 2024 at 7:58 PM Ahmed Hamdy <hamdy10...@gmail.com> >>>> wrote: >>>>>> >>>>>>> Hi David, >>>>>>> yes there error classification was initially left to sink >> implementers >>>> to >>>>>>> handle while we provided utilities to classify[1] and bubble up[2] >>>> fatal >>>>>>> exceptions to avoid retrying them. >>>>>>> Additionally some sink implementations provide an option to short >>>> circuit >>>>>>> the failures by exposing a `failOnError` flag as in >>>>>> KinesisStreamsSink[3], >>>>>>> however this FLIP scope doesn't include any changes for retry >>>> mechanisms. >>>>>>> >>>>>>> 1- >>>>>>> >>>>>>> >>>>>> >>>> >> https://github.com/apache/flink/blob/015867803ff0c128b1c67064c41f37ca0731ed86/flink-connectors/flink-connector-base/src/main/java/org/apache/flink/connector/base/sink/throwable/FatalExceptionClassifier.java#L32 >>>>>>> 2- >>>>>>> >>>>>>> >>>>>> >>>> >> https://github.com/apache/flink/blob/015867803ff0c128b1c67064c41f37ca0731ed86/flink-connectors/flink-connector-base/src/main/java/org/apache/flink/connector/base/sink/writer/AsyncSinkWriter.java#L533 >>>>>>> 3- >>>>>>> >>>>>>> >>>>>> >>>> >> https://github.com/apache/flink-connector-aws/blob/c6e0abb65a0e51b40dd218b890a111886fbf797f/flink-connector-aws/flink-connector-aws-kinesis-streams/src/main/java/org/apache/flink/connector/kinesis/sink/KinesisStreamsSinkWriter.java#L106 >>>>>>> >>>>>>> Best Regards >>>>>>> Ahmed Hamdy >>>>>>> >>>>>>> >>>>>>> On Mon, 13 May 2024 at 16:20, David Radley <david_rad...@uk.ibm.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> I wonder if the way that the async request fails could be a >> retriable >>>>>> or >>>>>>>> non-retriable error, so it would retry only for retriable >> (transient) >>>>>>>> errors (like IOExceptions) . I see some talk on the internet around >>>>>>>> retriable SQL errors. >>>>>>>> If this was the case then we may need configuration to limit the >>>>>> number >>>>>>>> of retries of retriable errors. >>>>>>>> Kind regards, David >>>>>>>> >>>>>>>> >>>>>>>> From: Muhammet Orazov <mor+fl...@morazow.com.INVALID> >>>>>>>> Date: Monday, 13 May 2024 at 10:30 >>>>>>>> To: dev@flink.apache.org <dev@flink.apache.org> >>>>>>>> Subject: [EXTERNAL] Re: [DISCUSS] FLIP-451: Refactor Async sink API >>>>>>>> Great, thanks for clarifying! >>>>>>>> >>>>>>>> Best, >>>>>>>> Muhammet >>>>>>>> >>>>>>>> >>>>>>>> On 2024-05-06 13:40, Ahmed Hamdy wrote: >>>>>>>>> Hi Muhammet, >>>>>>>>> Thanks for the feedback. >>>>>>>>> >>>>>>>>>> Could you please add more here why it is harder? Would the >>>>>>>>>> `completeExceptionally` >>>>>>>>>> method be related to it? Maybe you can add usage example for it >>>>>> also. >>>>>>>>>> >>>>>>>>> >>>>>>>>> this is mainly due to the current implementation of fatal exception >>>>>>>>> failures which depends on base `getFatalExceptionConsumer` method >>>>>> that >>>>>>>>> is >>>>>>>>> decoupled from the actual called method `submitRequestEntries`, >> Since >>>>>>>>> this >>>>>>>>> is now not the primary concern of the FLIP, I have removed it from >>>>>> the >>>>>>>>> motivation so that the scope is defined around introducing the >>>>>> timeout >>>>>>>>> configuration. >>>>>>>>> >>>>>>>>>> Should we add a list of possible connectors that this FLIP would >>>>>>>>>> improve? >>>>>>>>> >>>>>>>>> Good call, I have added under migration plan. >>>>>>>>> >>>>>>>>> Best Regards >>>>>>>>> Ahmed Hamdy >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, 6 May 2024 at 08:49, Muhammet Orazov < >> mor+fl...@morazow.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hey Ahmed, >>>>>>>>>> >>>>>>>>>> Thanks for the FLIP! +1 (non-binding) >>>>>>>>>> >>>>>>>>>>> Additionally the current interface for passing fatal exceptions >>>>>> and >>>>>>>>>>> retrying records relies on java consumers which makes it harder >> to >>>>>>>>>>> understand. >>>>>>>>>> >>>>>>>>>> Could you please add more here why it is harder? Would the >>>>>>>>>> `completeExceptionally` >>>>>>>>>> method be related to it? Maybe you can add usage example for it >>>>>> also. >>>>>>>>>> >>>>>>>>>>> we should proceed by adding support in all supporting connector >>>>>>> repos. >>>>>>>>>> >>>>>>>>>> Should we add list of possible connectors that this FLIP would >>>>>>>>>> improve? >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> Muhammet >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2024-04-29 14:08, Ahmed Hamdy wrote: >>>>>>>>>>> Hi all, >>>>>>>>>>> I would like to start a discussion on FLIP-451[1] >>>>>>>>>>> The proposal comes on encountering a couple of issues while >>>>>> working >>>>>>>>>>> with >>>>>>>>>>> implementers for Async Sink. >>>>>>>>>>> The FLIP mainly proposes a new API similar to AsyncFunction and >>>>>>>>>>> ResultFuture as well as introducing timeout handling for >> AsyncSink >>>>>>>>>>> requests. >>>>>>>>>>> The FLIP targets 1.20 with backward compatible changes and we >>>>>> should >>>>>>>>>>> proceed by adding support in all supporting connector repos. >>>>>>>>>>> >>>>>>>>>>> 1- >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>> >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-451%3A+Refactor+Async+Sink+API >>>>>>>>>>> Best Regards >>>>>>>>>>> Ahmed Hamdy >>>>>>>>>> >>>>>>>> >>>>>>>> Unless otherwise stated above: >>>>>>>> >>>>>>>> IBM United Kingdom Limited >>>>>>>> Registered in England and Wales with number 741598 >>>>>>>> Registered office: PO Box 41, North Harbour, Portsmouth, Hants. PO6 >>>> 3AU >>>>>>>> >>>>>>> >>>>>> >>>> >>>> >> >>