Better exception handling in the analyzer
Give the ability to continue creating a PEL with FFDC if there is an
exception in the analysis portion of the analyzer.
Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
Change-Id: I2de281a7c974cfc80779a861a12cb2b9c99e0491
diff --git a/analyzer/analyzer_main.cpp b/analyzer/analyzer_main.cpp
index 25f7005..b89124e 100644
--- a/analyzer/analyzer_main.cpp
+++ b/analyzer/analyzer_main.cpp
@@ -157,13 +157,27 @@
{
if (attnFound)
{
- // Resolve the root cause attention.
- RasDataParser rasData{};
- rasData.getResolution(rootCause)->resolve(servData);
+ try
+ {
+ // Resolve the root cause attention.
+ RasDataParser rasData{};
+ rasData.getResolution(rootCause)->resolve(servData);
+ }
+ catch (const std::exception& e)
+ {
+ trace::err("Exception caught during root cause analysis");
+ trace::err(e.what());
+
+ // We'll still want to create a PEL for the FFDC, but
+ // since the analysis failed, we need to callout Level 2
+ // Support.
+ servData.calloutProcedure(callout::Procedure::NEXTLVL,
+ callout::Priority::HIGH);
+ }
}
else
{
- // Analysis failed so apply the Level 2 Support resolution.
+ // Analysis failed so callout the Level 2 Support.
servData.calloutProcedure(callout::Procedure::NEXTLVL,
callout::Priority::HIGH);
}