Static variables are best avoided, for one they wont work correctly for the 
case where you query/build multiple specs on a single run.

A simple alternative would be adding a special purpose counter to the spec 
struct, and log a message based on that towards the end of parsePrep() where 
you can then also log the number of times emitted.

rpmlog() based deduplicator could be handy though, there are some pathological 
cases elsewhere where we end up flooding other (more) relevant messages due to 
stupidly repeated errors. But for that, I'd look at only suppressing 
consecutive identical messages, which has multiple benefits:
- you only ever need to compare the current and previous message
- identical messages over a larger timespan and/or with interleaving other 
messages are probably something you'd want to see anyhow

Basically, whenever a message is logged, compare to the previous one and if 
identical, bump a counter. When a non-identical message arrives, log a 
"previous warning/error suppressed N times", reset counter and proceed with the 
new message as usual. Bonus points for an additional time-stamp and using that 
for additional heuristics: if a log message is repeated within N seconds, you 
probably want to suppress but otherwise you may want to show it regardless.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2388#issuecomment-1423861739
You are receiving this because you are subscribed to this thread.

Message ID: <rpm-software-management/rpm/pull/2388/c1423861...@github.com>
_______________________________________________
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint

Reply via email to