Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Constant Errors with Reactor Stalled on new Node -- Constant High Load #14008

Closed
1 task done
tynli opened this issue May 23, 2023 · 17 comments · Fixed by #14884
Closed
1 task done

Constant Errors with Reactor Stalled on new Node -- Constant High Load #14008

tynli opened this issue May 23, 2023 · 17 comments · Fixed by #14884
Assignees
Labels
P2 High Priority
Milestone

Comments

@tynli
Copy link

tynli commented May 23, 2023

This is Scylla's bug tracker, to be used for reporting bugs only.
If you have a question about Scylla, and not a bug, please ask it in
our mailing-list at scylladb-dev@googlegroups.com or in our slack channel.

  • I have read the disclaimer above, and I am reporting a suspected malfunction in Scylla.

Installation details
Scylla version (or git commit hash): 5.1.5
Cluster size: 3x4
OS (RHEL/CentOS/Ubuntu/AWS AMI): Ubuntu 20.04

Hardware details (for performance issues) Delete if unneeded
Platform (physical/VM/cloud instance type/docker): Bare Metal
Hardware: sockets=1 cores=96 hyperthreading=yes memory=768GB
Disks: (SSD/HDD, count) 8x NVMe, RAID-0

After adding a node to my cluster, I have been consistently getting messages like the following in syslog:

Reactor stalled for 130 ms on shard 0. Backtrace: 0x4d2dd02 0x4d2c960 0x4d2dc10 0x7f245c4f8a1f 0x50095bf 0x2e44f67 0x301c36b 0x301caf3 0x300bfd0 0x300be2e 0x252ca8f 0x261828e 0x261973c 0x4d3d4f4 0x4d3e8d7 0x4d3db2c 0x4ce3a68 0x4ce2f41 0x1032b76 0x103015a 0x27b74 0x102f02d

The CPU load on this server has remained high even after the join completed, with these messages occurring every few seconds. This is the same server for which I had the issues mentioned in #13439, and I ended up modifying the contents of io_properties.yaml. The values I put in there reflect the results I got on this hardware with the fio tool.

Here is the decoded backtrace:

