From 0a003ceb0c2b0c2364c95be77b57833083cc7793 Mon Sep 17 00:00:00 2001
From: gscalamera <graziano.scalamera@elettra.eu>
Date: Mon, 30 Jan 2023 12:33:06 +0100
Subject: [PATCH] Fix deadlock removing alarms

---
 src/AlarmHandler.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/AlarmHandler.cpp b/src/AlarmHandler.cpp
index ff34b28..0acebd4 100644
--- a/src/AlarmHandler.cpp
+++ b/src/AlarmHandler.cpp
@@ -5867,17 +5867,17 @@ void AlarmHandler::put_signal_property()
 			auto found = local_alarms.find(it2->first);
 			if (found == local_alarms.end())
 			{
-				DEBUG_STREAM << __func__<<": DELETING '" << it2->first << "'" << endl;
+				DEBUG_STREAM << __func__<<": DELETING '" << it2->first << "' saved_alarms.size=" << saved_alarms.size() << endl;
 				DECLARE_TIME_VAR	t0, t1;
 				GET_TIME(t0);
 				alarms.delete_alarm_conf_db(it2->first);
 				GET_TIME(t1);
-				DEBUG_STREAM << __func__ << ": DELETED '" <<it2->first << "' in " << ELAPSED(t0, t1) << " ms" << endl;
-				//savedlock->readerOut();//TODO: with boost shared lock to be released to take exclusive
+				DEBUG_STREAM << __func__ << ": DELETED '" <<it2->first << "' in " << ELAPSED(t0, t1) << " ms saved_alarms.size=" << saved_alarms.size() << endl;
+				savedlock->readerOut();
 				savedlock->writerIn();
 				saved_alarms.erase(it2);
 				savedlock->writerOut();
-				//savedlock->readerIn();
+				savedlock->readerIn();
 			}
 		}
 		if(it2 != saved_alarms.end())
-- 
GitLab