mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-12-22 20:57:53 +00:00
Fixed bug #55131: --regexp --recstart hangs. Passes testsuite.
This commit is contained in:
parent
1ed248a63c
commit
a86ead354b
14
src/parallel
14
src/parallel
|
@ -526,10 +526,16 @@ sub spreadstdin {
|
|||
# (?!negative lookahead) is needed to avoid backtracking
|
||||
# See: https://unix.stackexchange.com/questions/439356/
|
||||
while($buf =~
|
||||
/# From start up till recend
|
||||
^((?:(?!$recend$recstart).)*?$recend
|
||||
/(
|
||||
# Either recstart or at least one char from start
|
||||
^(?: $recstart | .)
|
||||
# followed something
|
||||
(?:(?!$recend$recstart).)*?
|
||||
# and then recend
|
||||
$recend
|
||||
# Then n-1 times recstart.*recend
|
||||
(?:$recstart(?:(?!$recend$recstart).)*?$recend){$read_n_lines})
|
||||
(?:$recstart(?:(?!$recend$recstart).)*?$recend){$read_n_lines}
|
||||
)
|
||||
# Followed by recstart
|
||||
(?=$recstart)/osx) {
|
||||
$anything_written +=
|
||||
|
@ -1559,7 +1565,7 @@ sub check_invalid_option_combinations {
|
|||
|
||||
sub init_globals {
|
||||
# Defaults:
|
||||
$Global::version = 20181124;
|
||||
$Global::version = 20181202;
|
||||
$Global::progname = 'parallel';
|
||||
$Global::infinity = 2**31;
|
||||
$Global::debug = 0;
|
||||
|
|
|
@ -664,7 +664,9 @@ par_X_eta_div_zero() {
|
|||
# We do not care how long it took
|
||||
seq 2 | stdout parallel -X --eta echo |
|
||||
grep -E -v 'ETA:.*AVG' |
|
||||
perl -pe 's/\d+/0/g'
|
||||
perl -pe 's/\d+/0/g' |
|
||||
perl -pe 's/Comp.* to complete//' |
|
||||
perl -ne '/../ and print'
|
||||
}
|
||||
|
||||
par_parcat_args_stdin() {
|
||||
|
@ -777,7 +779,12 @@ par_slow_pipe_regexp() {
|
|||
echo "### bug #53718: --pipe --regexp -N blocks"
|
||||
echo This should take a few ms, but took more than 2 hours
|
||||
seq 54000 80000 |
|
||||
timeout -k 1 60 parallel -N1000 --regexp --pipe --recstart 4 --recend 5 -k wc
|
||||
parallel -N1000 --regexp --pipe --recstart 4 --recend 5 -k wc
|
||||
echo "### These should give same output"
|
||||
seq 54000 80000 |
|
||||
parallel -N1000 --regexp --pipe --recstart 4 --recend 5 -k cat |
|
||||
md5sum
|
||||
seq 54000 80000 | md5sum
|
||||
}
|
||||
|
||||
par_results() {
|
||||
|
@ -865,7 +872,15 @@ par_space_envvar() {
|
|||
export PARALLEL=" -v" && parallel echo ::: 'space in envvar OK'
|
||||
}
|
||||
|
||||
par_pipe_N1_regexp() {
|
||||
echo 'bug #55131: --regexp --recstart hangs'
|
||||
echo "These should give the same"
|
||||
printf 'begin\n%send\n' '' a b c |
|
||||
parallel -kN1 --recstart 'begin\n' --pipe --regexp echo JOB{#}\;cat\;echo END
|
||||
printf 'begin\n%send\n' '' a b c |
|
||||
parallel -kN1 --recstart 'begin\n' --pipe echo JOB{#}\;cat\;echo END
|
||||
}
|
||||
|
||||
export -f $(compgen -A function | grep par_)
|
||||
compgen -A function | grep par_ | LC_ALL=C sort |
|
||||
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'
|
||||
parallel --timeout 20 -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'
|
||||
|
|
|
@ -1251,7 +1251,6 @@ par_PARALLEL_ENV OK as file
|
|||
par_PARALLEL_ENV ### PARALLEL_ENV as fifo
|
||||
par_PARALLEL_ENV OK as fifo
|
||||
par_X_eta_div_zero ### bug #34422: parallel -X --eta crashes with div by zero
|
||||
par_X_eta_div_zero 0
|
||||
par_X_eta_div_zero Computers / CPU cores / Max jobs to run
|
||||
par_X_eta_div_zero 0:local / 0 / 0
|
||||
par_append_joblog ### can you append to a joblog using +
|
||||
|
@ -1391,6 +1390,40 @@ par_parcat_rm bug #51691: parcat --rm remove fifo when opened
|
|||
par_parcat_rm OK1
|
||||
par_parcat_rm OK file removed
|
||||
par_perlexpr_with_newline Perl expression spanning 2 lines
|
||||
par_pipe_N1_regexp bug #55131: --regexp --recstart hangs
|
||||
par_pipe_N1_regexp These should give the same
|
||||
par_pipe_N1_regexp JOB1
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp end
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_N1_regexp JOB2
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp aend
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_N1_regexp JOB3
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp bend
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_N1_regexp JOB4
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp cend
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_N1_regexp JOB1
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp end
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_N1_regexp JOB2
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp aend
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_N1_regexp JOB3
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp bend
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_N1_regexp JOB4
|
||||
par_pipe_N1_regexp begin
|
||||
par_pipe_N1_regexp cend
|
||||
par_pipe_N1_regexp END
|
||||
par_pipe_no_command ### --pipe without command
|
||||
par_pipe_no_command parallel: Error: --pipe/--pipepart must have a command to pipe into (e.g. 'cat').
|
||||
par_pipe_recend bug #54328: --pipe --recend blocks
|
||||
|
@ -1481,8 +1514,11 @@ par_retries_replacement_string 33
|
|||
par_retries_replacement_string 33
|
||||
par_slow_pipe_regexp ### bug #53718: --pipe --regexp -N blocks
|
||||
par_slow_pipe_regexp This should take a few ms, but took more than 2 hours
|
||||
par_slow_pipe_regexp 979 980 5875
|
||||
par_slow_pipe_regexp 25022 25022 150131
|
||||
par_slow_pipe_regexp 980 981 5881
|
||||
par_slow_pipe_regexp 25021 25021 150125
|
||||
par_slow_pipe_regexp ### These should give same output
|
||||
par_slow_pipe_regexp 6e72d7f86f6a423b9a7fa97630587815 -
|
||||
par_slow_pipe_regexp 6e72d7f86f6a423b9a7fa97630587815 -
|
||||
par_space_envvar ### bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'
|
||||
par_space_envvar echo 'space in envvar OK'
|
||||
par_space_envvar space in envvar OK
|
||||
|
|
|
@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
|
|||
echo '### --version must have higher priority than retired options'
|
||||
### --version must have higher priority than retired options
|
||||
$NICEPAR --version -g -Y -U -W -T | tail
|
||||
GNU parallel 20181124
|
||||
GNU parallel 20181202
|
||||
Copyright (C) 2007-2018 Ole Tange and Free Software Foundation, Inc.
|
||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
|
|
Loading…
Reference in a new issue