Hi Jing, Thanks for your feedback!
> I am fine with @Internal and once we > use @Internal, we should add it to all classes within a module to keep the > consistency. I think the scope to keep consistency within a module is all interfaces, not all classes. For example, in changelog-statebackend module or flink-runtime/state/heap package (hashmap-statebackend), all interfaces are annotated, and classes' annotations are optional. The changes in this FLIP(Flip-420) also covers all interfaces of the rocksdb statebackend module. Best, Jinzhong On Wed, Mar 13, 2024 at 7:30 AM Jing Ge <j...@ververica.com.invalid> wrote: > 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. > > > > > > > > > > > > > > > > > > > > > > >