mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-21 21:47:54 +00:00
Fixed bug #57886: Errors when using different version on remote.
This commit is contained in:
parent
ab074aa198
commit
36912dc230
|
@ -23,7 +23,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20200322;
|
$Global::version = 20200323;
|
||||||
Getopt::Long::Configure("bundling","require_order");
|
Getopt::Long::Configure("bundling","require_order");
|
||||||
get_options_from_array(\@ARGV) || die_usage();
|
get_options_from_array(\@ARGV) || die_usage();
|
||||||
if($opt::version) {
|
if($opt::version) {
|
||||||
|
|
24
src/parallel
24
src/parallel
|
@ -2146,7 +2146,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20200322;
|
$Global::version = 20200323;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$::name = "GNU Parallel";
|
$::name = "GNU Parallel";
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
|
@ -4356,33 +4356,39 @@ sub parallelized_host_filtering() {
|
||||||
|
|
||||||
sub sshwrapped {
|
sub sshwrapped {
|
||||||
# Wrap with ssh and --env
|
# Wrap with ssh and --env
|
||||||
|
# Return $default_value if command fails
|
||||||
my $sshlogin = shift;
|
my $sshlogin = shift;
|
||||||
my $command = shift;
|
my $command = shift;
|
||||||
my $commandline = CommandLine->new(1,[$command],{},0,0,[],[],{},{},{});
|
my $default_value = shift;
|
||||||
|
# wrapper that returns $default_value if the command fails:
|
||||||
|
# bug #57886: Errors when using different version on remote
|
||||||
|
# perl -e '$a=`$command`; print $? ? "$default_value" : $a'
|
||||||
|
my $wcmd = q(perl -e '$a=`).$command.q(`;).
|
||||||
|
q(print $? ? ").::pQ($default_value).q(" : $a');
|
||||||
|
my $commandline = CommandLine->new(1,[$wcmd],{},0,0,[],[],{},{},{});
|
||||||
my $job = Job->new($commandline);
|
my $job = Job->new($commandline);
|
||||||
$job->set_sshlogin($sshlogin);
|
$job->set_sshlogin($sshlogin);
|
||||||
$job->wrapped();
|
$job->wrapped();
|
||||||
return($job->{'wrapped'});
|
return($job->{'wrapped'});
|
||||||
}
|
}
|
||||||
|
|
||||||
my(@sockets, @cores, @threads, @maxline, @echo);
|
my(@sockets, @cores, @threads, @maxline, @echo);
|
||||||
while (my ($host, $sshlogin) = each %Global::host) {
|
while (my ($host, $sshlogin) = each %Global::host) {
|
||||||
if($host eq ":") { next }
|
if($host eq ":") { next }
|
||||||
# The 'true' is used to get the $host out later
|
# The 'true' is used to get the $host out later
|
||||||
push(@sockets, $host."\t"."true $host; ".
|
push(@sockets, $host."\t"."true $host; ".
|
||||||
sshwrapped($sshlogin,"parallel --number-of-sockets")."\n\0");
|
sshwrapped($sshlogin,"parallel --number-of-sockets",0)."\n\0");
|
||||||
push(@cores, $host."\t"."true $host; ".
|
push(@cores, $host."\t"."true $host; ".
|
||||||
sshwrapped($sshlogin,"parallel --number-of-cores")."\n\0");
|
sshwrapped($sshlogin,"parallel --number-of-cores",0)."\n\0");
|
||||||
push(@threads, $host."\t"."true $host; ".
|
push(@threads, $host."\t"."true $host; ".
|
||||||
sshwrapped($sshlogin,"parallel --number-of-threads")."\n\0");
|
sshwrapped($sshlogin,"parallel --number-of-threads",0)."\n\0");
|
||||||
push(@maxline, $host."\t"."true $host; ".
|
push(@maxline, $host."\t"."true $host; ".
|
||||||
sshwrapped($sshlogin,"parallel --max-line-length-allowed")."\n\0");
|
sshwrapped($sshlogin,"parallel --max-line-length-allowed",0)."\n\0");
|
||||||
# 'echo' is used to get the fastest possible ssh login time
|
# 'echo' is used to get the fastest possible ssh login time
|
||||||
my $sshcmd = "true $host; exec " .$sshlogin->sshcommand()." ".
|
my $sshcmd = "true $host; exec " .$sshlogin->sshcommand()." ".
|
||||||
$sshlogin->serverlogin();
|
$sshlogin->serverlogin();
|
||||||
push(@echo, $host."\t".$sshcmd." -- echo\n\0");
|
push(@echo, $host."\t".$sshcmd." -- echo\n\0");
|
||||||
}
|
}
|
||||||
|
|
||||||
# --timeout 10: Setting up an SSH connection and running a simple
|
# --timeout 10: Setting up an SSH connection and running a simple
|
||||||
# command should never take > 10 sec.
|
# command should never take > 10 sec.
|
||||||
# --delay 0.1: If multiple sshlogins use the same proxy the delay
|
# --delay 0.1: If multiple sshlogins use the same proxy the delay
|
||||||
|
@ -4398,6 +4404,8 @@ sub parallelized_host_filtering() {
|
||||||
|
|
||||||
my ($host_fh,$in,$err);
|
my ($host_fh,$in,$err);
|
||||||
open3($in, $host_fh, $err, $cmd) || ::die_bug("parallel host check: $cmd");
|
open3($in, $host_fh, $err, $cmd) || ::die_bug("parallel host check: $cmd");
|
||||||
|
::debug("init", map { $_,"\n" } @sockets, @cores, @threads, @maxline, @echo);
|
||||||
|
|
||||||
if(not fork()) {
|
if(not fork()) {
|
||||||
# Give the commands to run to the $cmd
|
# Give the commands to run to the $cmd
|
||||||
close $host_fh;
|
close $host_fh;
|
||||||
|
|
|
@ -469,7 +469,7 @@ basename of input line.
|
||||||
Use the replacement string I<replace-str> instead of B<{/.}> for basename of input line without extension.
|
Use the replacement string I<replace-str> instead of B<{/.}> for basename of input line without extension.
|
||||||
|
|
||||||
|
|
||||||
=item B<--bin> I<binexpr> (alpha testing)
|
=item B<--bin> I<binexpr> (beta testing)
|
||||||
|
|
||||||
Use I<binexpr> as binning key and bin input to the jobs.
|
Use I<binexpr> as binning key and bin input to the jobs.
|
||||||
|
|
||||||
|
@ -2302,7 +2302,7 @@ when called with B<--shebang>).
|
||||||
Use B<--sqlmaster> instead.
|
Use B<--sqlmaster> instead.
|
||||||
|
|
||||||
|
|
||||||
=item B<--sqlmaster> I<DBURL> (alpha testing)
|
=item B<--sqlmaster> I<DBURL> (beta testing)
|
||||||
|
|
||||||
Submit jobs via SQL server. I<DBURL> must point to a table, which will
|
Submit jobs via SQL server. I<DBURL> must point to a table, which will
|
||||||
contain the same information as B<--joblog>, the values from the input
|
contain the same information as B<--joblog>, the values from the input
|
||||||
|
@ -2340,12 +2340,12 @@ It can also be an alias from ~/.sql/aliases:
|
||||||
:myalias mysql:///mydb/paralleljobs
|
:myalias mysql:///mydb/paralleljobs
|
||||||
|
|
||||||
|
|
||||||
=item B<--sqlandworker> I<DBURL> (alpha testing)
|
=item B<--sqlandworker> I<DBURL> (beta testing)
|
||||||
|
|
||||||
Shorthand for: B<--sqlmaster> I<DBURL> B<--sqlworker> I<DBURL>.
|
Shorthand for: B<--sqlmaster> I<DBURL> B<--sqlworker> I<DBURL>.
|
||||||
|
|
||||||
|
|
||||||
=item B<--sqlworker> I<DBURL> (alpha testing)
|
=item B<--sqlworker> I<DBURL> (beta testing)
|
||||||
|
|
||||||
Execute jobs via SQL server. Read the input sources variables from the
|
Execute jobs via SQL server. Read the input sources variables from the
|
||||||
table pointed to by I<DBURL>. The I<command> on the command line
|
table pointed to by I<DBURL>. The I<command> on the command line
|
||||||
|
|
2
src/sql
2
src/sql
|
@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20200322;
|
$Global::version = 20200323;
|
||||||
$Global::progname = 'sql';
|
$Global::progname = 'sql';
|
||||||
|
|
||||||
# This must be done first as this may exec myself
|
# This must be done first as this may exec myself
|
||||||
|
|
Loading…
Reference in a new issue