From d263505417a6dcb273e19c5afb2e7d449175a465 Mon Sep 17 00:00:00 2001 From: Yanqin Jin Date: Sun, 31 Oct 2021 22:13:05 -0700 Subject: [PATCH] Avoid div-by-zero error in db_stress (#9086) Summary: If a column family has 0 levels, then existing `TestCompactFiles(...)` may hit divide-by-zero. To fix, return early if the cf is empty. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9086 Test Plan: TBD Reviewed By: ajkr Differential Revision: D31986799 Pulled By: riversand963 fbshipit-source-id: 48f7dfb2b2b47cfc1315cb71ca80eb230d947f17 --- db_stress_tool/db_stress_test_base.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/db_stress_tool/db_stress_test_base.cc b/db_stress_tool/db_stress_test_base.cc index fdb1f2edc76..6b2df770a14 100644 --- a/db_stress_tool/db_stress_test_base.cc +++ b/db_stress_tool/db_stress_test_base.cc @@ -1812,6 +1812,10 @@ void StressTest::TestCompactFiles(ThreadState* thread, ROCKSDB_NAMESPACE::ColumnFamilyMetaData cf_meta_data; db_->GetColumnFamilyMetaData(column_family, &cf_meta_data); + if (cf_meta_data.levels.empty()) { + return; + } + // Randomly compact up to three consecutive files from a level const int kMaxRetry = 3; for (int attempt = 0; attempt < kMaxRetry; ++attempt) {