diff --git a/sstables/size_tiered_compaction_strategy.hh b/sstables/size_tiered_compaction_strategy.hh index a65e531f63..8ed5a5dd6d 100644 --- a/sstables/size_tiered_compaction_strategy.hh +++ b/sstables/size_tiered_compaction_strategy.hh @@ -191,17 +191,17 @@ size_tiered_compaction_strategy::get_buckets(const std::vector bucket = entry.second; - size_t old_average_size = entry.first; + for (auto it = buckets.begin(); it != buckets.end(); it++) { + size_t old_average_size = it->first; if ((size > (old_average_size * _options.bucket_low) && size < (old_average_size * _options.bucket_high)) || (size < _options.min_sstable_size && old_average_size < _options.min_sstable_size)) { + auto bucket = std::move(it->second); size_t total_size = bucket.size() * old_average_size; size_t new_average_size = (total_size + size) / (bucket.size() + 1); bucket.push_back(pair.first); - buckets.erase(old_average_size); + buckets.erase(it); buckets.insert({ new_average_size, std::move(bucket) }); found = true;