Skip to content

RocksDB: native column-family options with Besu; unlock settings beyond rocksdbjni Java API#10132

Draft
matkt wants to merge 10 commits intobesu-eth:mainfrom
matkt:add-custom-properties-for-rocksdb
Draft

RocksDB: native column-family options with Besu; unlock settings beyond rocksdbjni Java API#10132
matkt wants to merge 10 commits intobesu-eth:mainfrom
matkt:add-custom-properties-for-rocksdb

Conversation

@matkt
Copy link
Copy Markdown
Contributor

@matkt matkt commented Mar 30, 2026

PR description

Many valid ColumnFamilyOptions / block_based_table_factory.* keys exist in the C++ option registry but are missing or incomplete on rocksdbjni Java types. Passing everything through the native parser lets operators use --Xplugin-rocksdb-additional-column-family-options for any supported native key for the embedded RocksDB version, not only what Java exposes.

Column family (extra CF options):

besu --data-path=/data/besu \
  --Xplugin-rocksdb-additional-column-family-options="write_buffer_size=67108864;block_based_table_factory.prepopulate_block_cache=kFlushOnly"

Database-level (extra DB options):

besu --data-path=/data/besu \
  --Xplugin-rocksdb-additional-database-options="max_file_opening_threads=8"

you can also pass a property directly in the code

cfProps.setProperty("block_based_table_factory.format_version", "5");

Fixed Issue(s)

Thanks for sending a pull request! Have you done the following?

  • Checked out our contribution guidelines?
  • Considered documentation and added the doc-change-required label to this PR if updates are required.
  • Considered the changelog and included an update if required.
  • For database changes (e.g. KeyValueSegmentIdentifier) considered compatibility and performed forwards and backwards compatibility tests

Locally, you can run these tests to catch failures early:

  • spotless: ./gradlew spotlessApply
  • unit tests: ./gradlew build
  • acceptance tests: ./gradlew acceptanceTest
  • integration tests: ./gradlew integrationTest
  • reference tests: ./gradlew ethereum:referenceTests:referenceTests
  • hive tests: Engine or other RPCs modified?

matkt added 5 commits March 30, 2026 15:02
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
@matkt matkt changed the title add additional flags for rocksdb RocksDB: native column-family options with Besu; unlock settings beyond rocksdbjni Java API Mar 30, 2026
matkt added 5 commits March 30, 2026 17:02
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
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.

1 participant