diff --git a/README b/README index 1f242f56..80c33bc6 100644 --- a/README +++ b/README @@ -84,7 +84,7 @@ Watch the intro video for a quick introduction: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1 Walk through the tutorial (man parallel_tutorial). You command line -with love you for it. +will love you for it. When using programs that use GNU Parallel to process data for publication please cite: diff --git a/src/parallel b/src/parallel index cd2fd0de..720f2911 100755 --- a/src/parallel +++ b/src/parallel @@ -185,6 +185,9 @@ cleanup(); if($Global::semaphore) { $sem->release(); } +for(keys %Global::sshmaster) { + kill 9, $_; +} ::debug("Halt\n"); if($opt::halt_on_error) { wait_and_exit($Global::halt_on_error_exitstatus); @@ -630,7 +633,7 @@ sub get_options_from_array { sub parse_options { # Returns: N/A # Defaults: - $Global::version = 20140323; + $Global::version = 20140326; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; @@ -3825,7 +3828,7 @@ sub sshcommand_of_sshlogin { $serverlogin = $self->{'string'}; # OpenSSH_3.6.1p2 gives 'tcgetattr: Invalid argument' with -tt # 2>/dev/null to ignore "process_mux_new_session: tcgetattr: Invalid argument" - my $master = "ssh -MTS $control_path $serverlogin sleep 1 2>/dev/null"; + my $master = "ssh -MTS $control_path $serverlogin sleep 1000000000 2>/dev/null"; if(not $self->{'control_path'}{$control_path}++) { # Master is not running for this control_path # Start it diff --git a/testsuite/tests-to-run/parallel-local-ssh1.sh b/testsuite/tests-to-run/parallel-local-ssh1.sh index 26f0fe17..179fae8e 100644 --- a/testsuite/tests-to-run/parallel-local-ssh1.sh +++ b/testsuite/tests-to-run/parallel-local-ssh1.sh @@ -4,7 +4,12 @@ rm -rf tmp mkdir tmp cd tmp -cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -j8 -k -L1 +cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -j6 -k -L1 +echo '### bug #41964: --controlmaster not sems to reuse OpenSSH connections to the same host' + (parallel -S redhat9.tange.dk true ::: {1..20}; echo No --controlmaster - finish last) & + (parallel -M -S redhat9.tange.dk true ::: {1..20}; echo With --controlmaster - finish first) & + wait + echo '### bug #41805: Idea: propagate --env for parallel --number-of-cores' FOO=test_csh_filter parallel --filter-hosts --env FOO,PATH -S csh@lo env ::: "" |egrep 'FOO|PATH' FOO=test_csh parallel --env FOO,PATH -S csh@lo env ::: "" |egrep 'FOO|PATH' diff --git a/testsuite/wanted-results/parallel-local-ssh1 b/testsuite/wanted-results/parallel-local-ssh1 index 2073f32c..723ca622 100644 --- a/testsuite/wanted-results/parallel-local-ssh1 +++ b/testsuite/wanted-results/parallel-local-ssh1 @@ -1,3 +1,6 @@ +### bug #41964: --controlmaster not sems to reuse OpenSSH connections to the same host +With --controlmaster - finish first +No --controlmaster - finish last ### bug #41805: Idea: propagate --env for parallel --number-of-cores FOO=test_csh_filter PATH=/home/tange/bin:/home/tange/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/sbin:/usr/sbin:/home/tange/terminals/data-import:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin:/home/tange/bin