Module: DiskStore::Reaper::LRU

Defined in:
lib/disk_store/eviction_strategies/lru.rb

Instance Method Summary collapse

Instance Method Details

#directories_to_evictObject



26
27
28
# File 'lib/disk_store/eviction_strategies/lru.rb', line 26

def directories_to_evict
  empty_directories
end

#files_to_evictObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/disk_store/eviction_strategies/lru.rb', line 4

def files_to_evict
  # Collect and sort files based on last access time
  sorted_files = files
    .map { |file|
      st = File.stat(file)
      { path: file, last_fetch: st.atime, size: st.size }
    }
    .sort { |a, b| a[:last_fetch] <=> b[:last_fetch] } # Oldest first

  # Determine which files to evict
  space_to_evict = current_cache_size - maximum_cache_size
  space_evicted = 0
  evictions = []
  while space_evicted < space_to_evict
    evicted_file = sorted_files.shift
    space_evicted += evicted_file[:size]
    evictions << evicted_file
  end

  evictions
end