[Backtrace #0]
void seastar::backtrace<seastar::backtrace_buffer::append_backtrace_oneline()::{lambda(seastar::frame)#1}>(seastar::backtrace_buffer::append_backtrace_oneline()::{lambda(seastar::frame)#1}&&) at ./build/release/seastar/./seastar/include/seastar/util/backtrace.hh:59
 (inlined by) seastar::backtrace_buffer::append_backtrace_oneline() at ./build/release/seastar/./seastar/src/core/reactor.cc:774
 (inlined by) seastar::print_with_backtrace(seastar::backtrace_buffer&, bool) at ./build/release/seastar/./seastar/src/core/reactor.cc:793
seastar::internal::cpu_stall_detector::generate_trace() at ./build/release/seastar/./seastar/src/core/reactor.cc:1368
seastar::internal::cpu_stall_detector::maybe_report() at ./build/release/seastar/./seastar/src/core/reactor.cc:1110
 (inlined by) seastar::internal::cpu_stall_detector::on_signal() at ./build/release/seastar/./seastar/src/core/reactor.cc:1127
 (inlined by) seastar::reactor::block_notifier(int) at ./build/release/seastar/./seastar/src/core/reactor.cc:1351
?? ??:0
seastar::operator<<(std::ostream&, seastar::ipv6_addr const&) at ./build/release/seastar/./seastar/src/net/inet_address.cc:350
std::hash<gms::inet_address>::operator()(gms::inet_address) const at ././gms/inet_address.hh:89
 (inlined by) std::__detail::_Hash_code_base<gms::inet_address, std::pair<gms::inet_address const, gms::endpoint_state>, std::__detail::_Select1st, std::hash<gms::inet_address>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_hash_code(gms::inet_address const&) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/hashtable_policy.h:1219
 (inlined by) std::_Hashtable<gms::inet_address, std::pair<gms::inet_address const, gms::endpoint_state>, std::allocator<std::pair<gms::inet_address const, gms::endpoint_state> >, std::__detail::_Select1st, std::equal_to<gms::inet_address>, std::hash<gms::inet_address>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::find(gms::inet_address const&) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/hashtable.h:1608
 (inlined by) std::unordered_map<gms::inet_address, gms::endpoint_state, std::hash<gms::inet_address>, std::equal_to<gms::inet_address>, std::allocator<std::pair<gms::inet_address const, gms::endpoint_state> > >::find(gms::inet_address const&) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/unordered_map.h:880
 (inlined by) gms::gossiper::get_endpoint_state_for_endpoint_ptr(gms::inet_address) const at ./gms/gossiper.cc:1335
 (inlined by) gms::gossiper::get_application_state_ptr(gms::inet_address, gms::application_state) const at ./gms/gossiper.cc:2251
locator::production_snitch_base::get_endpoint_info(gms::inet_address, gms::application_state) at ./locator/production_snitch_base.cc:63
 (inlined by) locator::production_snitch_base::get_endpoint_info(gms::inet_address, gms::application_state, seastar::basic_sstring<char, unsigned int, 15u, true> const&) at ./locator/production_snitch_base.cc:69
locator::production_snitch_base::get_datacenter(gms::inet_address) at ./locator/production_snitch_base.cc:52
locator::snitch_base::compare_endpoints(gms::inet_address&, gms::inet_address&, gms::inet_address&) at ./locator/snitch_base.cc:54
operator() at ./locator/snitch_base.cc:33
 (inlined by) bool __gnu_cxx::__ops::_Val_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>::operator()<gms::inet_address, gms::inet_address*>(gms::inet_address&, gms::inet_address*) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/predefined_ops.h:240
 (inlined by) void std::__unguarded_linear_insert<gms::inet_address*, __gnu_cxx::__ops::_Val_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, __gnu_cxx::__ops::_Val_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1806
 (inlined by) void std::__insertion_sort<gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1834
 (inlined by) void std::__final_insertion_sort<gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1871
 (inlined by) void std::__sort<gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1957
 (inlined by) void std::sort<gms::inet_address*, locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>(gms::inet_address*, gms::inet_address*, locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:4875
 (inlined by) locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&) at ./locator/snitch_base.cc:30
service::storage_proxy::sort_endpoints_by_proximity(utils::small_vector<gms::inet_address, 3ul>&) at ./service/storage_proxy.cc:5027
 (inlined by) service::storage_proxy::get_live_sorted_endpoints(replica::keyspace&, dht::token const&) const at ./service/storage_proxy.cc:5037
 (inlined by) service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit) at ./service/storage_proxy.cc:4447
operator() at ./service/storage_proxy.cc:4585
seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> > seastar::futurize<seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> > >::invoke<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > >(service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&) at ././seastar/include/seastar/core/future.hh:2149
 (inlined by) auto seastar::futurize_invoke<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > >(service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&) at ././seastar/include/seastar/core/future.hh:2180
 (inlined by) utils::internal::result_wrapped_call_traits<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy>, false>::invoke_with_value({lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, utils::exception_container_throw_policy&&) at ././utils/result_combinators.hh:73
 (inlined by) auto utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>::operator()<boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy>) at ././utils/result_combinators.hh:124
 (inlined by) seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> > std::__invoke_impl<seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> >, utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> >(std::__invoke_other, utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy>&&) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/invoke.h:61
 (inlined by) std::__invoke_result<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >::type std::__invoke<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(std::__invoke_result&&, (utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&)...) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/invoke.h:96
 (inlined by) std::invoke_result<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >::type std::invoke<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(std::invoke_result&&, (utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&)...) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/functional:97
 (inlined by) auto seastar::internal::future_invoke<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy>&&) at ././seastar/include/seastar/core/future.hh:1225
 (inlined by) operator() at ././seastar/include/seastar/core/future.hh:1596
 (inlined by) _ZN7seastar8futurizeINS_6futureIN5boost10outcome_v212basic_resultIN7service43query_partition_key_range_concurrent_resultEN5utils19exception_containerIJN10exceptions32mutation_write_timeout_exceptionENS9_22read_timeout_exceptionENS9_22read_failure_exceptionENS9_20rate_limit_exceptionEEEENS7_32exception_container_throw_policyEEEEEE22satisfy_with_result_ofIZZNS1_INS4_INS_11foreign_ptrINS_13lw_shared_ptrIN5query6resultEEEEESE_SF_EEE14then_impl_nrvoINS7_8internal14result_wrapperIZZNS5_13storage_proxy36query_partition_key_range_concurrentENSt6chrono10time_pointINS_12lowres_clockENSW_8durationIlSt5ratioILl1ELl1000000000EEEEEEOSt6vectorISP_SaISP_EENSL_INSM_12read_commandEEEN2db17consistency_levelEO32query_ranges_to_vnodes_generatoriN7tracing15trace_state_ptrEmjSt13unordered_mapI20nonwrapping_intervalIN3dht5tokenEES14_INS7_4UUIDESaIS1L_EESt4hashIS1K_ESt8equal_toIS1K_ESaISt4pairIKS1K_S1N_EEE14service_permitENK4$_42clEvEUlOSP_E_Lb0EEESH_EET0_OT_ENKUlONS_8internal22promise_base_with_typeISG_EERS21_ONS_12future_stateISQ_EEE_clES28_S29_S2C_EUlvE_EEvS28_S24_ at ././seastar/include/seastar/core/future.hh:2134
 (inlined by) operator() at ././seastar/include/seastar/core/future.hh:1589
 (inlined by) _ZN7seastar12continuationINS_8internal22promise_base_with_typeIN5boost10outcome_v212basic_resultIN7service43query_partition_key_range_concurrent_resultEN5utils19exception_containerIJN10exceptions32mutation_write_timeout_exceptionENSA_22read_timeout_exceptionENSA_22read_failure_exceptionENSA_20rate_limit_exceptionEEEENS8_32exception_container_throw_policyEEEEENS8_8internal14result_wrapperIZZNS6_13storage_proxy36query_partition_key_range_concurrentENSt6chrono10time_pointINS_12lowres_clockENSM_8durationIlSt5ratioILl1ELl1000000000EEEEEEOSt6vectorINS_11foreign_ptrINS_13lw_shared_ptrIN5query6resultEEEEESaIS10_EENSW_INSX_12read_commandEEEN2db17consistency_levelEO32query_ranges_to_vnodes_generatoriN7tracing15trace_state_ptrEmjSt13unordered_mapI20nonwrapping_intervalIN3dht5tokenEESU_INS8_4UUIDESaIS1H_EESt4hashIS1G_ESt8equal_toIS1G_ESaISt4pairIKS1G_S1J_EEE14service_permitENK4$_42clEvEUlOS10_E_Lb0EEEZNS_6futureINS5_IS10_SF_SG_EEE14then_impl_nrvoIS1X_NS1Y_ISH_EEEET0_OT_EUlOSI_RS1X_ONS_12future_stateIS1Z_EEE_S1Z_E15run_and_disposeEv at ././seastar/include/seastar/core/future.hh:781
