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