diff --git a/replica/table.cc b/replica/table.cc index 81bddfc127..83fb2d9cae 100644 --- a/replica/table.cc +++ b/replica/table.cc @@ -1121,7 +1121,6 @@ table::try_flush_memtable_to_sstable(compaction_group& cg, lw_shared_ptrget_sharder(_schema) - : _schema.get_sharder(); // Used in tests - _sst.write_scylla_metadata(_shard, sharder, std::move(features), std::move(identifier), std::move(ld_stats), _cfg.origin); + _sst.write_scylla_metadata(_shard, std::move(features), std::move(identifier), std::move(ld_stats), _cfg.origin); _sst.seal_sstable(_cfg.backup).get(); } diff --git a/sstables/sstables.cc b/sstables/sstables.cc index 9ea2c4922c..4a6939831d 100644 --- a/sstables/sstables.cc +++ b/sstables/sstables.cc @@ -1629,16 +1629,17 @@ sstable::read_scylla_metadata() noexcept { } void -sstable::write_scylla_metadata(shard_id shard, const dht::sharder& sharder, sstable_enabled_features features, struct run_identifier identifier, +sstable::write_scylla_metadata(shard_id shard, sstable_enabled_features features, struct run_identifier identifier, std::optional ld_stats, sstring origin) { auto&& first_key = get_first_decorated_key(); auto&& last_key = get_last_decorated_key(); - auto sm = create_sharding_metadata(_schema, sharder, first_key, last_key, shard); + auto* sharder_opt = _schema->try_get_static_sharder(); + auto sm = sharder_opt ? std::optional(create_sharding_metadata(_schema, *sharder_opt, first_key, last_key, shard)) : std::nullopt; // sstable write may fail to generate empty metadata if mutation source has only data from other shard. // see https://github.com/scylladb/scylla/issues/2932 for details on how it can happen. - if (sm.token_ranges.elements.empty()) { + if (sm && sm->token_ranges.elements.empty()) { throw std::runtime_error(format("Failed to generate sharding metadata for {}", get_filename())); } @@ -1646,7 +1647,9 @@ sstable::write_scylla_metadata(shard_id shard, const dht::sharder& sharder, ssta _components->scylla_metadata.emplace(); } - _components->scylla_metadata->data.set(std::move(sm)); + if (sm) { + _components->scylla_metadata->data.set(std::move(*sm)); + } _components->scylla_metadata->data.set(std::move(features)); _components->scylla_metadata->data.set(std::move(identifier)); if (ld_stats) { diff --git a/sstables/sstables.hh b/sstables/sstables.hh index 02d148b349..9ed6c3ab5b 100644 --- a/sstables/sstables.hh +++ b/sstables/sstables.hh @@ -39,7 +39,7 @@ #include "readers/flat_mutation_reader_fwd.hh" #include "tracing/trace_state.hh" #include "utils/updateable_value.hh" -#include "locator/abstract_replication_strategy.hh" +#include "dht/decorated_key.hh" #include @@ -111,7 +111,6 @@ struct sstable_writer_config { run_id run_identifier = run_id::create_random_id(); size_t summary_byte_cost; sstring origin; - locator::effective_replication_map_ptr erm; private: explicit sstable_writer_config() {} @@ -642,7 +641,6 @@ private: future<> read_scylla_metadata() noexcept; void write_scylla_metadata(shard_id shard, - const dht::sharder& sharder, sstable_enabled_features features, run_identifier identifier, std::optional ld_stats, diff --git a/streaming/consumer.cc b/streaming/consumer.cc index 85d792235b..f513cde7b9 100644 --- a/streaming/consumer.cc +++ b/streaming/consumer.cc @@ -58,7 +58,6 @@ std::function (flat_mutation_reader_v2)> make_streaming_consumer(sstrin schema_ptr s = reader.schema(); auto cfg = cf->get_sstables_manager().configure_writer(origin); - cfg.erm = cf->get_effective_replication_map(); return sst->write_components(std::move(reader), adjusted_estimated_partitions, s, cfg, encoding_stats{}).then([sst] { return sst->open_data();