This is crucial with MVs, since the splitting must preserve the state of the original sstable. We want the sstable to be in staging dir, so it's excluded when calculating the diff for performing pushes to view replicas. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com>
79 lines
3.4 KiB
C++
79 lines
3.4 KiB
C++
/*
|
|
* Copyright (C) 2021-present ScyllaDB
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <seastar/core/condition-variable.hh>
|
|
|
|
#include "schema/schema_fwd.hh"
|
|
#include "sstables/open_info.hh"
|
|
#include "compaction_descriptor.hh"
|
|
|
|
class reader_permit;
|
|
|
|
namespace sstables {
|
|
class sstable_set;
|
|
class sstables_manager;
|
|
struct sstable_writer_config;
|
|
}
|
|
|
|
namespace compaction {
|
|
class compaction_strategy;
|
|
class compaction_strategy_state;
|
|
class compaction_backlog_tracker;
|
|
|
|
class compaction_group_view {
|
|
public:
|
|
virtual ~compaction_group_view() {}
|
|
virtual dht::token_range token_range() const noexcept = 0;
|
|
virtual const schema_ptr& schema() const noexcept = 0;
|
|
// min threshold as defined by table.
|
|
virtual unsigned min_compaction_threshold() const noexcept = 0;
|
|
virtual bool compaction_enforce_min_threshold() const noexcept = 0;
|
|
virtual future<lw_shared_ptr<const sstables::sstable_set>> main_sstable_set() const = 0;
|
|
virtual future<lw_shared_ptr<const sstables::sstable_set>> maintenance_sstable_set() const = 0;
|
|
virtual lw_shared_ptr<const sstables::sstable_set> sstable_set_for_tombstone_gc() const = 0;
|
|
virtual std::unordered_set<sstables::shared_sstable> fully_expired_sstables(const std::vector<sstables::shared_sstable>& sstables, gc_clock::time_point compaction_time) const = 0;
|
|
virtual const std::vector<sstables::shared_sstable>& compacted_undeleted_sstables() const noexcept = 0;
|
|
virtual compaction_strategy& get_compaction_strategy() const noexcept = 0;
|
|
virtual compaction_strategy_state& get_compaction_strategy_state() noexcept = 0;
|
|
virtual reader_permit make_compaction_reader_permit() const = 0;
|
|
virtual sstables::sstables_manager& get_sstables_manager() noexcept = 0;
|
|
virtual sstables::shared_sstable make_sstable(sstables::sstable_state) const = 0;
|
|
virtual sstables::sstable_writer_config configure_writer(sstring origin) const = 0;
|
|
virtual api::timestamp_type min_memtable_timestamp() const = 0;
|
|
virtual api::timestamp_type min_memtable_live_timestamp() const = 0;
|
|
virtual api::timestamp_type min_memtable_live_row_marker_timestamp() const = 0;
|
|
virtual bool memtable_has_key(const dht::decorated_key& key) const = 0;
|
|
virtual future<> on_compaction_completion(compaction_completion_desc desc, sstables::offstrategy offstrategy) = 0;
|
|
virtual bool is_auto_compaction_disabled_by_user() const noexcept = 0;
|
|
virtual bool tombstone_gc_enabled() const noexcept = 0;
|
|
virtual const tombstone_gc_state& get_tombstone_gc_state() const noexcept = 0;
|
|
virtual compaction_backlog_tracker& get_backlog_tracker() = 0;
|
|
virtual const std::string get_group_id() const noexcept = 0;
|
|
virtual seastar::condition_variable& get_staging_done_condition() noexcept = 0;
|
|
virtual dht::token_range get_token_range_after_split(const dht::token& t) const noexcept = 0;
|
|
virtual int64_t get_sstables_repaired_at() const noexcept = 0;
|
|
};
|
|
|
|
} // namespace compaction
|
|
|
|
namespace fmt {
|
|
|
|
template <>
|
|
struct formatter<compaction::compaction_group_view> : formatter<string_view> {
|
|
template <typename FormatContext>
|
|
auto format(const compaction::compaction_group_view& t, FormatContext& ctx) const {
|
|
auto s = t.schema();
|
|
return fmt::format_to(ctx.out(), "{}.{} compaction_group={}", s->ks_name(), s->cf_name(), t.get_group_id());
|
|
}
|
|
};
|
|
|
|
} // namespace fmt
|