Files
scylladb/compaction/incremental_backlog_tracker.hh
Botond Dénes 1999d8e3d3 compaction: remove using namespace {compaction,sstables}
Some files in compaction/ have using namespace {compaction,sstables}
clauses, some even in headers. This is considered bad practice and
muddies the namespace use. Remove them.
2025-09-25 15:03:57 +03:00

64 lines
2.3 KiB
C++

/*
* Copyright (C) 2019-present ScyllaDB
*
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
*/
#pragma once
#include <cmath>
#include "compaction_backlog_manager.hh"
#include "incremental_compaction_strategy.hh"
namespace compaction {
// The only difference to size tiered backlog tracker is that it will calculate
// backlog contribution using total bytes of each sstable run instead of total
// bytes of an individual sstable object.
class incremental_backlog_tracker final : public compaction_backlog_tracker::impl {
incremental_compaction_strategy_options _options;
int64_t _total_bytes = 0;
int64_t _total_backlog_bytes = 0;
unsigned _threshold = 0;
double _sstables_backlog_contribution = 0.0f;
std::unordered_set<sstables::run_id> _sstable_runs_contributing_backlog;
std::unordered_map<sstables::run_id, sstables::sstable_run> _all;
struct inflight_component {
int64_t total_bytes = 0;
double contribution = 0;
};
inflight_component compacted_backlog(const compaction_backlog_tracker::ongoing_compactions& ongoing_compactions) const;
struct backlog_calculation_result {
int64_t total_backlog_bytes;
float sstables_backlog_contribution;
std::unordered_set<sstables::run_id> sstable_runs_contributing_backlog;
};
public:
static double log4(double x) {
static const double inv_log_4 = 1.0f / std::log(4);
return log(x) * inv_log_4;
}
static backlog_calculation_result calculate_sstables_backlog_contribution(const std::unordered_map<sstables::run_id, sstables::sstable_run>& all,
const incremental_compaction_strategy_options& options, unsigned threshold);
incremental_backlog_tracker(incremental_compaction_strategy_options options);
virtual double backlog(const compaction_backlog_tracker::ongoing_writes& ow, const compaction_backlog_tracker::ongoing_compactions& oc) const override;
// Removing could be the result of a failure of an in progress write, successful finish of a
// compaction, or some one-off operation, like drop
virtual void replace_sstables(const std::vector<sstables::shared_sstable>& old_ssts, const std::vector<sstables::shared_sstable>& new_ssts) override;
int64_t total_bytes() const {
return _total_bytes;
}
};
}