Skip to content
  • Changli Gao's avatar
    Fix deadlock when calling getMergedHistogram · 8e68ffb8
    Changli Gao authored
    Summary:
    When calling StatisticsImpl::HistogramInfo::getMergedHistogram(), if
    there is a dying thread, which is calling
    ThreadLocalPtr::StaticMeta::OnThreadExit() to merge its thread values to
    HistogramInfo, deadlock will occur. Because the former try to hold
    merge_lock then ThreadMeta::mutex_, but the later try to hold
    ThreadMeta::mutex_ then merge_lock. In short, the locking order isn't
    the same.
    
    This patch addressed this issue by releasing merge_lock before folding
    thread values.
    Closes https://github.com/facebook/rocksdb/pull/1552
    
    Differential Revision: D4211942
    
    Pulled By: ajkr
    
    fbshipit-source-id: ef89bcb
    8e68ffb8