MCPcopy Create free account
hub / github.com/baidu/tera / Evict

Method Evict

src/leveldb/persistent_cache/persistent_cache_metadata.cc:31–57  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29}
30
31CacheFile* PersistentCacheMetaData::Evict() {
32 CacheFile* evicted_file = nullptr;
33
34 {
35 std::lock_guard<std::mutex> _(evictable_files_lock_);
36 if (!evictable_files_.empty()) {
37 auto iter = evictable_files_.begin();
38 while (iter != evictable_files_.end() && (*iter)->refs_) {
39 ++iter;
40 }
41 if (iter != evictable_files_.end()) {
42 evicted_file = *iter;
43 evictable_files_.erase(iter);
44 LEVELDB_LOG("Find evictable file for evict, current evictable files size: %lu\n",
45 evictable_files_.size());
46 }
47 }
48 }
49
50 if (!evicted_file) {
51 using std::placeholders::_1;
52 auto fn = std::bind(&PersistentCacheMetaData::RemoveFileInfo, this, _1);
53 evicted_file = cache_file_index_.Evict(fn);
54 }
55
56 return evicted_file;
57}
58
59void PersistentCacheMetaData::Clear() {
60 cache_file_index_.Clear([](CacheFile* arg) { delete arg; });

Callers 1

MakeRoomForWriteMethod · 0.45

Calls 2

emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected