From 8c20f8435f4a583f856d86941e66909eed91f1bb Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Thu, 1 Apr 2021 14:35:36 +0200 Subject: [PATCH] be much more aggressive in scrubbing caches. --- news/article.rb | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/news/article.rb b/news/article.rb index 5df84ef..baded62 100644 --- a/news/article.rb +++ b/news/article.rb @@ -114,6 +114,10 @@ def initialize(nntpservers, groupname, newsrc="~/.newsrc", maxage=0) @serverlist = [] @serverpasses = {} @maxage = maxage.to_i + @oldestallowed = 0 + if @maxage != 0 + @oldestallowed = (DateTime.now - @maxage).strftime('%Y%m%d').to_i + end tmplist = nntpservers.split('|') tmplist.each{ |server| @@ -355,10 +359,12 @@ def get_articles(cachedir=false) # dit wellicht alleen doen indien preselector hem uitkiest # en anders een leuk regeltje aan de cache toevoegen, # maar niet in het geheugen houden - if preselect(art[id]["subject"]) + if art[id]["date"].to_i >= @oldestallowed && preselect(art[id]["subject"]) add(id.to_i, art[id]["messid"], art[id]["date"], art[id]["from"], art[id]["subject"], server) end - cache_add(cachedir, id, art[id]["messid"], art[id]["date"], art[id]["from"], art[id]["subject"], server) + if art[id]["date"].to_i >= @oldestallowed + cache_add(cachedir, id, art[id]["messid"], art[id]["date"], art[id]["from"], art[id]["subject"], server) + end end } if @maxage and @maxage > 0 @@ -826,6 +832,7 @@ def save_newsrc() end def cache_add(cachedir, id, messid, date, from, subject, server) + # also add to skip stuff if @cache_buf.has_key?(server) @cache_buf[server].push("#{id}|#{messid}|#{date}|#{from}|#{subject}\n") else @@ -850,7 +857,7 @@ puts "#{Time.now} Reading & scrubbing caches" @connections.keys.each{|server| first = @connections[server]["first"] last = @connections[server]["last"] - #cache_scrub(cachedir, server) + cache_scrub(cachedir, server) puts " #{Time.now} Reading cache for #{server}" excludes[server] = {} @connections[server]["skip_ids"].elements.collect!{|x| excludes[server][x]=true} @@ -877,11 +884,13 @@ puts " #{Time.now} Reading cache for #{server}" if first <= id_i and id_i <= last if ! excludes[server].has_key?(id_i) outfile.puts(line) - if preselect(subject) + if date.to_i >= @oldestallowed && preselect(subject) add(id_i, messid, date, from, subject, server) end # XXX alle traagheid van de cache_read zit in deze regel: - @connections[server]["skip_ids"].insert!(id_i) + if date.to_i < @oldestallowed + @connections[server]["skip_ids"].insert!(id_i) + end end end end @@ -936,11 +945,19 @@ p Time.now outfile = File.new("#{filename}.#{server}.new", "w") or puts "Couldn't open cachefile for writing" infile.each{ |line| id, messid, date, subject = line.split("|", 3) + #puts "#{date.to_i} #{@oldestallowed}" + # XXX maybe also add to skipids ?? + next if date.to_i < @oldestallowed if id.to_i >= @connections[server]["first"] and id.to_i <= @connections[server]["last"] outfile.puts(line) end } + if ( FileUtils.move("#{filename}.#{server}.new", "#{filename}.#{server}") ) + puts " #{Time.now} Cache scrubbed for #{server}" + else + puts "Couldn't scrub #{server} cache" + end end p Time.now end