From adcf9328a1d0cf9377688ce10fed5e13975cc94a Mon Sep 17 00:00:00 2001 From: Alja Mrak-Tadel Date: Thu, 9 Jun 2016 14:43:07 -0700 Subject: [PATCH] Delete disk syncer in destructor. --- src/XrdFileCache/XrdFileCacheFile.cc | 68 +++++++++++++--------------- 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/src/XrdFileCache/XrdFileCacheFile.cc b/src/XrdFileCache/XrdFileCacheFile.cc index f7fc20214db..262e72f3bdf 100644 --- a/src/XrdFileCache/XrdFileCacheFile.cc +++ b/src/XrdFileCache/XrdFileCacheFile.cc @@ -88,7 +88,6 @@ m_prefetchState(kOn), m_prefetchReadCnt(0), m_prefetchHitCnt(0), m_prefetchScore(1), -m_prefetchCurrentCnt(0), m_traceID("File") { Open(); @@ -116,6 +115,9 @@ File::~File() AppendIOStatToFileInfo(); m_infoFile->Fsync(); + delete m_syncer; + m_syncer = NULL; + if (m_output) { m_output->Close(); @@ -147,48 +149,40 @@ bool File::ioActive() m_stateCond.UnLock(); m_stateCond.Lock(); - bool isPrefetching = (m_prefetchCurrentCnt > 0); m_stateCond.UnLock(); - if (isPrefetching == false) - { - m_downloadCond.Lock(); - - /* - // dump print - for (BlockMap_i it = m_block_map.begin(); it != m_block_map.end(); ++it) { - Block* b = it->second; - TRACEF(Dump, "File::InitiateClose() block idx = " << b->m_offset/m_cfi.GetBufferSize() << " prefetch = " << b->preferch << " refcnt " << b->refcnt); - + m_downloadCond.Lock(); + /* + // high debug print + for (BlockMap_i it = m_block_map.begin(); it != m_block_map.end(); ++it) { + Block* b = it->second; + TRACEF(Dump, "File::InitiateClose() block idx = " << b->m_offset/m_cfi.GetBufferSize() << " prefetch = " << b->preferch << " refcnt " << b->refcnt); + + } + */ + // remove failed blocks + BlockMap_i itr = m_block_map.begin(); + while (itr != m_block_map.end()) { + if (itr->second->is_failed() && itr->second->m_refcnt == 1) { + BlockMap_i toErase = itr; + ++itr; + TRACEF(Debug, "Remove failed block " << itr->second->m_offset/m_cfi.GetBufferSize()); + free_block(toErase->second); } - */ - - // remove failed blocks - BlockMap_i itr = m_block_map.begin(); - while (itr != m_block_map.end()) { - if (itr->second->is_failed() && itr->second->m_refcnt == 1) { - BlockMap_i toErase = itr; - ++itr; - TRACEF(Debug, "Remove failed block " << itr->second->m_offset/m_cfi.GetBufferSize()); - free_block(toErase->second); - } - else { - ++itr; - } + else { + ++itr; } + } - bool blockMapEmpty = m_block_map.empty(); - m_downloadCond.UnLock(); + bool blockMapEmpty = m_block_map.empty(); + m_downloadCond.UnLock(); - if ( blockMapEmpty) - { - // file is not active when block map is empty and sync is done - XrdSysMutexHelper _lck(&m_syncStatusMutex); - if (m_in_sync == false) { - delete m_syncer; - m_syncer = NULL; - return false; - } + if ( blockMapEmpty) + { + // file is not active when block map is empty and sync is done + XrdSysMutexHelper _lck(&m_syncStatusMutex); + if (m_in_sync == false) { + return false; } }