• C
    Avoid shifting component too large error in FileTtlBooster (#11673) · 6fd663a2
    Changyu Bi 提交于
    Summary:
    When `num_levels` > 65, we may be shifting more than 63 bits in FileTtlBooster. This can give errors like: `runtime error: shift exponent 98 is too large for 64-bit type 'uint64_t' (aka 'unsigned long')`. This PR makes a quick fix for this issue by taking a min in the shifting component. This issue should be rare since it requires a user using a large `num_levels`. I'll follow up with a more complex fix if needed.
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/11673
    
    Test Plan: * Add a unit test that produce the above error before this PR. Need to compile it with ubsan: `COMPILE_WITH_UBSAN=1 OPT="-fsanitize-blacklist=.circleci/ubsan_suppression_list.txt" ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make V=1 -j32 compaction_picker_test`
    
    Reviewed By: hx235
    
    Differential Revision: D48074386
    
    Pulled By: cbi42
    
    fbshipit-source-id: 25e59df7e93f20e0793cffb941de70ac815d9392
    6fd663a2
compaction_picker_test.cc 164.9 KB