From 5efb3bd6f18b09d06c9799146840a8f4dfb1c66b Mon Sep 17 00:00:00 2001 From: Carlos Salguero Date: Wed, 20 May 2020 10:53:24 -0300 Subject: [PATCH] PT-1829 Fixed reconnection in heartbeat --- bin/pt-heartbeat | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/bin/pt-heartbeat b/bin/pt-heartbeat index dc542393..17b0fa77 100755 --- a/bin/pt-heartbeat +++ b/bin/pt-heartbeat @@ -6386,19 +6386,6 @@ sub main { sleep $next_interval - $time; PTDEBUG && _d('Woke up at', ts(time)); - if ( $o->get('check-read-only') && $o->get('update') ) { - my $read_only_interval = $o->get('read-only-interval') || $interval; - while (server_is_readonly($dbh)) { - PTDEBUG && _d("Server is read only. Sleeping for $read_only_interval seconds..."); - sleep($read_only_interval); - if ( - -f $sentinel - ) { - return 0; - } - } - } - # Connect or reconnect if necessary. if ( !$dbh->ping() ) { $dbh = $dp->get_dbh($dp->get_cxn_params($dsn), { AutoCommit => 1 }); @@ -6409,6 +6396,17 @@ sub main { $heartbeat_sth = undef; } + if ( $o->get('check-read-only') && $o->get('update') ) { + my $read_only_interval = $o->get('read-only-interval') || $interval; + while (server_is_readonly($dbh)) { + PTDEBUG && _d("Server is read only. Sleeping for $read_only_interval seconds..."); + sleep($read_only_interval); + if (-f $sentinel) { + return 0; + } + } + } + if ( $o->get('monitor') ) { $heartbeat_sth ||= $dbh->prepare($heartbeat_sql); my ($delay) = $get_delay->($heartbeat_sth);