quiesce: ensure only one block per entry id
There are situations in the extensions path where a single BMC entry id
may be passed into the quiesce logic multiple times. Ensure only one
boot blocking quiesce entry is created per entry id.
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I44dc307117370e521fa97f9b782df99cc535bf33
diff --git a/log_manager.cpp b/log_manager.cpp
index c8c6cc5..e959959 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -371,6 +371,17 @@
void Manager::quiesceOnError(const uint32_t entryId)
{
+ // Verify we don't already have this entry blocking
+ auto it = find_if(
+ this->blockingErrors.begin(), this->blockingErrors.end(),
+ [&](std::unique_ptr<Block>& obj) { return obj->entryId == entryId; });
+ if (it != this->blockingErrors.end())
+ {
+ // Already recorded so just return
+ logging::log<logging::level::DEBUG>(
+ "QuiesceOnError set and callout present but entry already logged");
+ return;
+ }
logging::log<logging::level::INFO>(
"QuiesceOnError set and callout present");