hangc0276 opened a new pull request, #3793:
URL: https://github.com/apache/bookkeeper/pull/3793

   ### Motivation
   Fix https://github.com/apache/bookkeeper/issues/3734#issuecomment-1407626941
   
   We have two rocksDB tables, one for the ledger index, and another for the 
entry log location.
    - ledger index RocksDB table: Use the default table option, and the 
checksum is `kCRC32c`
    - entry log location RocksDb table: Use configured table option, and the 
checksum is `kxxHash` 
   
   When we upgrade the RocksDB version from 6.10.2 to 7.9.2, the new RocksDB 
version's default table checksum has changed from `kCRC32c` to `kXXH3`, and 
`kXXH3` only supported since RocksDB 6.27. The RocksDB version rollback to 
6.10.2 will be failed due to RocksDB 6.10.2 doesn't support the `kXXH3` 
checksum type.
   
   ### Modifications
   In this PR, I make the RocksDB checksum type configurable. But there is one 
change that will change the ledger index RocksDB table's checksum type from the 
default `kCRC32c` to `kxxHash`. I have tested the compatibility of the two 
checksum types in and between multiple RocksDB versions, it works fine.
   
   After setting the two RocksDB table's checksum type to `kxxHash`, the 
RocksDB's version upgraded from 6.10.2 to 7.9.2, and rolling back to 6.10.2 
works fine.
   
   ### More to discuss
   When writing the unit test to read the table checksum type from RocksDB 
configuration files, it failed. I found the related issue on RocksDB: 
https://github.com/facebook/rocksdb/issues/5297
   The related PR: https://github.com/facebook/rocksdb/pull/10826
   
   It means we still can't load RocksDB table options from configuration files. 
Maybe I missed some parts about reading RocksDB table options from the 
configuration file. 
   
   If this issue exists, we do **NOT** recommend users configure RocksDB 
configurations through configuration files.
   
   @merlimat @eolivelli @dlg99 Please help take a look, thanks.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to