mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-10 13:11:32 +00:00
Add Cxn::lost_connection(). Rename runtime to run_time in Runtime.pm.
This commit is contained in:
@@ -173,6 +173,15 @@ sub set_dbh {
|
|||||||
return $dbh;
|
return $dbh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub lost_connection {
|
||||||
|
my ($self, $e) = @_;
|
||||||
|
return 0 unless $e;
|
||||||
|
return $e =~ m/MySQL server has gone away/
|
||||||
|
|| $e =~ m/Lost connection to MySQL server/;
|
||||||
|
# The 1st pattern means that MySQL itself died or was stopped.
|
||||||
|
# The 2nd pattern means that our cxn was killed (KILL <id>).
|
||||||
|
}
|
||||||
|
|
||||||
# Sub: dbh
|
# Sub: dbh
|
||||||
# Return the cxn's dbh.
|
# Return the cxn's dbh.
|
||||||
sub dbh {
|
sub dbh {
|
||||||
|
@@ -18,13 +18,6 @@
|
|||||||
# Runtime package
|
# Runtime package
|
||||||
# ###########################################################################
|
# ###########################################################################
|
||||||
{
|
{
|
||||||
# Package: Runtime
|
|
||||||
# Runtime keeps track of time to control how long a tool's main loop runs.
|
|
||||||
# This package was created to handle mk-query-digest --run-time-mode event.
|
|
||||||
# In essence, we abstract time so that the tool doesn't know/care whether
|
|
||||||
# now() comes from a clock, a log timestamp, or wherever. The creator of
|
|
||||||
# Runtime object determines how, or from where, time is gotten so that the
|
|
||||||
# caller of the object can simply ask, "What time is it?".
|
|
||||||
package Runtime;
|
package Runtime;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
@@ -32,30 +25,24 @@ use warnings FATAL => 'all';
|
|||||||
use English qw(-no_match_vars);
|
use English qw(-no_match_vars);
|
||||||
use constant PTDEBUG => $ENV{PTDEBUG} || 0;
|
use constant PTDEBUG => $ENV{PTDEBUG} || 0;
|
||||||
|
|
||||||
# Sub: new
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
# %args - Arguments
|
|
||||||
#
|
|
||||||
# Required Arguments:
|
|
||||||
# now - Callback that sets current time.
|
|
||||||
# runtime - Amount of time to run in seconds, or undef for forever.
|
|
||||||
#
|
|
||||||
# Returns:
|
|
||||||
# Runtime object
|
|
||||||
sub new {
|
sub new {
|
||||||
my ( $class, %args ) = @_;
|
my ( $class, %args ) = @_;
|
||||||
my @required_args = qw(now);
|
my @required_args = qw(run_time now);
|
||||||
foreach my $arg ( @required_args ) {
|
foreach my $arg ( @required_args ) {
|
||||||
die "I need a $arg argument" unless $args{$arg};
|
die "I need a $arg argument" unless exists $args{$arg};
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ($args{runtime} || 0) < 0 ) {
|
my $run_time = $args{run_time};
|
||||||
die "runtime argument must be greater than zero"
|
if ( defined $run_time ) {
|
||||||
|
die "run_time must be > 0" if $run_time <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $now = $args{now};
|
||||||
|
die "now must be a callback" unless ref $now eq 'CODE';
|
||||||
|
|
||||||
my $self = {
|
my $self = {
|
||||||
%args,
|
run_time => $run_time,
|
||||||
|
now => $now,
|
||||||
start_time => undef,
|
start_time => undef,
|
||||||
end_time => undef,
|
end_time => undef,
|
||||||
time_left => undef,
|
time_left => undef,
|
||||||
@@ -66,8 +53,8 @@ sub new {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Sub: time_left
|
# Sub: time_left
|
||||||
# Return the number of runtime seconds left or undef for forever.
|
# Return the number of run time seconds left or undef for forever.
|
||||||
# The return may be less than zero if the runtime has been exceeded.
|
# The return may be less than zero if the run time has been exceeded.
|
||||||
# The first call to this subroutine "starts the clock", so to speak,
|
# The first call to this subroutine "starts the clock", so to speak,
|
||||||
# if the now callbackup returns a defined value.
|
# if the now callbackup returns a defined value.
|
||||||
#
|
#
|
||||||
@@ -75,7 +62,7 @@ sub new {
|
|||||||
# %args - Arguments passed to now callback.
|
# %args - Arguments passed to now callback.
|
||||||
#
|
#
|
||||||
# Returns:
|
# Returns:
|
||||||
# Number of runtime seconds left, possibly less than zero, or undef
|
# Number of run time seconds left, possibly less than zero, or undef
|
||||||
# if running forever.
|
# if running forever.
|
||||||
sub time_left {
|
sub time_left {
|
||||||
my ( $self, %args ) = @_;
|
my ( $self, %args ) = @_;
|
||||||
@@ -99,14 +86,14 @@ sub time_left {
|
|||||||
# we know the current time.
|
# we know the current time.
|
||||||
return unless defined $now;
|
return unless defined $now;
|
||||||
|
|
||||||
# If runtime is also defined, then we can determine time left.
|
# If run_time is also defined, then we can determine time left.
|
||||||
# If it's not defined, then we're running forever.
|
# If it's not defined, then we're running forever.
|
||||||
my $runtime = $self->{runtime};
|
my $run_time = $self->{run_time};
|
||||||
return unless defined $runtime;
|
return unless defined $run_time;
|
||||||
|
|
||||||
# Set the end time once.
|
# Set the end time once.
|
||||||
if ( !$self->{end_time} ) {
|
if ( !$self->{end_time} ) {
|
||||||
$self->{end_time} = $now + $runtime;
|
$self->{end_time} = $now + $run_time;
|
||||||
PTDEBUG && _d("End time:", $self->{end_time});
|
PTDEBUG && _d("End time:", $self->{end_time});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,7 +105,7 @@ sub time_left {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Sub: have_time
|
# Sub: have_time
|
||||||
# Return true or false if there's runtime left. This sub is a simpler
|
# Return true or false if there's run time left. This sub is a simpler
|
||||||
# wrapper around <time_left()> which returns true (1) if time left is
|
# wrapper around <time_left()> which returns true (1) if time left is
|
||||||
# defined and greater than zero or undef, else returns false.
|
# defined and greater than zero or undef, else returns false.
|
||||||
#
|
#
|
||||||
@@ -131,7 +118,7 @@ sub have_time {
|
|||||||
my ( $self, %args ) = @_;
|
my ( $self, %args ) = @_;
|
||||||
my $time_left = $self->time_left(%args);
|
my $time_left = $self->time_left(%args);
|
||||||
return 1 if !defined $time_left; # run forever
|
return 1 if !defined $time_left; # run forever
|
||||||
return $time_left <= 0 ? 0 : 1; # <=0s means runtime has elapsed
|
return $time_left <= 0 ? 0 : 1; # <=0s means run time has elapsed
|
||||||
}
|
}
|
||||||
|
|
||||||
# Sub: time_elapsed
|
# Sub: time_elapsed
|
||||||
@@ -173,7 +160,7 @@ sub reset {
|
|||||||
$self->{end_time} = undef;
|
$self->{end_time} = undef;
|
||||||
$self->{time_left} = undef;
|
$self->{time_left} = undef;
|
||||||
$self->{stop} = 0;
|
$self->{stop} = 0;
|
||||||
PTDEBUG && _d("Reset runtime");
|
PTDEBUG && _d("Reset run time");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user