-
Type: Bug
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Server Programmability
-
ALL
I discovered this issue by running query setting tests with
testDB.adminCommand({setParameter: 1, traceExceptions: 1});
It looks like an InlineExecutor created in cluster_server_parameter_refresher.cpp throws an exception at destruction originating from ProducerConsumerQueue::_checkConsumerClosed().
Call stack (truncated):
"mongo::printStackTrace()" "mongo::DBException::traceIfNeeded(mongo::DBException const&)" "mongo::error_details::ExceptionForImpl<(mongo::ErrorCodes::Error)274, mongo::AssertionException>::ExceptionForImpl(mongo::Status const&)" "mongo::error_details::throwExceptionForStatus(mongo::Status const&)" "mongo::uassertedWithLocation(mongo::Status const&, char const*, unsigned int)" "mongo::producer_consumer_queue_detail::ProducerConsumerQueue<mongo::unique_function<void (mongo::Status)>, (mongo::producer_consumer_queue_detail::ProducerKind)1, (mongo::producer_consumer_queue_detail::ConsumerKind)0, mongo::producer_consumer_queue_detail::DefaultCostFunction>::_checkConsumerClosed(mongo::WithLock)::{lambda()#2}::operator()() const" "auto mongo::producer_consumer_queue_detail::ProducerConsumerQueue<mongo::unique_function<void (mongo::Status)>, (mongo::producer_consumer_queue_detail::ProducerKind)1, (mongo::producer_consumer_queue_detail::ConsumerKind)0, mongo::producer_consumer_queue_detail::DefaultCostFunction>::_popRunner<mongo::producer_consumer_queue_detail::ProducerConsumerQueue<mongo::unique_function<void (mongo::Status)>, (mongo::producer_consumer_queue_detail::ProducerKind)1, (mongo::producer_consumer_queue_detail::ConsumerKind)0, mongo::producer_consumer_queue_detail::DefaultCostFunction>::tryPop()::{lambda(std::unique_lock<std::mutex>&)#1}>(mongo::producer_consumer_queue_detail::ProducerConsumerQueue<mongo::unique_function<void (mongo::Status)>, (mongo::producer_consumer_queue_detail::ProducerKind)1, (mongo::producer_consumer_queue_detail::ConsumerKind)0, mongo::producer_consumer_queue_detail::DefaultCostFunction>::tryPop()::{lambda(std::unique_lock<std::mutex>&)#1}&&)" "mongo::executor::InlineExecutor::~InlineExecutor()" "mongo::ClusterServerParameterRefresher::_refreshParameters(mongo::OperationContext*)" "mongo::ClusterServerParameterRefresher::refreshParameters(mongo::OperationContext*)" "std::_Function_handler<void (mongo::OperationContext*), mongo::(anonymous namespace)::runMongosServer(mongo::ServiceContext*)::$_8>::_M_invoke(std::_Any_data const&, mongo::OperationContext*&&)" "mongo::query_settings::QuerySettingsManager::refreshQueryShapeConfigurations(mongo::OperationContext*)" "mongo::(anonymous namespace)::readModifyWrite(mongo::OperationContext*, mongo::DatabaseName const&, std::function<void (std::vector<mongo::query_settings::QueryShapeConfiguration, std::allocator<mongo::query_settings::QueryShapeConfiguration> >&)>)" "mongo::TypedCommand<mongo::(anonymous namespace)::RemoveQuerySettingsCommand>::InvocationBase::run(mongo::OperationContext*, mongo::rpc::ReplyBuilderInterface*)"