summaryrefslogtreecommitdiffstats
path: root/log_manager.cpp
diff options
context:
space:
mode:
authorMarri Devender Rao <devenrao@in.ibm.com>2017-08-06 05:42:52 -0500
committerPatrick Williams <patrick@stwcx.xyz>2017-08-16 21:09:34 +0000
commit7656fba39d7bef754ee38a1d9a7889e7d3309db4 (patch)
treedfe0e5619204b3674d57bd1f0a4691967b877c13 /log_manager.cpp
parentcfd9a7dd2c3c17f38f71357a5abdbf3516318242 (diff)
downloadphosphor-logging-7656fba39d7bef754ee38a1d9a7889e7d3309db4.tar.gz
phosphor-logging-7656fba39d7bef754ee38a1d9a7889e7d3309db4.zip
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>
Diffstat (limited to 'log_manager.cpp')
-rw-r--r--log_manager.cpp18
1 files changed, 18 insertions, 0 deletions
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 @@ namespace logging
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 @@ void Manager::erase(uint32_t entryId)
entries.erase(entry);
}
+
+ if (entries.size() < ERROR_CAP)
+ {
+ capped = false;
+ }
}
void Manager::restore()
OpenPOWER on IntegriCloud