Project

General

Profile

Bug #39335

Updated by Sage Weil about 5 years ago

set_store does a wait for a mon command reply while holding the GIL.    if you are unlucky we can get a deadlock that is incompletely captured by these partial notes i used to debug it: 
 <pre> 

 40 
 Thread 13 
         clusterstate::lock mgr::lock         mgr::ms_dispatch lock 
         objecter::rwlock    (blocked) activepy::lock            activepymodules::notify_all (wiating) 

 28 Thread 20 
         activepymodules::lock *** mgr::lock         mgr::get_services (waiting) 

 Thread 21 
         clusterstate::lock 
         objecter::rwlock    (blocked) gil               notify_clog 

 27? 
                                         osd_command Thread 22 
         objecter::rwlock (blocked)                submit_command daemonserver::lock        handle_open 

 Thread 24 
         objecter__rwlock (blocked) 


 13 cluster_state::lock       send_report 
         objecter::rwlock 
                 activepymodules::lock (blocked) ... deadlock! objecter::Lock   
         activepy::lock            get_health_checks (waiting)                      $ 

 thread 43 
         activepy::lock            with_perf_counters 
         gil       restorethread      
 </pre> 

Back