pt-upgrade failed to group by fingerprint & reported wrong number of diffs as reason for report

This commit is contained in:
Frank Cizmich
2015-04-01 16:45:23 -03:00
parent 16a7ffa6f9
commit ade9a283d4
5 changed files with 112 additions and 16 deletions

View File

@@ -5858,7 +5858,7 @@ sub report_unreported_classes {
class => $class,
reasons => ["$reason, but hasn't been reported yet"],
);
$class = { reported => 1 };
$class->{reported} = 1;
};
if ( $EVAL_ERROR ) {
$success = 1;
@@ -5872,11 +5872,11 @@ sub report_unreported_classes {
sub report_if_ready {
my ($self, %args) = @_;
my $class = $args{class};
my $max_examples = $self->max_class_size;
my $max_examples = $self->max_examples;
my $max_class_size = $self->max_class_size;
my @report_reasons;
if ( scalar keys %{$class->{unique_queries}} >= $self->max_class_size ) {
if ( scalar keys %{$class->{unique_queries}} >= $max_class_size ) {
push @report_reasons, "it's full (--max-class-size)";
}
@@ -5888,15 +5888,15 @@ sub report_if_ready {
push @report_reasons, "there are $max_examples warning diffs";
}
if ( scalar @{$class->{row_diffs}} >= $self->max_examples ) {
if ( scalar @{$class->{row_diffs}} >= $max_examples ) {
push @report_reasons, "there are $max_examples row diffs";
}
if ( scalar @{$class->{errors}} >= $self->max_examples ) {
if ( scalar @{$class->{errors}} >= $max_examples ) {
push @report_reasons, "there are $max_examples query errors";
}
if ( scalar @{$class->{failures}} >= $self->max_examples ) {
if ( scalar @{$class->{failures}} >= $max_examples ) {
push @report_reasons, "there are $max_examples failed queries";
}
@@ -5906,7 +5906,7 @@ sub report_if_ready {
class => $class,
reasons => \@report_reasons,
);
$class = { reported => 1 };
$class->{reported} = 1;
}
return;
@@ -5917,6 +5917,11 @@ sub report_class {
my $class = $args{class};
my $reasons = $args{reasons};
if ( $class->{reported} ) {
PTDEBUG && _d('Class already reported');
return;
}
PTDEBUG && _d('Reporting class', $class->{id}, $class->{fingerprint});
$self->_print_class_header(

View File

@@ -220,7 +220,7 @@ sub report_unreported_classes {
class => $class,
reasons => ["$reason, but hasn't been reported yet"],
);
$class = { reported => 1 };
$class->{reported} = 1;
};
if ( $EVAL_ERROR ) {
$success = 1;
@@ -234,11 +234,11 @@ sub report_unreported_classes {
sub report_if_ready {
my ($self, %args) = @_;
my $class = $args{class};
my $max_examples = $self->max_class_size;
my $max_examples = $self->max_examples;
my $max_class_size = $self->max_class_size;
my @report_reasons;
if ( scalar keys %{$class->{unique_queries}} >= $self->max_class_size ) {
if ( scalar keys %{$class->{unique_queries}} >= $max_class_size ) {
push @report_reasons, "it's full (--max-class-size)";
}
@@ -250,15 +250,15 @@ sub report_if_ready {
push @report_reasons, "there are $max_examples warning diffs";
}
if ( scalar @{$class->{row_diffs}} >= $self->max_examples ) {
if ( scalar @{$class->{row_diffs}} >= $max_examples ) {
push @report_reasons, "there are $max_examples row diffs";
}
if ( scalar @{$class->{errors}} >= $self->max_examples ) {
if ( scalar @{$class->{errors}} >= $max_examples ) {
push @report_reasons, "there are $max_examples query errors";
}
if ( scalar @{$class->{failures}} >= $self->max_examples ) {
if ( scalar @{$class->{failures}} >= $max_examples ) {
push @report_reasons, "there are $max_examples failed queries";
}
@@ -268,7 +268,7 @@ sub report_if_ready {
class => $class,
reasons => \@report_reasons,
);
$class = { reported => 1 };
$class->{reported} = 1;
}
return;
@@ -279,6 +279,11 @@ sub report_class {
my $class = $args{class};
my $reasons = $args{reasons};
if ( $class->{reported} ) {
PTDEBUG && _d('Class already reported');
return;
}
PTDEBUG && _d('Reporting class', $class->{id}, $class->{fingerprint});
$self->_print_class_header(

View File

@@ -0,0 +1,2 @@
type=rawlog
max-examples=3

View File

@@ -0,0 +1,9 @@
select @@port
select @@port
select @@port
select @@port
select @@port
select @@port
select @@port
select @@port
select @@port

View File

@@ -0,0 +1,75 @@
#-----------------------------------------------------------------------
# Logs
#-----------------------------------------------------------------------
File: ...
Size: 126
#-----------------------------------------------------------------------
# Hosts
#-----------------------------------------------------------------------
host1:
DSN: h=127.1,P=12345
hostname: ...
MySQL: ...
host2:
DSN: h=127.1,P=12348
hostname: ...
MySQL: ...
########################################################################
# Query class 3530F787A2430DC8
########################################################################
Reporting class because there are 3 row diffs.
Total queries 3
Unique queries 3
Discarded queries 0
select @@port
##
## Row diffs: 3
##
-- 1.
@ row 1
< 12345
> 12348
select @@port
-- 2.
@ row 1
< 12345
> 12348
select @@port
-- 3.
@ row 1
< 12345
> 12348
select @@port
#-----------------------------------------------------------------------
# Stats
#-----------------------------------------------------------------------
failed_queries 0
not_select 0
queries_filtered 0
queries_no_diffs 0
queries_read 9
queries_with_diffs 9
queries_with_errors 0