Merge branch 'PT-131' into release-3.0.9

This commit is contained in:
Carlos Salguero
2018-04-17 09:15:33 -03:00

View File

@@ -9847,6 +9847,7 @@ use sigtrap 'handler', \&sig_int, 'normal-signals';
my $oktorun = 1;
my $print_header = 1;
my $exit_status = 0;
my $original_qrt_plugin_master_status = undef;
# "exit codes 1 - 2, 126 - 165, and 255 [1] have special meanings,
# and should therefore be avoided for user-specified exit parameters"
@@ -10103,6 +10104,7 @@ sub main {
. "level to REPEATABLE-READ.\n";
}
return;
};
@@ -10131,6 +10133,20 @@ sub main {
my $master_dbh = $master_cxn->dbh(); # just for brevity
my $master_dsn = $master_cxn->dsn(); # just for brevity
if ($o->get('disable-qrt-plugin')) {
eval {
$master_dbh->selectrow_arrayref('SELECT @@QUERY_RESPONSE_TIME_SESSION_STATS' );
};
if ($EVAL_ERROR) {
$original_qrt_plugin_master_status = undef;
PTDEBUG && _d('QRT plugin is not installed: '.$EVAL_ERROR);
} else {
($original_qrt_plugin_master_status) = $master_dbh->selectrow_arrayref('SELECT @@query_response_time_stats' );
PTDEBUG && _d("Disabling qrt plugin on master server");
$master_dbh->do('SET GLOBAL query_response_time_stats = off');
}
}
my @ignored_engines = keys %{$o->get('ignore-engines')};
my @rocksdb_ignored = grep(/^ROCKSDB$/i, @ignored_engines);
if (!@rocksdb_ignored) {
@@ -10451,6 +10467,23 @@ sub main {
}
}
for my $slave (@$slaves) {
my $qrt_plugin_status;
eval {
($qrt_plugin_status) = $slave->{dbh}->selectrow_arrayref('SELECT @@QUERY_RESPONSE_TIME_SESSION_STATS' );
};
if ($EVAL_ERROR) {
PTDEBUG && _d('QRT plugin is not installed on slave '.$slave->{dsn_name});
$slave->{qrt_plugin_status} = undef;
next;
}
$slave->{qrt_plugin_status} = $qrt_plugin_status->[0];
if ($slave->{qrt_plugin_status}) {
PTDEBUG && _d("Disabling qrt plugin state on slave ".$slave->{dsn_name});
$slave->{dbh}->do('SET GLOBAL query_response_time_stats = off');
}
}
if ( $o->get('check-slave-lag') ) {
PTDEBUG && _d('Will use --check-slave-lag to check for slave lag');
my $cxn = $make_cxn->(
@@ -11453,6 +11486,25 @@ sub main {
}
}
# Restore origin QRT pligin state
if ($o->get('disable-qrt-plugin')) {
eval {
if ($original_qrt_plugin_master_status) {
PTDEBUG && _d("Restoring qrt plugin state on master server");
$master_dbh->do("SET GLOBAL query_response_time_stats = $original_qrt_plugin_master_status->[0]");
}
for my $slave (@$slaves) {
if ($slave->{qrt_plugin_status}) {
PTDEBUG && _d("Restoring qrt plugin state on slave ".$slave->{dsn_name});
$slave->{dbh}->do("SET GLOBAL query_response_time_stats = $slave->{qrt_plugin_status}");
}
}
};
if ($EVAL_ERROR) {
warn "Cannot restore qrt_plugin status: $EVAL_ERROR";
}
}
PTDEBUG && _d('Exit status', $exit_status,
'oktorun', $oktorun,
'have time', $have_time->());
@@ -13138,6 +13190,10 @@ short form: -F; type: string; group: Connection
Only read mysql options from the given file. You must give an absolute
pathname.
=item --disable-qrt-plugin
Disable the QRT (Query Response Time) plugin if it is enabled.
=item --[no]empty-replicate-table
default: yes