Implement a cap on the number of committed errors
Resolves openbmc/openbmc#1617
Change-Id: I5850e5addb723e6f5102eb4677bb365285c1a633
Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
diff --git a/log_manager.cpp b/log_manager.cpp
index 6ae59fd..29c0ffe 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -26,6 +26,19 @@
void Manager::commit(uint64_t transactionId, std::string errMsg)
{
+ if (capped)
+ {
+ return;
+ }
+ if (entries.size() >= ERROR_CAP)
+ {
+ log<level::ERR>("Reached error cap, Ignoring error",
+ entry("SIZE=%d", entries.size()),
+ entry("ERROR_CAP=%d", ERROR_CAP));
+ capped = true;
+ return;
+ }
+
constexpr const auto transactionIdVar = "TRANSACTION_ID";
// Length of 'TRANSACTION_ID' string.
constexpr const auto transactionIdVarSize = strlen(transactionIdVar);
@@ -194,6 +207,11 @@
entries.erase(entry);
}
+
+ if (entries.size() < ERROR_CAP)
+ {
+ capped = false;
+ }
}
void Manager::restore()