Skip to content

[FLINK-40256][docs] Include sub-package config options in the configuration reference - #28842

Open
spuru9 wants to merge 1 commit into
apache:masterfrom
spuru9:feature/FLINK-40256-config-docs-locator
Open

[FLINK-40256][docs] Include sub-package config options in the configuration reference#28842
spuru9 wants to merge 1 commit into
apache:masterfrom
spuru9:feature/FLINK-40256-config-docs-locator

Conversation

@spuru9

@spuru9 spuru9 commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

What is the purpose of the change

ConfigurationOptionLocator reads each package in its hard-coded LOCATIONS list with Files.newDirectoryStream, which does not recurse. Option classes in a sub-package are silently dropped from the configuration reference, and ConfigOptionsDocsCompletenessITCase cannot catch this because it derives its expectations from the same list.

All seven state.backend.rocksdb.manual-compaction.* options are affected: they carry @Documentation.Section(EXPERT_ROCKSDB) but live in org.apache.flink.state.rocksdb.sstmerge, so the manual compaction feature shipped in 1.20 has no documented configuration.

Brief change log

  • Add an OptionsClassLocation for org.apache.flink.state.rocksdb.sstmerge and regenerate: expert_rocksdb_section.html (4 → 11 rows) plus the new rocksdb_manual_compaction_configuration.html. No other table changes.
  • Annotate RocksDBManualCompactionOptions with @PublicEvolving. Becoming discoverable also subjects it to ConfigOptionsDocGenerator#verifyClassAnnotation, which fails the docs build without a stability level. Matches RocksDBOptions in the same module.
  • Fix two descriptions rendering as "to start.If" and "to start.Note".
  • Add ConfigurationOptionLocatorTest, which fails when a @Documentation.Section option sits in an unsearched package.

The scan stays non-recursive: around 30 connector and format option classes sit outside LOCATIONS on purpose, documented by hand on their own pages.

Verifying this change

  • ConfigurationOptionLocatorTest reports exactly one violation before the fix and none after, so it needs no exclusion list. ConfigOptionsDocsCompletenessITCase is green either way, which is why the gap went unnoticed.
  • mvn -pl flink-docs verify passes: 21 unit tests, 3 ITCases.

Does this pull request potentially affect one of the following parts:

  • Dependencies (does it add or upgrade a dependency): no
  • The public API, i.e., is any changed class annotated with @Public(Evolving): yes, RocksDBManualCompactionOptions gains @PublicEvolving as required by the docs generator. No option key, default value or type changes.
  • The serializers: no
  • The runtime per-record code paths (performance sensitive): no
  • Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
  • The S3 file system connector: no

Documentation

  • Does this pull request introduce a new feature? no
  • If yes, how is the feature documented? not applicable

Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)

Generated-by: Claude Code (claude-opus-5)

…ration reference

ConfigurationOptionLocator discovers ConfigOptions from a hard-coded list of
packages and reads each with Files.newDirectoryStream, which does not recurse
into sub-packages. Options outside that list are dropped from the generated
configuration reference without any error, and ConfigOptionsDocsCompletenessITCase
cannot detect it because it derives its expectations from the same list.

All seven state.backend.rocksdb.manual-compaction.* options were affected: they
carry @Documentation.Section(EXPERT_ROCKSDB) but live in
org.apache.flink.state.rocksdb.sstmerge, a sub-package of a searched package, so
the feature shipped in 1.20 had no documented configuration.

Add a location for the sub-package and regenerate the affected tables.
RocksDBManualCompactionOptions needs a stability annotation because becoming
discoverable also subjects it to ConfigOptionsDocGenerator#verifyClassAnnotation;
@PublicEvolving matches RocksDBOptions and RocksDBConfigurableOptions in the same
module. Two option descriptions were missing a space between concatenated
sentences, which is now user-visible, so fix those too.

Add ConfigurationOptionLocatorTest to prevent recurrence: it scans the source
tree and fails when a @Documentation.Section option sits in a package the
locator does not search. Repo-wide it needs no exclusions.

Generated-by: Claude Code (claude-opus-5)
@flinkbot

flinkbot commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

CI report:

Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants