Status
Discussion thread | https://lists.apache.org/thread/4t71lz2j2ft8hf90ylvtomynhr2qthoo |
---|---|
Vote thread | |
JIRA: | https://issues.apache.org/jira/browse/FLINK-18255 |
Released | 1.19 |
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
As described in FLINK-18255[1] , several user-facing classes in flink-statebackend-rocksdb module don't have any API annotations, not even @PublicEvolving. These should be added to clarify their usage.
[1] https://issues.apache.org/jira/browse/FLINK-18255
Public Interfaces & Proposed Changes
This FLIP will add API annotations for Rocksdb StateBackend user-facing classes. The classes listed below are not annotated currently, and I propose that they are annotated as listed below on the right.
Class (in flink-statebackend-rocksdb module) | annotation that need be added |
---|---|
ConfigurableRocksDBOptionsFactory | @PublicEvolving |
RocksDBConfigurableOptions | @PublicEvolving |
RocksDBNativeMetricOptions | @PublicEvolving |
RocksDBOptions | @PublicEvolving |
RocksDBOptionsFactory | @PublicEvolving |
RocksDBStateBackendFactory | @PublicEvolving |
SingleStateIterator | @Internal |
RocksDBRestoreOperation | @Internal |
RocksDBStateDownloader | @Internal |
RocksDBStateUploader | @Internal |
Moreover, EmbeddedRocksDBStateBackend and EmbeddedRocksDBStateBackendFactory have beed marked as @PublicEvolving , so this FLIP don't need to consider them.
Compatibility, Deprecation, and Migration Plan
As declared in the "Flink API Compatibility Guarantee"[2], any API without annotations is considered internal to Flink, with no guarantees being provided. Therefore, marking the classes which don't have annotations previously as @PublicEvolving does not break compatibility rules for existing users.
Rejected Alternatives
None.