Status

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      @Deprecated

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.


[2] https://nightlies.apache.org/flink/flink-docs-master/docs/ops/upgrading/#api-compatibility-guarantees

Rejected Alternatives

None.


  • No labels