diff --git a/bin/pt-archiver b/bin/pt-archiver index d6af4e7d..7c925093 100755 --- a/bin/pt-archiver +++ b/bin/pt-archiver @@ -4707,11 +4707,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-config-diff b/bin/pt-config-diff index fc3ea220..875d6396 100755 --- a/bin/pt-config-diff +++ b/bin/pt-config-diff @@ -4381,11 +4381,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-deadlock-logger b/bin/pt-deadlock-logger index ddef8ad7..95f2ebcf 100755 --- a/bin/pt-deadlock-logger +++ b/bin/pt-deadlock-logger @@ -3297,11 +3297,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-diskstats b/bin/pt-diskstats index e0fe0d53..a4b2fbd3 100755 --- a/bin/pt-diskstats +++ b/bin/pt-diskstats @@ -4192,11 +4192,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-duplicate-key-checker b/bin/pt-duplicate-key-checker index 29b1c178..246f117f 100755 --- a/bin/pt-duplicate-key-checker +++ b/bin/pt-duplicate-key-checker @@ -4053,11 +4053,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-find b/bin/pt-find index 01c9711f..e2ba4498 100755 --- a/bin/pt-find +++ b/bin/pt-find @@ -2865,11 +2865,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-fk-error-logger b/bin/pt-fk-error-logger index d42a65ad..279ffebd 100755 --- a/bin/pt-fk-error-logger +++ b/bin/pt-fk-error-logger @@ -2807,11 +2807,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-heartbeat b/bin/pt-heartbeat index 63ec2ad0..ca2f2161 100755 --- a/bin/pt-heartbeat +++ b/bin/pt-heartbeat @@ -4033,11 +4033,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-index-usage b/bin/pt-index-usage index 99e9600f..dce83316 100755 --- a/bin/pt-index-usage +++ b/bin/pt-index-usage @@ -5508,11 +5508,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-kill b/bin/pt-kill index 901cbd44..e1245dca 100755 --- a/bin/pt-kill +++ b/bin/pt-kill @@ -5730,11 +5730,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-online-schema-change b/bin/pt-online-schema-change index bfe7c455..db514b54 100755 --- a/bin/pt-online-schema-change +++ b/bin/pt-online-schema-change @@ -7180,11 +7180,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-query-advisor b/bin/pt-query-advisor index 139221ea..ce1a0483 100755 --- a/bin/pt-query-advisor +++ b/bin/pt-query-advisor @@ -7463,11 +7463,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-query-digest b/bin/pt-query-digest index 928d1cc5..74be2b49 100755 --- a/bin/pt-query-digest +++ b/bin/pt-query-digest @@ -13092,11 +13092,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-slave-delay b/bin/pt-slave-delay index 9bf85331..9dd77a29 100755 --- a/bin/pt-slave-delay +++ b/bin/pt-slave-delay @@ -3408,11 +3408,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-slave-restart b/bin/pt-slave-restart index 923e8d48..2e59e1e1 100755 --- a/bin/pt-slave-restart +++ b/bin/pt-slave-restart @@ -4032,11 +4032,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-table-checksum b/bin/pt-table-checksum index f5a01381..29b8649f 100755 --- a/bin/pt-table-checksum +++ b/bin/pt-table-checksum @@ -746,11 +746,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-table-sync b/bin/pt-table-sync index 1704ab3f..f0ffb224 100755 --- a/bin/pt-table-sync +++ b/bin/pt-table-sync @@ -8870,11 +8870,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-upgrade b/bin/pt-upgrade index dce1ee5e..84d2b5b3 100755 --- a/bin/pt-upgrade +++ b/bin/pt-upgrade @@ -11689,11 +11689,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/bin/pt-variable-advisor b/bin/pt-variable-advisor index 69c647b6..160bd6e9 100755 --- a/bin/pt-variable-advisor +++ b/bin/pt-variable-advisor @@ -4315,11 +4315,26 @@ eval { require HTTPMicro; }; -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } sub version_check_time_limit { diff --git a/lib/VersionCheck.pm b/lib/VersionCheck.pm index acb67064..e76802e4 100644 --- a/lib/VersionCheck.pm +++ b/lib/VersionCheck.pm @@ -48,12 +48,30 @@ eval { }; # Return the version check file used to keep track of -# MySQL instance that have been checked and when. -sub version_check_file { - return File::Spec->catfile( - File::Spec->tmpdir(), - 'percona-version-check-2.2' +# MySQL instance that have been checked and when. Some +# systems use random tmp dirs; we don't want that else +# every user will have their own vc file. One vc file +# per system is the goal, so prefer global sys dirs first. +{ + my $file = 'percona-version-check'; + my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.'; + my @vc_dirs = ( + '/etc/percona', + '/etc/percona-toolkit', + '/tmp', + "$home", ); + + sub version_check_file { + foreach my $dir ( @vc_dirs ) { + if ( -d $dir && -w $dir ) { + PTDEBUG && _d('Version check file', $file, 'in', $dir); + return $dir . '/' . $file; + } + } + PTDEBUG && _d('Version check file', $file, 'in', $ENV{PWD}); + return $file; # in the CWD + } } # Return time limit between checks.