seastar::reactor::run_tasks(seastar::reactor::task_queue&) at ./build/release/seastar/./seastar/src/core/reactor.cc:2345
 (inlined by) seastar::reactor::run_some_tasks() at ./build/release/seastar/./seastar/src/core/reactor.cc:2752
seastar::reactor::do_run() at ./build/release/seastar/./seastar/src/core/reactor.cc:2921
seastar::reactor::run() at ./build/release/seastar/./seastar/src/core/reactor.cc:2804
seastar::app_template::run_deprecated(int, char**, std::function<void ()>&&) at ./build/release/seastar/./seastar/src/core/app-template.cc:265
seastar::app_template::run(int, char**, std::function<seastar::future<int> ()>&&) at ./build/release/seastar/./seastar/src/core/app-template.cc:156
scylla_main(int, char**) at ./main.cc:555
std::function<int (int, char**)>::operator()(int, char**) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/std_function.h:590
 (inlined by) main at ./main.cc:1711
?? ??:0
_start at ??:?
@DoronArazii
Copy link

@xemul can you help with triaging this issue

@michoecho
Copy link
Contributor

Just a small note: when a signal handler is involved, the last address in the backtrace (before the handler) is offset by 1 with respect to what addr2line expects, and sometimes this changes the last symbol. This does happen here, and the real backtrace is:

