From 3a3e3e88bf5a93251cb355104e4341f2626abf79 Mon Sep 17 00:00:00 2001
From: Susumu Oda <susumu.oda@cern.ch>
Date: Tue, 30 Jun 2020 12:37:20 +0000
Subject: [PATCH] Add ATLAS_CHECK_THREAD_SAFETY to PixelConditionsTools package
 to check and keep thread safety. Add ATLAS_NO_CHECK_FILE_THREAD_SAFETY of
 CxxUtils/checker_macros.h to PixelByteStreamErrorsTool.h/cxx because This
 class currently has many mutable memebers without mutex guard or atomicity.

---
 .../InDetConditions/PixelConditionsTools/CMakeLists.txt       | 3 ++-
 .../PixelConditionsTools/ATLAS_CHECK_THREAD_SAFETY            | 1 +
 .../PixelConditionsTools/src/PixelByteStreamErrorsTool.h      | 4 +++-
 3 files changed, 6 insertions(+), 2 deletions(-)
 create mode 100644 InnerDetector/InDetConditions/PixelConditionsTools/PixelConditionsTools/ATLAS_CHECK_THREAD_SAFETY

diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt b/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt
index 31ad2e8a32e..bd396954966 100644
--- a/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt
+++ b/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt
@@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC
   InnerDetector/InDetConditions/InDetConditionsSummaryService
   PRIVATE
   Control/AthenaBaseComps
+  Control/CxxUtils
   Control/SGTools
   Database/AthenaPOOL/AthenaPoolUtilities
   Database/RegistrationServices
@@ -44,7 +45,7 @@ atlas_add_component( PixelConditionsTools
                      src/components/*.cxx
                      INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS}
                      LINK_LIBRARIES ${CLHEP_LIBRARIES} ${EIGEN_LIBRARIES} PixelConditionsToolsLib AthenaKernel GeoPrimitives GaudiKernel AthenaBaseComps 
-                     SGTools AthenaPoolUtilities DetDescrConditions Identifier PixelCablingLib PixelConditionsData InDetIdentifier 
+                     CxxUtils SGTools AthenaPoolUtilities DetDescrConditions Identifier PixelCablingLib PixelConditionsData InDetIdentifier 
                      GeoModelUtilities InDetReadoutGeometry PathResolver PixelGeoModelLib InDetByteStreamErrors  )
 
 # Install files from the package:
diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/PixelConditionsTools/ATLAS_CHECK_THREAD_SAFETY b/InnerDetector/InDetConditions/PixelConditionsTools/PixelConditionsTools/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 00000000000..f11e02535b0
--- /dev/null
+++ b/InnerDetector/InDetConditions/PixelConditionsTools/PixelConditionsTools/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+InnerDetector/InDetConditions/PixelConditionsTools
diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelByteStreamErrorsTool.h b/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelByteStreamErrorsTool.h
index 64b8a6b94ea..a957f7a58dc 100644
--- a/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelByteStreamErrorsTool.h
+++ b/InnerDetector/InDetConditions/PixelConditionsTools/src/PixelByteStreamErrorsTool.h
@@ -18,6 +18,7 @@
 #include "GaudiKernel/ServiceHandle.h"
 
 //Athena includes
+#include "CxxUtils/checker_macros.h"
 #include "Identifier/Identifier.h"
 #include "Identifier/IdentifierHash.h"
 #include "InDetIdentifier/PixelID.h"
@@ -28,7 +29,8 @@
 #include "StoreGate/ReadHandleKey.h"
 #include "StoreGate/WriteHandleKey.h"
 
-class PixelByteStreamErrorsTool: public AthAlgTool, public IPixelByteStreamErrorsTool {
+class ATLAS_NOT_THREAD_SAFE PixelByteStreamErrorsTool: // This class currently has many mutable memebers without mutex guard or atomicity.
+public AthAlgTool, public IPixelByteStreamErrorsTool {
   public:
     static InterfaceID& interfaceID();
 
-- 
GitLab