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()