From f9d71f361035e52202d366947da046ab74ced660 Mon Sep 17 00:00:00 2001 From: Daniel Nichter Date: Thu, 27 Jun 2013 14:41:49 -0700 Subject: [PATCH 1/2] Add failing test case. --- t/pt-variable-advisor/advice.t | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 t/pt-variable-advisor/advice.t diff --git a/t/pt-variable-advisor/advice.t b/t/pt-variable-advisor/advice.t new file mode 100644 index 00000000..9caa4dd4 --- /dev/null +++ b/t/pt-variable-advisor/advice.t @@ -0,0 +1,50 @@ +#!/usr/bin/env perl + +BEGIN { + die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n" + unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH}; + unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib"; +}; + +use strict; +use warnings FATAL => 'all'; +use English qw(-no_match_vars); +use Test::More; + +use PerconaTest; +use Sandbox; +require "$trunk/bin/pt-variable-advisor"; + +my $dp = new DSNParser(opts=>$dsn_opts); +my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); +my $dbh = $sb->get_dbh_for('master'); +my $dsn = $sb->dsn_for('master'); + +if ( !$dbh ) { + plan skip_all => "Cannot connect to sandbox master"; +} + +# ############################################################################# +# https://bugs.launchpad.net/percona-toolkit/+bug/1168106 +# pt-variable-advisor has the wrong default value for +# innodb_max_dirty_pages_pct in 5.6.10 +# ############################################################################# + +my @args = "$dsn"; +my $output = ""; + +$output = output( + sub { pt_variable_advisor::main(@args) }, +); + +unlike( + $output, + qr/innodb_max_dirty_pages_pct/, + "No innodb_max_dirty_pages_pct warning (bug 1168106)" +); + +# ############################################################################# +# Done. +# ############################################################################# +ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); +done_testing; From 67afd604b582e683778c746a1624e76c130a0f86 Mon Sep 17 00:00:00 2001 From: Daniel Nichter Date: Thu, 27 Jun 2013 14:45:56 -0700 Subject: [PATCH 2/2] Fix innodb_max_dirty_pages_pct advice. --- bin/pt-variable-advisor | 4 +++- lib/VariableAdvisorRules.pm | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/pt-variable-advisor b/bin/pt-variable-advisor index 1f4d57b2..8b62c498 100755 --- a/bin/pt-variable-advisor +++ b/bin/pt-variable-advisor @@ -3376,7 +3376,9 @@ sub get_rules { id => 'innodb_max_dirty_pages_pct', code => sub { my ( %args ) = @_; - return _var_lt($args{variables}->{innodb_max_dirty_pages_pct}, 90); + my $mysql_version = $args{mysql_version}; + return _var_lt($args{variables}->{innodb_max_dirty_pages_pct}, + ($mysql_version < '5.5' ? 90 : 75)); }, }, { diff --git a/lib/VariableAdvisorRules.pm b/lib/VariableAdvisorRules.pm index 7a9d3091..29bbddf6 100644 --- a/lib/VariableAdvisorRules.pm +++ b/lib/VariableAdvisorRules.pm @@ -214,7 +214,9 @@ sub get_rules { id => 'innodb_max_dirty_pages_pct', code => sub { my ( %args ) = @_; - return _var_lt($args{variables}->{innodb_max_dirty_pages_pct}, 90); + my $mysql_version = $args{mysql_version}; + return _var_lt($args{variables}->{innodb_max_dirty_pages_pct}, + ($mysql_version < '5.5' ? 90 : 75)); }, }, {