Remove --lock-wait-timeout from pt-table-checksum; make innodb_lock_waitout=1 a --set-vars default. Update all the ptc tests.

This commit is contained in:
Daniel Nichter
2013-03-01 19:02:13 -07:00
parent ad7207139c
commit 1d42a09196
25 changed files with 60 additions and 107 deletions

View File

@@ -8838,43 +8838,7 @@ sub main {
. "level to REPEATABLE-READ.\n";
}
# We set innodb_lock_wait_timeout=1 (the option's default value)
# so that if this tool happens to cause some locking, it will more
# likely be the victim than other connections and thus avoid disrupting
# the server. The var is only dynamic with the InnoDB plugin, so
# if setting it fails we only warn if the server's value is greater
# than the desired value. E.g. if user does --lock-wait-timeout 5
# and the set fails but the server's value is 1, then that's ok, but
# if the server's value is 10, then that's not ok.
my $lock_wait_timeout = $o->get('lock-wait-timeout');
my $set_lwt = "SET SESSION innodb_lock_wait_timeout=$lock_wait_timeout";
PTDEBUG && _d($dbh, $set_lwt);
eval {
$dbh->do($set_lwt);
};
if ( $EVAL_ERROR ) {
PTDEBUG && _d($EVAL_ERROR);
# Get the server's current value.
$sql = "SHOW SESSION VARIABLES LIKE 'innodb_lock_wait_timeout'";
PTDEBUG && _d($dbh, $sql);
my (undef, $curr_lwt) = $dbh->selectrow_array($sql);
PTDEBUG && _d('innodb_lock_wait_timeout on server:', $curr_lwt);
if ( !defined $curr_lwt ) {
PTDEBUG && _d('innodb_lock_wait_timeout does not exist;',
'InnoDB is probably disabled');
}
elsif ( $curr_lwt > $lock_wait_timeout ) {
warn "Failed to $set_lwt: $EVAL_ERROR\n"
. "The current innodb_lock_wait_timeout value "
. "$curr_lwt is greater than the --lock-wait-timeout "
. "value $lock_wait_timeout and the variable cannot be "
. "changed. innodb_lock_wait_timeout is only dynamic when "
. "using the InnoDB plugin. To prevent this warning, either "
. "specify --lock-wait-time=$curr_lwt, or manually set "
. "innodb_lock_wait_timeout to a value less than or equal "
. "to $lock_wait_timeout and restart MySQL.\n";
}
}
return;
};
# Do not call "new Cxn(" directly; use this sub so that set_on_connect
@@ -11637,18 +11601,6 @@ type: string; group: Filter
Ignore tables whose names match the Perl regex.
=item --lock-wait-timeout
type: int; default: 1
Set the session value of C<innodb_lock_wait_timeout> on the master host.
This option helps guard against long lock waits if the checksum queries
become slow for some reason. Setting this option dynamically requires the
InnoDB plugin, so this works only on newer InnoDB and MySQL versions. If
setting the value fails and the current server value is greater than the
specified value, then a warning is printed; else, if the current server
value is less than or equal to the specified value, no warning is printed.
=item --max-lag
type: time; default: 1s; group: Throttle
@@ -11918,6 +11870,7 @@ By default, the tool sets:
MAGIC_set_vars
wait_timeout=10000
innodb_lock_wait_timeout=1
Variables specified on the command line override these defaults. For
example, specifying C<--set-vars wait_timeout=500> overrides the defaultvalue of C<10000>.

View File

@@ -40,9 +40,9 @@ elsif ( !@{$master_dbh->selectall_arrayref("show databases like 'sakila'")} ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3));
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3));
my $row;
my $output;
my $exit_status;
@@ -351,7 +351,7 @@ like(
$output = output(
sub { $exit_status = pt_table_checksum::main(
qw(--user msandbox --pass msandbox),
qw(-S /tmp/12345/mysql_sandbox12345.sock --lock-wait-timeout 3)) },
qw(-S /tmp/12345/mysql_sandbox12345.sock --set-vars innodb_lock_wait_timeout=3)) },
stderr => 1,
);

View File

@@ -40,9 +40,9 @@ elsif ( !$slave2_dbh ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3));
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3));
my $output;
my $exit_status;
my $sample = "t/pt-table-checksum/samples/";

View File

@@ -27,10 +27,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
$sb->create_dbs($master_dbh, ['test']);
$sb->load_file('master', "t/lib/samples/char-chunking/ascii.sql", 'test');

View File

