From 2398ead89a7e5270c01d5157bb9cdcf6cdc65187 Mon Sep 17 00:00:00 2001
From: Ben Wynne <bwynne@cern.ch>
Date: Mon, 10 Aug 2020 17:48:46 +0200
Subject: [PATCH] Added an error message if there's an empty, ModeOR sequence
 in the HLT

---
 .../TriggerMenuMT/python/HLTMenuConfig/Menu/CFValidation.py | 5 +++++
 .../TriggerMenuMT/python/HLTMenuConfig/Test/ViewCFTest.py   | 6 +++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/CFValidation.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/CFValidation.py
index ded5ba44828..e280093f5ea 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/CFValidation.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/CFValidation.py
@@ -20,6 +20,11 @@ def findViewAlgs( inputNodes, viewNodes ):
         # If node is a sequence, explore further
         if isSequence( node ):
 
+            # Empty nodes can cause Gaudi scheduler bug https://gitlab.cern.ch/gaudi/Gaudi/-/issues/135
+            if len( node.getChildren() ) == 0 and node.ModeOR:
+
+              raise RuntimeError( "Empty CF sequence in OR mode can cause Gaudi scheduler bug. Please remove " + node.getName() )
+
             # Identify view CF nodes
             if node.getName() in viewNodes.keys():
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Test/ViewCFTest.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Test/ViewCFTest.py
index 5b5dbf7b3b5..4721965a9c2 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Test/ViewCFTest.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Test/ViewCFTest.py
@@ -20,8 +20,12 @@ class ViewCFTest( unittest.TestCase ):
         vdv1 = CfgMgr.AthViews__ViewDataVerifier("vdv1")
         vdv2 = CfgMgr.AthViews__ViewDataVerifier("vdv2")
 
-        # Add an algorithm to a sequence
+        # Test error for empty sequence
         topSequence += seqOR( "makeViewSequence" )
+        with self.assertRaisesRegex( RuntimeError, "Please remove makeViewSequence" ):
+            findViewAlgs( topSequence.getChildren(), {} )
+
+        # Add an algorithm to the sequence
         topSequence.makeViewSequence += evca1
         #topSequence.makeViewSequence += evca2
 
-- 
GitLab