{"push_id":595027073,"size":2,"distinct_size":2,"ref":"refs/heads/CMSSW_7_5_X","head":"cab8f15aa4794256733854a50911850956b0a0e2","before":"b0be998924f87613154ff2fcf203ed2e24522cfc","commits":[{"sha":"ac0156350d2aa2539cf91ad2ec5f7318dd520807","author":{"email":"ee7ffae25059d993c6abc643ce76d59bafd6b72e@cse.unl.edu","name":"Brian Bockelman"},"message":"Avoid taking open handler mutex from request manager failure.\n\nObserved deadlock:\n\nThread 1:\n  - FileTimer::Run holds FileTimer::pMutex\n  - FileStateHandler::Tick wants to take the FileStateHandler::pMutex\n\nThread 2:\n  - FileStateHandler::OnStateError holds the FileStateHandler::pMutex lock\n  - RequestManager::requestFailure calls\n  - OpenHandler::current_source, which wants the OpenHandler::m_mutex\n\nThread 3:\n  - OpenHandler::HandleResponseWithHosts holds OpenHandler::m_mutex,\n  - ~FileStateHandler calls FileTimer::UnRegisterFileObject which tries\n    to get the FileTimer::pMutex.\n\nWe remove the call to OpenHandler::current_source to break the deadlock.\n\nIf a file-open is in progress, we cannot take the open handler\nmutex from within (RequestManager::requestFailure).\n\nIt is safe to call XrdAdaptor::RequestManager::OpenHandler::open\nfrom within the requestFailure callback; if the file-open was in progress, it will return the shared\nfuture and not touch Xrootd code.  If the file-open was not in progress, it\nis safe to take the open handler mutex in the first place.","distinct":true,"url":"https://api.github.com/repos/cms-sw/cmssw/commits/ac0156350d2aa2539cf91ad2ec5f7318dd520807"},{"sha":"cab8f15aa4794256733854a50911850956b0a0e2","author":{"email":"5a25e995b53ac7cd7cc4edf867580fb423e22fde@cern.ch","name":"cmsbuild"},"message":"Merge pull request #8130 from bbockelm/avoid_xrootd_deadlock\n\nAvoid taking open handler mutex from request manager failure.","distinct":true,"url":"https://api.github.com/repos/cms-sw/cmssw/commits/cab8f15aa4794256733854a50911850956b0a0e2"}]}