From 01c5d1c53c9612f0f5f2942ac8ff3b672641002b Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Tue, 19 May 2020 13:34:40 +0200 Subject: [PATCH] Add mutex --- src/flow/lib/ServiceWatchDog.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/flow/lib/ServiceWatchDog.rb b/src/flow/lib/ServiceWatchDog.rb index ae3edae31c..054d95ce31 100644 --- a/src/flow/lib/ServiceWatchDog.rb +++ b/src/flow/lib/ServiceWatchDog.rb @@ -55,6 +55,7 @@ class ServiceWD @client = client # Array of running services to watch + @mutex = Mutex.new @services = [] end @@ -98,7 +99,9 @@ class ServiceWD service_id = split_key[2].to_i - next unless @services.include?(service_id) + @mutex.synchronize{ + next unless @services.include?(service_id) + } node = xml.xpath('/HOOK_MESSAGE/VM/ID').text.to_i state = xml.xpath('/HOOK_MESSAGE/STATE').text @@ -130,14 +133,18 @@ class ServiceWD # # @param service_id [String] Service ID def add_service(service_id) - @services << service_id.to_i + @mutex.synchronize{ + @services << service_id.to_i + } end # Remove service from watch dog # # @param service_id [String] Service ID def remove_service(service_id) - @services.delete(service_id.to_i) + @mutex.synchronize{ + @services.delete(service_id.to_i) + } end private @@ -189,7 +196,9 @@ class ServiceWD next end - @services << service.id.to_i + @mutex.synchronize{ + @services << service.id.to_i + } service.roles.each do |name, role| role.nodes_ids.each do |node|