From aeffbb6732f9a55434e0772e04d79f207b1cb74d Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Wed, 13 Jun 2018 16:15:47 +0300 Subject: [PATCH] database: stop using incremental selectors There is a bug in incremental_selector for partitioned_sstable_set, so until it is found, stop using it. This degrades scan performance of Leveled Compaction Strategy tables. Fixes #3513. (as a workaround) Introduced: 2.1 Message-Id: <20180613131547.19084-1-avi@scylladb.com> --- database.cc | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/database.cc b/database.cc index 9209f7d755..14a9107bae 100644 --- a/database.cc +++ b/database.cc @@ -4597,11 +4597,14 @@ flat_mutation_reader make_local_shard_sstable_reader(schema_ptr s, } return reader; }; - return make_combined_reader(s, std::make_unique(s, - std::move(sstables), - pr, - std::move(trace_state), - std::move(reader_factory_fn)), + auto all_readers = boost::copy_range>( + *sstables->all() + | boost::adaptors::transformed([&] (sstables::shared_sstable sst) -> flat_mutation_reader { + return reader_factory_fn(sst, pr); + }) + ); + return make_combined_reader(s, + std::move(all_readers), fwd, fwd_mr); } @@ -4620,11 +4623,14 @@ flat_mutation_reader make_range_sstable_reader(schema_ptr s, auto reader_factory_fn = [s, &slice, &pc, resource_tracker, fwd, fwd_mr, &monitor_generator] (sstables::shared_sstable& sst, const dht::partition_range& pr) { return sst->read_range_rows_flat(s, pr, slice, pc, resource_tracker, fwd, fwd_mr, monitor_generator(sst)); }; - return make_combined_reader(s, std::make_unique(s, - std::move(sstables), - pr, - std::move(trace_state), - std::move(reader_factory_fn)), + auto sstable_readers = boost::copy_range>( + *sstables->all() + | boost::adaptors::transformed([&] (sstables::shared_sstable sst) { + return reader_factory_fn(sst, pr); + }) + ); + return make_combined_reader(s, + std::move(sstable_readers), fwd, fwd_mr); }