[Backtrace #0]
void seastar::backtrace<seastar::backtrace_buffer::append_backtrace_oneline()::{lambda(seastar::frame)#1}>(seastar::backtrace_buffer::append_backtrace_oneline()::{lambda(seastar::frame)#1}&&) at ./build/release/seastar/./seastar/include/seastar/util/backtrace.hh:59
 (inlined by) seastar::backtrace_buffer::append_backtrace_oneline() at ./build/release/seastar/./seastar/src/core/reactor.cc:774
 (inlined by) seastar::print_with_backtrace(seastar::backtrace_buffer&, bool) at ./build/release/seastar/./seastar/src/core/reactor.cc:793
seastar::internal::cpu_stall_detector::generate_trace() at ./build/release/seastar/./seastar/src/core/reactor.cc:1368
seastar::internal::cpu_stall_detector::maybe_report() at ./build/release/seastar/./seastar/src/core/reactor.cc:1110
 (inlined by) seastar::internal::cpu_stall_detector::on_signal() at ./build/release/seastar/./seastar/src/core/reactor.cc:1127
 (inlined by) seastar::reactor::block_notifier(int) at ./build/release/seastar/./seastar/src/core/reactor.cc:1351
?? ??:0
std::hash<seastar::net::inet_address>::operator()(seastar::net::inet_address const&) const at ./build/release/seastar/./seastar/src/net/inet_address.cc:353
std::hash<gms::inet_address>::operator()(gms::inet_address) const at ././gms/inet_address.hh:89
 (inlined by) std::__detail::_Hash_code_base<gms::inet_address, std::pair<gms::inet_address const, gms::endpoint_state>, std::__detail::_Select1st, std::hash<gms::inet_address>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_hash_code(gms::inet_address const&) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/hashtable_policy.h:1219
 (inlined by) std::_Hashtable<gms::inet_address, std::pair<gms::inet_address const, gms::endpoint_state>, std::allocator<std::pair<gms::inet_address const, gms::endpoint_state> >, std::__detail::_Select1st, std::equal_to<gms::inet_address>, std::hash<gms::inet_address>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::find(gms::inet_address const&) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/hashtable.h:1608
 (inlined by) std::unordered_map<gms::inet_address, gms::endpoint_state, std::hash<gms::inet_address>, std::equal_to<gms::inet_address>, std::allocator<std::pair<gms::inet_address const, gms::endpoint_state> > >::find(gms::inet_address const&) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/unordered_map.h:880
 (inlined by) gms::gossiper::get_endpoint_state_for_endpoint_ptr(gms::inet_address) const at ./gms/gossiper.cc:1335
 (inlined by) gms::gossiper::get_application_state_ptr(gms::inet_address, gms::application_state) const at ./gms/gossiper.cc:2251
locator::production_snitch_base::get_endpoint_info(gms::inet_address, gms::application_state) at ./locator/production_snitch_base.cc:63
 (inlined by) locator::production_snitch_base::get_endpoint_info(gms::inet_address, gms::application_state, seastar::basic_sstring<char, unsigned int, 15u, true> const&) at ./locator/production_snitch_base.cc:69
locator::production_snitch_base::get_datacenter(gms::inet_address) at ./locator/production_snitch_base.cc:52
locator::snitch_base::compare_endpoints(gms::inet_address&, gms::inet_address&, gms::inet_address&) at ./locator/snitch_base.cc:54
operator() at ./locator/snitch_base.cc:33
 (inlined by) bool __gnu_cxx::__ops::_Val_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>::operator()<gms::inet_address, gms::inet_address*>(gms::inet_address&, gms::inet_address*) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/predefined_ops.h:240
 (inlined by) void std::__unguarded_linear_insert<gms::inet_address*, __gnu_cxx::__ops::_Val_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, __gnu_cxx::__ops::_Val_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1806
 (inlined by) void std::__insertion_sort<gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1834
 (inlined by) void std::__final_insertion_sort<gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1871
 (inlined by) void std::__sort<gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0> >(gms::inet_address*, gms::inet_address*, __gnu_cxx::__ops::_Iter_comp_iter<locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:1957
 (inlined by) void std::sort<gms::inet_address*, locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0>(gms::inet_address*, gms::inet_address*, locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&)::$_0) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:4875
 (inlined by) locator::snitch_base::sort_by_proximity(gms::inet_address, utils::small_vector<gms::inet_address, 3ul>&) at ./locator/snitch_base.cc:30
service::storage_proxy::sort_endpoints_by_proximity(utils::small_vector<gms::inet_address, 3ul>&) at ./service/storage_proxy.cc:5027
 (inlined by) service::storage_proxy::get_live_sorted_endpoints(replica::keyspace&, dht::token const&) const at ./service/storage_proxy.cc:5037
 (inlined by) service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit) at ./service/storage_proxy.cc:4447
operator() at ./service/storage_proxy.cc:4585
seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> > seastar::futurize<seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> > >::invoke<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > >(service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&) at ././seastar/include/seastar/core/future.hh:2149
 (inlined by) auto seastar::futurize_invoke<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > >(service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&) at ././seastar/include/seastar/core/future.hh:2180
 (inlined by) utils::internal::result_wrapped_call_traits<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy>, false>::invoke_with_value({lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}&, utils::exception_container_throw_policy&&) at ././utils/result_combinators.hh:73
 (inlined by) auto utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>::operator()<boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy>) at ././utils/result_combinators.hh:124
 (inlined by) seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> > std::__invoke_impl<seastar::future<boost::outcome_v2::basic_result<service::query_partition_key_range_concurrent_result, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> >, utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy> >(std::__invoke_other, utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, exceptions::read_timeout_exception, exceptions::read_failure_exception, exceptions::rate_limit_exception>, utils::exception_container_throw_policy>&&) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/invoke.h:61
 (inlined by) std::__invoke_result<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >::type std::__invoke<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(std::__invoke_result&&, (utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&)...) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/invoke.h:96
 (inlined by) std::invoke_result<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >::type std::invoke<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(std::invoke_result&&, (utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&)...) at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/functional:97
 (inlined by) auto seastar::internal::future_invoke<utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy> >(utils::internal::result_wrapper<service::storage_proxy::query_partition_key_range_concurrent(std::chrono::time_point<seastar::lowres_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::vector<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, std::allocator<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> > > >&&, seastar::lw_shared_ptr<query::read_command>, db::consistency_level, query_ranges_to_vnodes_generator&&, int, tracing::trace_state_ptr, unsigned long, unsigned int, std::unordered_map<nonwrapping_interval<dht::token>, std::vector<utils::UUID, std::allocator<utils::UUID> >, std::hash<nonwrapping_interval<dht::token> >, std::equal_to<nonwrapping_interval<dht::token> >, std::allocator<std::pair<nonwrapping_interval<dht::token> const, std::vector<utils::UUID, std::allocator<utils::UUID> > > > >, service_permit)::$_42::operator()() const::{lambda(seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >&&)#1}, false>&, boost::outcome_v2::basic_result<seastar::foreign_ptr<seastar::lw_shared_ptr<query::result> >, utils::exception_container<exceptions::mutation_write_timeout_exception, utils::exception_container::read_timeout_exception, utils::exception_container::read_failure_exception, utils::exception_container::rate_limit_exception>, utils::exception_container_throw_policy>&&) at ././seastar/include/seastar/core/future.hh:1225
 (inlined by) operator() at ././seastar/include/seastar/core/future.hh:1596
 (inlined by) _ZN7seastar8futurizeINS_6futureIN5boost10outcome_v212basic_resultIN7service43query_partition_key_range_concurrent_resultEN5utils19exception_containerIJN10exceptions32mutation_write_timeout_exceptionENS9_22read_timeout_exceptionENS9_22read_failure_exceptionENS9_20rate_limit_exceptionEEEENS7_32exception_container_throw_policyEEEEEE22satisfy_with_result_ofIZZNS1_INS4_INS_11foreign_ptrINS_13lw_shared_ptrIN5query6resultEEEEESE_SF_EEE14then_impl_nrvoINS7_8internal14result_wrapperIZZNS5_13storage_proxy36query_partition_key_range_concurrentENSt6chrono10time_pointINS_12lowres_clockENSW_8durationIlSt5ratioILl1ELl1000000000EEEEEEOSt6vectorISP_SaISP_EENSL_INSM_12read_commandEEEN2db17consistency_levelEO32query_ranges_to_vnodes_generatoriN7tracing15trace_state_ptrEmjSt13unordered_mapI20nonwrapping_intervalIN3dht5tokenEES14_INS7_4UUIDESaIS1L_EESt4hashIS1K_ESt8equal_toIS1K_ESaISt4pairIKS1K_S1N_EEE14service_permitENK4$_42clEvEUlOSP_E_Lb0EEESH_EET0_OT_ENKUlONS_8internal22promise_base_with_typeISG_EERS21_ONS_12future_stateISQ_EEE_clES28_S29_S2C_EUlvE_EEvS28_S24_ at ././seastar/include/seastar/core/future.hh:2134
 (inlined by) operator() at ././seastar/include/seastar/core/future.hh:1589
 (inlined by) _ZN7seastar12continuationINS_8internal22promise_base_with_typeIN5boost10outcome_v212basic_resultIN7service43query_partition_key_range_concurrent_resultEN5utils19exception_containerIJN10exceptions32mutation_write_timeout_exceptionENSA_22read_timeout_exceptionENSA_22read_failure_exceptionENSA_20rate_limit_exceptionEEEENS8_32exception_container_throw_policyEEEEENS8_8internal14result_wrapperIZZNS6_13storage_proxy36query_partition_key_range_concurrentENSt6chrono10time_pointINS_12lowres_clockENSM_8durationIlSt5ratioILl1ELl1000000000EEEEEEOSt6vectorINS_11foreign_ptrINS_13lw_shared_ptrIN5query6resultEEEEESaIS10_EENSW_INSX_12read_commandEEEN2db17consistency_levelEO32query_ranges_to_vnodes_generatoriN7tracing15trace_state_ptrEmjSt13unordered_mapI20nonwrapping_intervalIN3dht5tokenEESU_INS8_4UUIDESaIS1H_EESt4hashIS1G_ESt8equal_toIS1G_ESaISt4pairIKS1G_S1J_EEE14service_permitENK4$_42clEvEUlOS10_E_Lb0EEEZNS_6futureINS5_IS10_SF_SG_EEE14then_impl_nrvoIS1X_NS1Y_ISH_EEEET0_OT_EUlOSI_RS1X_ONS_12future_stateIS1Z_EEE_S1Z_E15run_and_disposeEv at ././seastar/include/seastar/core/future.hh:781
seastar::reactor::run_tasks(seastar::reactor::task_queue&) at ./build/release/seastar/./seastar/src/core/reactor.cc:2345
 (inlined by) seastar::reactor::run_some_tasks() at ./build/release/seastar/./seastar/src/core/reactor.cc:2752
seastar::reactor::do_run() at ./build/release/seastar/./seastar/src/core/reactor.cc:2921
seastar::reactor::run() at ./build/release/seastar/./seastar/src/core/reactor.cc:2804
seastar::app_template::run_deprecated(int, char**, std::function<void ()>&&) at ./build/release/seastar/./seastar/src/core/app-template.cc:265
seastar::app_template::run(int, char**, std::function<seastar::future<int> ()>&&) at ./build/release/seastar/./seastar/src/core/app-template.cc:156
scylla_main(int, char**) at ./main.cc:555
std::function<int (int, char**)>::operator()(int, char**) const at /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/std_function.h:590
 (inlined by) main at ./main.cc:1711
?? ??:0
_start at ??:?

Note the

std::hash<seastar::net::inet_address>::operator()(seastar::net::inet_address const&) const at ./build/release/seastar/./seastar/src/net/inet_address.cc:353

instead of:

seastar::operator<<(std::ostream&, seastar::ipv6_addr const&) at ./build/release/seastar/./seastar/src/net/inet_address.cc:350

on the last frame.

@DoronArazii
Copy link

@bhalevy / @xemul did you had a chance to look at this one

@DoronArazii DoronArazii added the P2 High Priority label Jul 18, 2023
@DoronArazii DoronArazii added this to the 5.4 milestone Jul 18, 2023
@bhalevy
Copy link
Member

bhalevy commented Jul 18, 2023

@tynli how many nodes are in the cluster?
How are they organized into data centers and racks?

@tynli
Copy link
Author

tynli commented Jul 18, 2023

12 nodes, with 3 nodes in each of 4 data centers. Each data center has 1 rack. I was trying to replace the cluster one bit at a time, by adding higher-performance nodes and then decommissioning the lower-performance nodes. I ended up setting up a separate cluster, and migrating the data between clusters.

I do not have access to a unit that is currently in this state.

@bhalevy
Copy link
Member

bhalevy commented Jul 18, 2023

12 nodes, with 3 nodes in each of 4 data centers. Each data center has 1 rack. I was trying to replace the cluster one bit at a time, by adding higher-performance nodes and then decommissioning the lower-performance nodes. I ended up setting up a separate cluster, and migrating the data between clusters.

I do not have access to a unit that is currently in this state.

Thanks for the info.
We'll try to reproduce locally then.

@bhalevy
Copy link
Member

bhalevy commented Jul 18, 2023

Most likely this was fixed or at least mitigated by #12761 (6aa91c1)

@bhalevy
Copy link
Member

bhalevy commented Jul 19, 2023

Since 6aa91c1 targets exactly the code path reported here and we've seen nothing of this source after #12761 I suggest to close this issue (and reopen if it is reproduced in 5.3 or later).

Backport might be possible to 5.2 but not 5.1 which doesn't include any of the locator/topology baseline changes.

@bhalevy bhalevy closed this as completed Jul 19, 2023
@bhalevy bhalevy added Backport candidate backport/5.2 Issues that should be backported to 5.2 branch once they'll be fixed labels Jul 19, 2023
@avikivity
Copy link
Member

@bhalevy how do we see such a huge stall with only 12 nodes?

@avikivity
Copy link
Member

It's more likely the problem is with query_partition_key_range_concurrent().

@bhalevy
Copy link
Member

bhalevy commented Jul 19, 2023

It's possible we never get to yield in the nested call path here:

return p->query_partition_key_range_concurrent(timeout, std::move(results), cmd, cl, std::move(ranges_to_vnodes),
and for a large enough scan this can lead to a stall

@bhalevy bhalevy reopened this Jul 19, 2023
bhalevy added a commit to bhalevy/scylla that referenced this issue Jul 30, 2023
Prevent stalls caused by query_partition_key_range_concurrent
nested called if it never yields.

Fixes scylladb#14008

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
bhalevy added a commit to bhalevy/scylla that referenced this issue Jul 30, 2023
Prevent stalls caused by query_partition_key_range_concurrent
nested calls when it never yields.

Fixes scylladb#14008

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
bhalevy added a commit to bhalevy/scylla that referenced this issue Jul 30, 2023
Prevent stalls caused by query_partition_key_range_concurrent
nested calls when it never yields.

Fixes scylladb#14008

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
bhalevy added a commit to bhalevy/scylla that referenced this issue Jul 31, 2023
Add calls to `maybe_yield` in the per-range loops to
prevent stalls caused by query_partition_key_range_concurrent
nested calls when it never yields.

Fixes scylladb#14008

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
bhalevy added a commit to bhalevy/scylla that referenced this issue Jul 31, 2023
Add calls to `maybe_yield` in the per-range loops to
prevent stalls caused by query_partition_key_range_concurrent
nested calls when it never yields.

Fixes scylladb#14008

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
avikivity added a commit that referenced this issue Jul 31, 2023
…enny Halevy

Prevent stalls caused by query_partition_key_range_concurrent
nested calls when it never yields.

Fixes #14008

Closes #14884

* github.com:scylladb/scylladb:
  storage_proxy: query_partition_key_range_concurrent: maybe_yield in loop
  storage_proxy: query_partition_key_range_concurrent: fixup indentation
  storage_proxy: query_partition_key_range_concurrent: turn tail recursion to iteration
  storage_proxy: coroutinize query_partition_key_range
@mykaul
Copy link
Contributor

mykaul commented Dec 13, 2023

@scylladb/scylla-maint - can you (if we need to) backport to 5.2? (@bhalevy - please ack)

@denesb
Copy link
Contributor

denesb commented Dec 13, 2023

Doesn't apply cleanly to 5.2.

@denesb
Copy link
Contributor

denesb commented Dec 15, 2023

I think we shouldn't backport to 5.2, unless we see the problem on 5.2. On 5.2. this method is very diferent, the stalls could have been introduced by the refactoring done since.

@denesb denesb removed Backport candidate backport/5.2 Issues that should be backported to 5.2 branch once they'll be fixed labels Dec 15, 2023
@bhalevy
Copy link
Member

bhalevy commented Jan 4, 2024

We do see stalls in older releases.
I'll see what it takes to backport the gist of #12761 to 5.2 with the least amount of changes.

bhalevy added a commit to bhalevy/scylla that referenced this issue Jan 4, 2024
The code for compare_endpoints originates at the dawn of time (locator: Convert AbstractNetworkTopologySnitch.java to C++)
and is called on the fast path from storage_proxy via `sort_by_proximity`.

This series considerably reduces the function's footprint by:
1. carefully coding the many comparisons in the function so to reduce the number of conditional banches (apparently the compiler isn't doing a good enough job at optimizing it in this case)
2. avoid sstring copy in topology::get_{datacenter,rack}

\Closes scylladb#12761
Refs scylladb#14008

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
(cherry picked from commit 6aa91c1)
@bhalevy bhalevy added Backport candidate backport/5.2 Issues that should be backported to 5.2 branch once they'll be fixed labels Jan 4, 2024
@mykaul
Copy link
Contributor

mykaul commented Mar 13, 2024

I think this is already backported - @bhalevy ?

@bhalevy
Copy link
Member

bhalevy commented Mar 14, 2024

I think this is already backported - @bhalevy ?

It was backported to 2023.1
not to 5.2, since it's an optimization.
I think we can remove the backport label

@mykaul mykaul removed the backport/5.2 Issues that should be backported to 5.2 branch once they'll be fixed label Mar 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P2 High Priority
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants