treewide: replace generation_type::value() with generation_type::as_int()

* replace generation_type::value() with generation_type::as_int()
* drop generation_value()

because we will switch over to UUID based generation identifier, the member
function or the free function generation_value() cannot fulfill the needs
anymore. so, in this change, they are consolidated and are replaced by
"as_int()", whose name is more specific, and will also work and won't be
misleading even after switching to UUID based generation identifier. as
`value()` would be confusing by then: it could be an integer or a UUID.

Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
This commit is contained in:
Kefu Chai
2023-05-06 17:16:19 +08:00
parent 70f2b09397
commit 9b35faf485
11 changed files with 20 additions and 22 deletions

View File

@@ -1257,7 +1257,7 @@ void set_storage_service(http_context& ctx, routes& r, sharded<service::storage_
ss::sstable info;
info.timestamp = t;
info.generation = sstables::generation_value(sstable->generation());
info.generation = sstable->generation().as_int();
info.level = sstable->get_sstable_level();
info.size = sstable->bytes_on_disk();
info.data_size = sstable->ondisk_data_size();

View File

@@ -474,7 +474,7 @@ distributed_loader::process_upload_dir(distributed<replica::database>& db, distr
sharded<sstables::sstable_generation_generator> sharded_gen;
auto highest_generation = highest_generation_seen(directory).get0().value_or(
sstables::generation_type{0});
sharded_gen.start(highest_generation.value()).get();
sharded_gen.start(highest_generation.as_int()).get();
auto stop_generator = deferred_stop(sharded_gen);
auto make_sstable = [&] (shard_id shard) {

View File

@@ -67,7 +67,7 @@ static seastar::metrics::label keyspace_label("ks");
using namespace std::chrono_literals;
void table::update_sstables_known_generation(std::optional<sstables::generation_type> generation) {
auto gen = generation.value_or(sstables::generation_type(0)).value();
auto gen = generation.value_or(sstables::generation_type(0)).as_int();
if (_sstable_generation_generator) {
_sstable_generation_generator->update_known_generation(gen);
} else {

View File

@@ -34,8 +34,9 @@ public:
generation_type() = delete;
explicit constexpr generation_type(int_t value) noexcept: _value(value) {}
constexpr int_t value() const noexcept { return _value; }
constexpr int_t as_int() const noexcept {
return _value;
}
// convert to data_value
//
// this function is used when performing queries to SSTABLES_REGISTRY in
@@ -71,9 +72,6 @@ public:
constexpr generation_type generation_from_value(generation_type::int_t value) {
return generation_type{value};
}
constexpr generation_type::int_t generation_value(generation_type generation) {
return generation.value();
}
template <std::ranges::range Range, typename Target = std::vector<sstables::generation_type>>
Target generations_from_values(const Range& values) {
@@ -124,7 +122,7 @@ namespace std {
template <>
struct hash<sstables::generation_type> {
size_t operator()(const sstables::generation_type& generation) const noexcept {
return hash<sstables::generation_type::int_t>{}(generation.value());
return hash<sstables::generation_type::int_t>{}(generation.as_int());
}
};
@@ -144,6 +142,6 @@ template <>
struct fmt::formatter<sstables::generation_type> : fmt::formatter<std::string_view> {
template <typename FormatContext>
auto format(const sstables::generation_type& generation, FormatContext& ctx) const {
return fmt::format_to(ctx.out(), "{}", generation.value());
return fmt::format_to(ctx.out(), "{}", generation.as_int());
}
};

View File

@@ -73,7 +73,7 @@ sstable_directory::sstable_directory(sstables_manager& manager,
{}
void sstable_directory::filesystem_components_lister::handle(sstables::entry_descriptor desc, fs::path filename) {
if ((generation_value(desc.generation) % smp::count) != this_shard_id()) {
if ((desc.generation.as_int() % smp::count) != this_shard_id()) {
return;
}
@@ -293,7 +293,7 @@ future<> sstable_directory::system_keyspace_components_lister::process(sstable_d
// FIXME -- handle
return make_ready_future<>();
}
if ((generation_value(desc.generation) % smp::count) != this_shard_id()) {
if ((desc.generation.as_int() % smp::count) != this_shard_id()) {
return make_ready_future<>();
}
@@ -573,7 +573,7 @@ highest_generation_seen(sharded<sstables::sstable_directory>& directory) {
return sstables::generation_type(0);
}
});
co_return highest.value() ? std::make_optional(highest): std::nullopt;
co_return highest.as_int() ? std::make_optional(highest) : std::nullopt;
}
}

View File

@@ -64,7 +64,7 @@ public:
{ }
sstable_assertions(test_env& env, shared_sstable sst)
: sstable_assertions(env, sst->get_schema(), env.tempdir().path().native(), sst->get_version(), sst->generation().value())
: sstable_assertions(env, sst->get_schema(), env.tempdir().path().native(), sst->get_version(), sst->generation().as_int())
{}
test_env& get_env() {

View File

@@ -2894,7 +2894,7 @@ SEASTAR_TEST_CASE(sstable_run_based_compaction_test) {
BOOST_REQUIRE(*expected_sst == old_sstables.front()->generation());
expected_sst++;
// check that previously released sstables were already closed
if (generation_value(old_sstables.front()->generation()) % 4 == 0) {
if (auto v = old_sstables.front()->generation().as_int(); v % 4 == 0) {
// Due to performance reasons, sstables are not released immediately, but in batches.
// At the time of writing, mutation_reader_merger releases it's sstable references
// in batches of 4. That's why we only perform this check every 4th sstable.

View File

@@ -2822,7 +2822,7 @@ SEASTAR_TEST_CASE(compound_sstable_set_basic_test) {
set2->insert(sstable_for_overlapping_test(env, s, keys[0].key(), keys[1].key(), 0));
set2->insert(sstable_for_overlapping_test(env, s, keys[0].key(), keys[1].key(), 0));
BOOST_REQUIRE(boost::accumulate(*compound->all() | boost::adaptors::transformed([] (const sstables::shared_sstable& sst) { return generation_value(sst->generation()); }), unsigned(0)) == 6);
BOOST_REQUIRE(boost::accumulate(*compound->all() | boost::adaptors::transformed([] (const sstables::shared_sstable& sst) { return sst->generation().as_int(); }), unsigned(0)) == 6);
{
unsigned found = 0;
for (auto sstables = compound->all(); [[maybe_unused]] auto& sst : *sstables) {

View File

@@ -491,7 +491,7 @@ SEASTAR_TEST_CASE(sstable_directory_shared_sstables_reshard_correctly) {
auto max_generation_seen = highest_generation_seen(sstdir).get0();
std::atomic<sstables::generation_type::int_t> generation_for_test = {};
generation_for_test.store(max_generation_seen->value() + 1, std::memory_order_relaxed);
generation_for_test.store(max_generation_seen->as_int() + 1, std::memory_order_relaxed);
distributed_loader_for_tests::reshard(sstdir, e.db(), "ks", "cf", [&e, upload_path, &generation_for_test] (shard_id id) {
auto generation = generation_for_test.fetch_add(1, std::memory_order_relaxed);
@@ -532,7 +532,7 @@ SEASTAR_TEST_CASE(sstable_directory_shared_sstables_reshard_distributes_well_eve
auto max_generation_seen = highest_generation_seen(sstdir).get0();
std::atomic<sstables::generation_type::int_t> generation_for_test = {};
generation_for_test.store(max_generation_seen->value() + 1, std::memory_order_relaxed);
generation_for_test.store(max_generation_seen->as_int() + 1, std::memory_order_relaxed);
distributed_loader_for_tests::reshard(sstdir, e.db(), "ks", "cf", [&e, upload_path, &generation_for_test] (shard_id id) {
auto generation = generation_for_test.fetch_add(1, std::memory_order_relaxed);
@@ -573,7 +573,7 @@ SEASTAR_TEST_CASE(sstable_directory_shared_sstables_reshard_respect_max_threshol
auto max_generation_seen = highest_generation_seen(sstdir).get0();
std::atomic<sstables::generation_type::int_t> generation_for_test = {};
generation_for_test.store(max_generation_seen->value() + 1, std::memory_order_relaxed);
generation_for_test.store(max_generation_seen->as_int() + 1, std::memory_order_relaxed);
distributed_loader_for_tests::reshard(sstdir, e.db(), "ks", "cf", [&e, upload_path, &generation_for_test] (shard_id id) {
auto generation = generation_for_test.fetch_add(1, std::memory_order_relaxed);

View File

@@ -118,7 +118,7 @@ void run_sstable_resharding_test(sstables::test_env& env) {
std::unordered_set<shard_id> processed_shards;
for (auto& sstable : new_sstables) {
auto new_sst = env.reusable_sst(s, generation_value(sstable->generation()), version).get0();
auto new_sst = env.reusable_sst(s, sstable->generation().as_int(), version).get0();
bloom_filter_size_after += filter_size(new_sst);
auto shards = new_sst->get_shards_for_this_sstable();
BOOST_REQUIRE(shards.size() == 1); // check sstable is unshared.
@@ -196,7 +196,7 @@ SEASTAR_TEST_CASE(sstable_is_shared_correctness) {
BOOST_REQUIRE(!sst->is_shared());
auto all_shards_s = get_schema(smp::count, cfg->murmur3_partitioner_ignore_msb_bits());
sst = env.reusable_sst(all_shards_s, generation_value(sst->generation()), version).get0();
sst = env.reusable_sst(all_shards_s, sst->generation().as_int(), version).get0();
BOOST_REQUIRE(smp::count == 1 || sst->is_shared());
BOOST_REQUIRE(sst->get_shards_for_this_sstable().size() == smp::count);
assert_sstable_computes_correct_owners(env, sst).get();

View File

@@ -175,7 +175,7 @@ SEASTAR_TEST_CASE(missing_summary_first_last_sane) {
static future<sstable_ptr> do_write_sst(test_env& env, schema_ptr schema, sstring load_dir, sstring write_dir, sstables::generation_type generation) {
return env.reusable_sst(std::move(schema), load_dir, generation).then([write_dir, generation] (sstable_ptr sst) mutable {
sstable_generation_generator gen(generation.value());
sstable_generation_generator gen{generation.as_int()};
sstables::test(sst).change_generation_number(gen());
sstables::test(sst).change_dir(write_dir);
auto fut = sstables::test(sst).store();