@@ -27,10 +27,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3 --explain --chunk-size 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3 --explain --chunk-size 3), '--max-load', '');
my $output;
my $out = "t/pt-table-checksum/samples/";
@@ -110,7 +110,7 @@ my $exit_status = 0;
$output = output(sub {
$exit_status = pt_table_checksum::main(
$master_dsn, '--max-load', '',
qw(--lock-wait-timeout 3 --chunk-size 5 -t ALL_UC.T)
qw(--set-vars innodb_lock_wait_timeout=3 --chunk-size 5 -t ALL_UC.T)
) },
stderr => 1,
);
@@ -164,7 +164,7 @@ PerconaTest::wait_for_table($dbh, "bad_plan.t", "(c1,c2,c3,c4)=(1,1,2,100)");
$output = output(sub {
$exit_status = pt_table_checksum::main(
$master_dsn, '--max-load', '',
qw(--lock-wait-timeout 3 --chunk-size 10 -t bad_plan.t)
qw(--set-vars innodb_lock_wait_timeout=3 --chunk-size 10 -t bad_plan.t)
) },
stderr => 1,
);
@@ -190,7 +190,7 @@ ok(
sub {
pt_table_checksum::main(
$master_dsn, '--max-load', '',
qw(--lock-wait-timeout 3 --chunk-size 5000 -t sakila.rental),
qw(--set-vars innodb_lock_wait_timeout=3 --chunk-size 5000 -t sakila.rental),
qw(--chunk-index rental_date --chunk-index-columns 2),
qw(--explain --explain));
},
@@ -203,7 +203,7 @@ $output = output(
sub {
$exit_status = pt_table_checksum::main(
$master_dsn, '--max-load', '',
qw(--lock-wait-timeout 3 --chunk-size 1000 -t sakila.film_actor),
qw(--set-vars innodb_lock_wait_timeout=3 --chunk-size 1000 -t sakila.film_actor),
qw(--chunk-index PRIMARY --chunk-index-columns 9),
);
},
@@ -220,7 +220,7 @@ $output = output(
sub {
$exit_status = pt_table_checksum::main(
$master_dsn, '--max-load', '',
qw(--lock-wait-timeout 3 --chunk-size 1000 -t sakila.film_actor),
qw(--set-vars innodb_lock_wait_timeout=3 --chunk-size 1000 -t sakila.film_actor),
qw(--chunk-index-columns 1 --chunk-size-limit 3),
);
},

View File

@@ -28,10 +28,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $row;
my $output;

View File

@@ -31,10 +31,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
my $row;

View File

@@ -30,10 +30,10 @@ elsif ( !$slave1_dbh ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
my $exit_status;
@@ -189,7 +189,7 @@ $sb->wait_for_slaves;
$output = output(
sub { $exit_status = pt_table_checksum::main(
"h=127.1,u=ro_checksum_user,p=msandbox,P=12345",
qw(--lock-wait-timeout 3 -t mysql.user)) },
qw(--set-vars innodb_lock_wait_timeout=3 -t mysql.user)) },
stderr => 1,
);

View File

@@ -28,10 +28,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
# ############################################################################

View File

@@ -27,10 +27,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
$sb->load_file('master', "t/pt-table-checksum/samples/float_precision.sql");

View File

@@ -24,10 +24,10 @@ if ( !$master_dbh ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $sample = "t/pt-table-checksum/samples/";
my $row;
my $output;

View File

@@ -31,10 +31,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
$sb->create_dbs($master_dbh, [qw(test)]);

View File

@@ -27,10 +27,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
# #############################################################################

View File

@@ -27,10 +27,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
my $row;

View File

@@ -27,10 +27,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
$sb->load_file('master', 't/pt-table-checksum/samples/issue_602.sql');

View File

@@ -57,11 +57,11 @@ like(
"Default --host=localhost"
);
like(
$output,
qr/^ --lock-wait-timeout\s+1$/m,
"Default --lock-wait-timeout=1"
);
#like(
# $output,
# qr/^ --lock-wait-timeout\s+1$/m,
# "Default --lock-wait-timeout=1"
#);
like(
$output,

View File

@@ -41,9 +41,9 @@ elsif ( !@{$master_dbh->selectall_arrayref("show databases like 'sakila'")} ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
my $master_dsn = 'h=127.1,P=12345';
my @args = (qw(--lock-wait-timeout 3));
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
my $row;
my $output;
my $exit_status;

View File

@@ -41,13 +41,13 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables. Setting
# --chunk-size may help prevent the tool from running too fast and finishing
# before the TEST_WISHLIST job below finishes. (Or, it might just make things
# worse. This is a random stab in the dark. There is a problem either way.)
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3),
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3),
'--progress', 'time,1', '--max-load', '', '--chunk-size', '500');
my $output;
my $row;

View File

@@ -42,9 +42,9 @@ elsif ( !$sb->is_cluster_mode ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
my $node1_dsn = $sb->dsn_for('node1');
my @args = ($node1_dsn, qw(--lock-wait-timeout 3));
my @args = ($node1_dsn, qw(--set-vars innodb_lock_wait_timeout=3));
my $output;
my $exit_status;
my $sample = "t/pt-table-checksum/samples/";

View File

@@ -48,10 +48,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
my $row;

View File

@@ -31,10 +31,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $row;
my $output;

View File

@@ -29,10 +29,10 @@ if ( !$master_dbh ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
my $exit_status;

View File

@@ -39,10 +39,10 @@ elsif ( !$slave_dbh ) {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12348,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '');
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '');
my $output;
my $retval;

View File

@@ -31,9 +31,9 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my @args = (qw(--lock-wait-timeout 3 --explain --tables sakila.country),
my @args = (qw(--set-vars innodb_lock_wait_timeout=3 --explain --tables sakila.country),
'--max-load', '');
my $cnf = "/tmp/12345/my.sandbox.cnf";
my $pid_file = "/tmp/mk-table-checksum-test.pid";

View File

@@ -41,10 +41,10 @@ else {
}
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --lock-wait-timeout=3 else the tool will die.
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
my @args = ($master_dsn, qw(--lock-wait-timeout 3), '--max-load', '',
my @args = ($master_dsn, qw(--set-vars innodb_lock_wait_timeout=3), '--max-load', '',
'--progress', 'time,1');
my $output;
my $row;