mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-22 01:20:39 +00:00
" This patchset adds future-returning close methods to all flat_mutation_reader-s and makes sure that all readers are explicitly closed and waited for. The main motivation for doing so is for providing a path for cancelling outstanding i/o requests via a the input_stream close (See https://github.com/scylladb/seastar/issues/859) and wait until they complete. Also, this series also introduces a stop method to reader_concurrency_semaphore to be used when shutting down the database, instead of calling clear_inactive_readers in the database destructor. The series does not change microbenchmarks performance in a significant way. It looks like the results are within the tests' jitter. - perf_simple_query: (in transactions per second, more is better) before: median 184701.83 tps (90 allocs/op, 20 tasks/op) after: median 188970.69 tps (90 allocs/op, 20 tasks/op) (+2.3%) - perf_mutation_readers: (in time per iteration, less is better) combined.one_row 65.042ns -> 57.961ns (-10.9%) combined.single_active 46.634us -> 46.216us ( -0.9%) combined.many_overlapping 364.752us -> 371.507us ( +1.9%) combined.disjoint_interleaved 43.634us -> 43.448us ( -0.4%) combined.disjoint_ranges 43.011us -> 42.991us ( -0.0%) combined.overlapping_partitions_disjoint_rows 57.609us -> 58.820us ( +2.1%) clustering_combined.ranges_generic 93.464ns -> 96.236ns ( +3.0%) clustering_combined.ranges_specialized 86.537ns -> 87.645ns ( +1.3%) memtable.one_partition_one_row 903.546ns -> 957.639ns ( +6.0%) memtable.one_partition_many_rows 6.474us -> 6.444us ( -0.5%) memtable.one_large_partition 905.593us -> 878.271us ( -3.0%) memtable.many_partitions_one_row 13.815us -> 14.718us ( +6.5%) memtable.many_partitions_many_rows 161.250us -> 158.590us ( -1.6%) memtable.many_large_partitions 24.237ms -> 23.348ms ( -3.7%) average -0.02% Fixes #1076 Refs #2927 Test: unit(release, debug) Perf: perf_mutation_readers, perf_simple_query (release) Dtest: next-gating(release), materialized_views_test:TestMaterializedViews.interrupt_build_process_and_resharding_max_to_half_test repair_additional_test:RepairAdditionalTest.repair_disjoint_row_3nodes_diff_shard_count_test(debug) " * tag 'flat_mutation_reader-close-v7' of github.com:bhalevy/scylla: (94 commits) mutation_reader: shard_reader: get rid of stop mutation_reader: multishard_combining_reader: get rid of destructor flat_mutation_reader: abort if not closed before destroyed flat_mutation_reader: require close repair: row_level_repair: run: close repair_meta when done repair: repair_reader: close underlying reader on_end_of_stream perf: everywhere: close flat_mutation_reader when done test: everywhere: close flat_mutation_reader when done mutation_partition: counter_write_query: close reader when done index: built_indexes_reader: implement close mutation_writer: multishard_writer: close readers when done mutation_writer: feed_writer: close reader when done table: for_all_partitions_slow: close iteration_step reader when done view_builder: stop: close all build_step readers stream_transfer_task: execute: close send_info reader when done view_update_generator: start: close staging_sstable_reader when done view: build_progress_virtual_reader: implement close method view: generate_view_updates: close builder readers when done view_builder: initialize_reader_at_current_token: close reader before reassigning it view_builder: do_build_step: close build_step reader when done ...