Hi Jinzhong,

Thanks for your clarification!


> As mentioned in Flink's “API compatibility guarantees”[1], "any API without
> such an annotation is considered internal to Flink, with no guarantees
> being provided."
> I think these interfaces are treated as internal interfaces regardless of
> whether they are marked @Internal.
>
> So, it's acceptable for me to either leave it unmarked or mark it as
> @Internal.
>

It is a question of consistency. I am fine with @Internal and once we
use @Internal, we should add it to all classes within a module to keep the
consistency. Otherwise, when developers read some interfaces
have @Internal, some other classes have no annotations. It turns out there
are different meanings of with or without @Internal. But it is not a big
deal. If no other one has the same concern. I will not block you :-)



> As for FLIP-197, I found that the proposal in this flip has not actually
> been implemented. Because FLINK-25352 [2] has not been resolved,it looks
> like we can't add more info into the PublicEvolving annotation.
>
>
Fair enough! Thanks for the hint!

Best regards,
Jing



On Mon, Mar 11, 2024 at 9:03 AM Jinzhong Li <lijinzhong2...@gmail.com>
wrote:

> Hi Jing.
>
> Thanks for your suggestion.
>
> >>  I was wondering if SingleStateIterator and RocksDBRestoreOperation are
> exposed to users even if they are interfaces.
>
> I agree that very very few users implement these two interfaces, except for
> some advanced users who implement their own StateBackend based on
> rocksdbStateBackend. (The "StateBackend" and "EmbeddedRocksDBStateBackend"
> are PublicEvolving interface)
>
> >> Only adding @Internal annotation to these two interfaces could be
> considered as an implicit hint that users can replace the default behaviour
> with their own implementation.



> As mentioned in Flink's “API compatibility guarantees”[1], "any API without
> such an annotation is considered internal to Flink, with no guarantees
> being provided."
> I think these interfaces are treated as internal interfaces regardless of
> whether they are marked @Internal.
>
> So, it's acceptable for me to either leave it unmarked or mark it as
> @Internal.
>



> >> Another suggestion is that we should start following FLIP-197[1](which
> is already accepted by the community) to add more info into the
> PublicEvolving annotation in order to kick off the graduation process.
>
>

> As for FLIP-197, I found that the proposal in this flip has not actually
> been implemented. Because FLINK-25352 [2] has not been resolved,it looks
> like we can't add more info into the PublicEvolving annotation.
>
>

