mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-02 02:34:19 +00:00
Merge pull request #388 from cswingler/check_undefined_skip_check_slave_lag_schema_change
Check undefined skip check slave lag schema change Contirbutor signed corporate SLA as stated in https://github.com/percona/percona-toolkit/pull/230#issuecomment-308564024
This commit is contained in:
@@ -8944,11 +8944,15 @@ sub main {
|
||||
for my $slave (@$slaves) {
|
||||
my $is_skip = 0;
|
||||
for my $slave_to_skip (@$slaves_to_skip) {
|
||||
if ($slave->{dsn}->{h} eq $slave_to_skip->{h} && $slave->{dsn}->{P} eq $slave_to_skip->{P}) {
|
||||
print "Skipping slave " . $slave->description() . "\n";
|
||||
$is_skip = 1;
|
||||
$slave->{dbh}->disconnect();
|
||||
last;
|
||||
if ( $slave->{dsn}->{h} eq $slave_to_skip->{h} ) {
|
||||
my $skip_slave_port = defined($slave_to_skip->{P})
|
||||
? $slave_to_skip->{P} : '3306';
|
||||
if ( ($slave->{dsn}->{P} eq $skip_slave_port) ) {
|
||||
print "Skipping slave " . $slave->description() . "\n";
|
||||
$is_skip = 1;
|
||||
$slave->{dbh}->disconnect();
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$is_skip) {
|
||||
|
@@ -10653,11 +10653,13 @@ sub main {
|
||||
for my $slave_to_skip (@$slaves_to_skip) {
|
||||
my $h_eq_h = $slave->{dsn}->{h} eq $slave_to_skip->{h};
|
||||
my $p_eq_p;
|
||||
if (defined($slave->{dsn}->{P}) || defined($slave_to_skip->{P})) {
|
||||
$p_eq_p = $slave->{dsn}->{P} eq $slave_to_skip->{P};
|
||||
} else {
|
||||
if (!defined($slave->{dsn}->{P}) && !defined($slave_to_skip->{P}) ) {
|
||||
PTDEBUG && _d("Both port DSNs are undefined, setting p_eq_p to true");
|
||||
$p_eq_p = 1;
|
||||
} else {
|
||||
my $skip_slave_port = defined($slave_to_skip->{P})
|
||||
? $slave_to_skip->{P} : '3306';
|
||||
$p_eq_p = $slave->{dsn}->{P} eq $skip_slave_port;
|
||||
}
|
||||
if ($h_eq_h && $p_eq_p) {
|
||||
$found=1;
|
||||
|
@@ -696,21 +696,30 @@ SKIP: {
|
||||
qr/$skipping_str/s,
|
||||
"--skip-check-slave-lag",
|
||||
);
|
||||
}
|
||||
|
||||
# Use the same data than the previous test
|
||||
$master_dbh->do("DROP DATABASE IF EXISTS test");
|
||||
# Test for skip-check-slave-lag and empty replica port
|
||||
# Use the same data than the previous test
|
||||
$master_dbh->do("DROP DATABASE IF EXISTS test");
|
||||
|
||||
$sb->load_file('master', "$sample/bug-1613915.sql");
|
||||
$output = output(
|
||||
sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=o1",
|
||||
'--execute',
|
||||
'--alter', "ADD COLUMN c INT",
|
||||
'--chunk-size', '10',
|
||||
'--skip-check-slave-lag', "h=127.0.0.1,P=".$sb->port_for('slave1'),
|
||||
$sb->load_file('master', "$sample/bug-1613915.sql");
|
||||
$output = output(
|
||||
sub { pt_online_schema_change::main(@args, "$master_dsn,D=test,t=o1",
|
||||
'--execute',
|
||||
'--alter', "ADD COLUMN c INT",
|
||||
'--chunk-size', '10',
|
||||
'--skip-check-slave-lag', "h=127.0.0.1",
|
||||
),
|
||||
},
|
||||
);
|
||||
stderr => 1,
|
||||
);
|
||||
|
||||
unlike(
|
||||
$output,
|
||||
qr/Use of uninitialized value.*/,
|
||||
'No syntax error if port is missed in --skip-check-slave-lag DSN',
|
||||
) or diag($output);
|
||||
|
||||
}
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
|
@@ -40,9 +40,13 @@ my $master_dsn = 'h=127.0.0.1,P=12345,u=msandbox,p=msandbox';
|
||||
my $slave_dsn1 = 'h=127.0.0.1,P=12346,u=msandbox,p=msandbox';
|
||||
my $slave_dsn2 = 'h=127.0.0.1,P=12347,u=msandbox,p=msandbox';
|
||||
my $sample = "t/pt-online-schema-change/samples";
|
||||
my ($orig_master_info_repository) = $slave_dbh1->selectrow_array(q{SELECT @@master_info_repository});
|
||||
my ($orig_relay_log_info_repository) = $slave_dbh1->selectrow_array(q{SELECT @@relay_log_info_repository});
|
||||
|
||||
$slave_dbh1->do("stop slave");
|
||||
$slave_dbh1->do("reset slave all");
|
||||
$slave_dbh1->do("SET GLOBAL master_info_repository='TABLE'");
|
||||
$slave_dbh1->do("SET GLOBAL relay_log_info_repository='TABLE'");
|
||||
$slave_dbh1->do("CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=12345, MASTER_USER = 'msandbox', MASTER_PASSWORD='msandbox' FOR CHANNEL 'channel1';");
|
||||
$slave_dbh1->do("start slave");
|
||||
|
||||
@@ -74,6 +78,8 @@ like(
|
||||
$slave_dbh1->do('STOP SLAVE');
|
||||
$master_dbh->do("RESET MASTER");
|
||||
$slave_dbh1->do('RESET SLAVE ALL');
|
||||
$slave_dbh1->do("SET GLOBAL master_info_repository='${orig_master_info_repository}'");
|
||||
$slave_dbh1->do("SET GLOBAL relay_log_info_repository='${orig_relay_log_info_repository}'");
|
||||
$slave_dbh1->do("CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=12345, MASTER_USER = 'msandbox', MASTER_PASSWORD='msandbox';");
|
||||
$slave_dbh1->do('START SLAVE');
|
||||
|
||||
|
@@ -221,6 +221,21 @@ like(
|
||||
qr/$skipping_str/s,
|
||||
"--skip-check-slave-lag",
|
||||
);
|
||||
|
||||
# Test for skip-check-slave-lag and empty replica port
|
||||
$output = output(
|
||||
sub { pt_table_checksum::main(@args,
|
||||
'--skip-check-slave-lag', "h=127.0.0.1",
|
||||
),
|
||||
},
|
||||
stderr => 1
|
||||
);
|
||||
|
||||
unlike(
|
||||
$output,
|
||||
qr/Use of uninitialized value.*/,
|
||||
'No syntax error if port is missed in --skip-check-slave-lag DSN',
|
||||
) or diag($output);
|
||||
}
|
||||
# #############################################################################
|
||||
# Illegal division by zero at pt-table-checksum line 7950
|
||||
|
Reference in New Issue
Block a user