From a66e9e45a228433ab988e46f4c796a60700833e5 Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Tue, 10 Jan 2017 14:22:42 -0500 Subject: [PATCH] merge a fix from storageareas that adds a test for the shared data being valid and reloads the monitors if it can't reconnect --- scripts/zmtrigger.pl.in | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/zmtrigger.pl.in b/scripts/zmtrigger.pl.in index 3fc5f43e9..887b7a369 100644 --- a/scripts/zmtrigger.pl.in +++ b/scripts/zmtrigger.pl.in @@ -198,6 +198,7 @@ my %spawned_connections; my %monitors; my $monitor_reload_time = 0; +my $needsReload = 0; $! = undef; my $rin = ''; @@ -313,6 +314,19 @@ while( 1 ) my @out_messages; foreach my $monitor ( values(%monitors) ) { + my $memVerified = 1; + if ( !zmMemRead($monitor, "shared_data:valid") ) { + # Shared data is invalid, attempt to reconnect + zmMemInvalidate($monitor); + $memVerified = zmMemVerify($monitor); + } + + if ( ! $memVerified ) { + # Our attempt to verify the memory handle failed. We should reload the monitors. + $needsReload = 1; + next; + } + my ( $state, $last_event ) = zmMemRead( $monitor, [ "shared_data:state", @@ -413,7 +427,7 @@ while( 1 ) } # If necessary reload monitors - if ( (time() - $monitor_reload_time) > MONITOR_RELOAD_INTERVAL ) + if ( $needsReload || ((time() - $monitor_reload_time) > MONITOR_RELOAD_INTERVAL )) { foreach my $monitor ( values(%monitors) ) { @@ -421,6 +435,7 @@ while( 1 ) zmMemInvalidate( $monitor ); } loadMonitors(); + $needsReload = 0; } } Info( "Trigger daemon exiting\n" );