mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-10-21 18:24:38 +00:00
pt-upgrade-fails-to-aggregate-queries-based-on-fingerprint-1421405
This commit is contained in:
@@ -5858,7 +5858,7 @@ sub report_unreported_classes {
|
|||||||
class => $class,
|
class => $class,
|
||||||
reasons => ["$reason, but hasn't been reported yet"],
|
reasons => ["$reason, but hasn't been reported yet"],
|
||||||
);
|
);
|
||||||
$class = { reported => 1 };
|
$class->{reported} = 1;
|
||||||
};
|
};
|
||||||
if ( $EVAL_ERROR ) {
|
if ( $EVAL_ERROR ) {
|
||||||
$success = 1;
|
$success = 1;
|
||||||
@@ -5872,11 +5872,11 @@ sub report_unreported_classes {
|
|||||||
sub report_if_ready {
|
sub report_if_ready {
|
||||||
my ($self, %args) = @_;
|
my ($self, %args) = @_;
|
||||||
my $class = $args{class};
|
my $class = $args{class};
|
||||||
|
my $max_examples = $self->max_examples;
|
||||||
my $max_examples = $self->max_class_size;
|
my $max_class_size = $self->max_class_size;
|
||||||
my @report_reasons;
|
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)";
|
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";
|
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";
|
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";
|
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";
|
push @report_reasons, "there are $max_examples failed queries";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5906,7 +5906,7 @@ sub report_if_ready {
|
|||||||
class => $class,
|
class => $class,
|
||||||
reasons => \@report_reasons,
|
reasons => \@report_reasons,
|
||||||
);
|
);
|
||||||
$class = { reported => 1 };
|
$class->{reported} = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -5917,6 +5917,11 @@ sub report_class {
|
|||||||
my $class = $args{class};
|
my $class = $args{class};
|
||||||
my $reasons = $args{reasons};
|
my $reasons = $args{reasons};
|
||||||
|
|
||||||
|
if ( $class->{reported} ) {
|
||||||
|
PTDEBUG && _d('Class already reported');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('Reporting class', $class->{id}, $class->{fingerprint});
|
PTDEBUG && _d('Reporting class', $class->{id}, $class->{fingerprint});
|
||||||
|
|
||||||
$self->_print_class_header(
|
$self->_print_class_header(
|
||||||
|
@@ -220,7 +220,7 @@ sub report_unreported_classes {
|
|||||||
class => $class,
|
class => $class,
|
||||||
reasons => ["$reason, but hasn't been reported yet"],
|
reasons => ["$reason, but hasn't been reported yet"],
|
||||||
);
|
);
|
||||||
$class = { reported => 1 };
|
$class->{reported} = 1;
|
||||||
};
|
};
|
||||||
if ( $EVAL_ERROR ) {
|
if ( $EVAL_ERROR ) {
|
||||||
$success = 1;
|
$success = 1;
|
||||||
@@ -234,11 +234,11 @@ sub report_unreported_classes {
|
|||||||
sub report_if_ready {
|
sub report_if_ready {
|
||||||
my ($self, %args) = @_;
|
my ($self, %args) = @_;
|
||||||
my $class = $args{class};
|
my $class = $args{class};
|
||||||
|
my $max_examples = $self->max_examples;
|
||||||
my $max_examples = $self->max_class_size;
|
my $max_class_size = $self->max_class_size;
|
||||||
my @report_reasons;
|
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)";
|
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";
|
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";
|
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";
|
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";
|
push @report_reasons, "there are $max_examples failed queries";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,7 +268,7 @@ sub report_if_ready {
|
|||||||
class => $class,
|
class => $class,
|
||||||
reasons => \@report_reasons,
|
reasons => \@report_reasons,
|
||||||
);
|
);
|
||||||
$class = { reported => 1 };
|
$class->{reported} = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -279,6 +279,11 @@ sub report_class {
|
|||||||
my $class = $args{class};
|
my $class = $args{class};
|
||||||
my $reasons = $args{reasons};
|
my $reasons = $args{reasons};
|
||||||
|
|
||||||
|
if ( $class->{reported} ) {
|
||||||
|
PTDEBUG && _d('Class already reported');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PTDEBUG && _d('Reporting class', $class->{id}, $class->{fingerprint});
|
PTDEBUG && _d('Reporting class', $class->{id}, $class->{fingerprint});
|
||||||
|
|
||||||
$self->_print_class_header(
|
$self->_print_class_header(
|
||||||
|
2
t/pt-upgrade/samples/008/conf
Normal file
2
t/pt-upgrade/samples/008/conf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
type=rawlog
|
||||||
|
max-examples=3
|
@@ -0,0 +1,9 @@
|
|||||||
|
select @@port
|
||||||
|
select @@port
|
||||||
|
select @@port
|
||||||
|
select @@port
|
||||||
|
select @@port
|
||||||
|
select @@port
|
||||||
|
select @@port
|
||||||
|
select @@port
|
||||||
|
select @@port
|
@@ -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
|
Reference in New Issue
Block a user