> [1]
>
> https://nightlies.apache.org/flink/flink-docs-master/docs/ops/upgrading/#api-compatibility-guarantees
> [2] https://issues.apache.org/jira/browse/FLINK-25352
>
> Best,
> Jinzhong
>
>
> On Mon, Mar 11, 2024 at 12:29 AM Jing Ge <j...@ververica.com.invalid>
> wrote:
>
> > Hi Jinzhong,
> >
> > Sorry for the late reply. The key guideline of adding visibility
> annotation
> > is whether the interface/class is a customer-facing API. I was wondering
> if
> > SingleStateIterator and RocksDBRestoreOperation are exposed to users even
> > if they are interfaces, i.e. users can use their own implementation
> > classes. The flink-statebackend-rocksdb module has many more classes than
> > the FLIP described. Only adding @Internal annotation to these two
> > interfaces could be considered as an implicit hint that users can replace
> > the default behaviour with their own implementation.
> >
> > Another suggestion is that we should start following FLIP-197[1](which is
> > already accepted by the community) to add more info into the
> PublicEvolving
> > annotation in order to kick off the graduation process. WDYT?
> >
> > Best regards,
> > Jing
> >
> > [1]
> >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-197%3A+API+stability+graduation+process
> >
> > On Mon, Feb 26, 2024 at 2:22 PM Jinzhong Li <lijinzhong2...@gmail.com>
> > wrote:
> >
> > > Hi all,
> > >
> > > Thanks for all the feedback. It seems there are no more questions
> > > unaddressed.  I would like to open the voting thread after three days.
> > >
> > > Please let me know if you have any concerns, thanks!
> > >
> > > Best,
> > > Jinzhong Li
> > >
> > > On Mon, Feb 26, 2024 at 11:29 AM Yanfei Lei <fredia...@gmail.com>
> wrote:
> > >
> > > > @Yun Tang
> > > > Thanks for the information, +1 for marking
> > > > `ConfigurableRocksDBOptionsFactory` as `PublicEvolving `.
> > > >
> > > > Best,
> > > > Yanfei
> > > >
> > > > Yun Tang <myas...@live.com> 于2024年2月23日周五 19:54写道:
> > > > >
> > > > > Hi Jinzhong,
> > > > >
> > > > > Thanks for driving this topic, and +1 for fixing the lack of
> > > annotation.
> > > > >
> > > > > @Yanfei the `ConfigurableRocksDBOptionsFactory` interface is
> > introduced
> > > > for user extension, you can refer to the doc[1], which shows an
> example
> > > of
> > > > how to use this interface.
> > > > >
> > > > >
> > > > > [1]
> > > >
> > >
> >
> https://nightlies.apache.org/flink/flink-docs-master/docs/ops/state/large_state_tuning/#tuning-rocksdb-memory
> > > > >
> > > > >
> > > > > Best
> > > > > Yun Tang
> > > > > ________________________________
> > > > > From: Yanfei Lei <fredia...@gmail.com>
> > > > > Sent: Thursday, February 22, 2024 15:39
> > > > > To: dev@flink.apache.org <dev@flink.apache.org>
> > > > > Subject: Re: [DISCUSS]FLIP-420: Add API annotations for RocksDB
> > > > StateBackend user-facing classes
> > > > >
> > > > > Hi Jinzhong,
> > > > > Thanks for driving this!
> > > > >
> > > > > 1. I'm wondering if `ConfigurableRocksDBOptionsFactory` will be
> used
> > > > > by users,  currently it looks like only developers use it in
> rocksdb
> > > > > state backend module. And Its only non-testing subclass
> > > > > "DefaultConfigurableOptionsFactory" is marked @Deprecated.
> > > > > 2. Regarding @Internal,  according to the comments, it is used for
> > > > > "Annotation to mark methods within stable, public APIs as an
> internal
> > > > > developer API."  So marking "SingleStateIterator" and
> > > > > "RocksDBRestoreOperation" as @Internal is acceptable for me.
> > > > >
> > > > > Best,
> > > > > Yanfei
> > > > >
> > > > > Jinzhong Li <lijinzhong2...@gmail.com> 于2024年1月25日周四 12:16写道:
> > > > > >
> > > > > > Hi Zakelly,
> > > > > >
> > > > > > Thanks for your comments!
> > > > > >
> > > > > > 1)I agree that almost no user would use "RocksDBStateUploader"
> and
> > > > > > "RocksDBStateDownloader" to do something. It's fine for me to
> keep
> > > them
> > > > > > unmarked.
> > > > > > 2)Regarding "SingleStateIterator", I think it's acceptable to
> > either
> > > > leave
> > > > > > it unmarked or mark it as @Internal. I just consider that
> > > > > > SingleStateIterator is one interface with the "public" modifier
> and
> > > it
> > > > is
> > > > > > harmless to annotate it as @Internal.
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > Hi Hangxiang,
> > > > > >
> > > > > > Thanks for the reminder!
> > > > > >
> > > > > > It makes sense to mark RocksDBStateBackendFactory as Deprecated.
> > > > > >
> > > > > > Best,
> > > > > > Jinzhong Li
> > > > > >
> > > > > >
> > > > > > On Thu, Jan 25, 2024 at 10:22 AM Hangxiang Yu <
> master...@gmail.com
> > >
> > > > wrote:
> > > > > >
> > > > > > > Hi Jinzhong.
> > > > > > > Thanks for driving this!
> > > > > > > Some suggestions:
> > > > > > > 1. As RocksDBStateBackend marked as Deprecated, We should also
> > > > > > > mark RocksDBStateBackendFactory as Deprecated
> > > > > > > 2. Since 1.19 will be freezed in 1.26. Let's adjust the target
> > > > version to
> > > > > > > 1.20
> > > > > > >
> > > > > > >
> > > > > > > On Wed, Jan 24, 2024 at 11:50 PM Zakelly Lan <
> > > zakelly....@gmail.com>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Hi Jinzhong,
> > > > > > > >
> > > > > > > > Thanks for driving this! +1 for fixing the lack of
> annotation.
> > > > > > > >
> > > > > > > > I'm wondering if we really need to annotate
> > > *RocksDBStateUploader*
> > > > and
> > > > > > > > *RocksDBStateDownloader
> > > > > > > > *with @Internal, as they seem to be ordinary classes without
> > > > interacting
> > > > > > > > with other modules.
> > > > > > > > Also, I have reservations about annotating
> > *SingleStateIterator*,
> > > > but I'd
> > > > > > > > like to hear others' opinions and won't insist on this.
> > > > > > > >
> > > > > > > > Best,
> > > > > > > > Zakelly
> > > > > > > >
> > > > > > > > On Wed, Jan 24, 2024 at 10:26 PM Jinzhong Li <
> > > > lijinzhong2...@gmail.com>
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > Hi devs,
> > > > > > > > >
> > > > > > > > > I’m opening this thread to discuss about FLIP-420: Add API
> > > > annotations
> > > > > > > > for
> > > > > > > > > RocksDB StateBackend user-facing classes[1].
> > > > > > > > >
> > > > > > > > > As described in FLINK-18255[2] , several user-facing
> classes
> > in
> > > > > > > > > flink-statebackend-rocksdb module don't have any API
> > > > annotations, not
> > > > > > > > even
> > > > > > > > > @PublicEvolving. This FLIP will add annotations for them to
> > > > clarify
> > > > > > > their
> > > > > > > > > usage.
> > > > > > > > >
> > > > > > > > > Looking forward to hearing from you, thanks!
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Best regards,
> > > > > > > > > Jinzhong Li
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > [1]
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-420%3A+Add+API+annotations+for+RocksDB+StateBackend+user-facing+classes
> > > > > > > > > [2] https://issues.apache.org/jira/browse/FLINK-18255
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Best,
> > > > > > > Hangxiang.
> > > > > > >
> > > >
> > >
> >
>

Reply via email to