ping, still valid issue
On Thursday, January 4, 2018 7:17:31 PM CET Pavel Raiskup wrote:
> Previously the '--checkpoint-action=echo' was triggered after
> '--checkpoint-action=sleep=1' - so the order of events *usually*
> was (for --format='gnu'):
>
> ...
> 1. checkpoint handler before write of 'dir/sub' member
> 2. one-second delay
> 3. stderr write: 'tar: Write checkpoint 3'
> 4. write the member 'dir/sub' into the archive
> 5. check that the member's ctime has not been changed
> 6. genfile's detecting 'Write checkpoint', doing unlink
> ...
>
> But sometimes, the genfile was fast enough to win the race and
> unlinked the directory before the member was written into the
> archive (IOW, the order was 1-2-3-6-4-5). This led to the
> occasional warning 'tar: dir/sub: file changed as we read it'.
>
> Swap the order of 'sleep=1' and 'echo' actions so the genfile
> utility has (hopefully) enough time to do the unlink before
> writing the file into the archive (enforce 1-2-3-6-4-5 order).
>
> * tests/dirrem01.at: Swap 'sleep=1' and 'echo' actions.
> * tests/dirrem02.at: Likewise.
> ---
> tests/dirrem01.at | 5 +++--
> tests/dirrem02.at | 7 ++++---
> 2 files changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/tests/dirrem01.at b/tests/dirrem01.at
> index 40344dc..dabc206 100644
> --- a/tests/dirrem01.at
> +++ b/tests/dirrem01.at
> @@ -47,14 +47,15 @@ gnu) CPT=3;;
> esac
>
> genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \
> - tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='sleep=1' \
> - --checkpoint-action='echo' -c -f archive.tar \
> + tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='echo' \
> + --checkpoint-action='sleep=1' -c -f archive.tar \
> --listed-incremental db -v dir >/dev/null
> ],
> [1],
> [ignore],
> [tar: dir: Directory is new
> tar: dir/sub: Directory is new
> +tar: dir/sub: file changed as we read it
> tar: dir/sub: File removed before we read it
> ],[],[],[gnu,posix])
>
> diff --git a/tests/dirrem02.at b/tests/dirrem02.at
> index e1cf9ef..924454f 100644
> --- a/tests/dirrem02.at
> +++ b/tests/dirrem02.at
> @@ -20,7 +20,7 @@
>
> # Description:
> #
> -# When an explicitley named directory disappears during creation
> +# When an explicitly named directory disappears during creation
> # of incremental dump, tar should still exit with TAREXIT_FAILURE (2).
> #
> # For further details see dirrem01.at
> @@ -44,14 +44,15 @@ gnu) CPT=3;;
> esac
>
> genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \
> - tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='sleep=1' \
> - --checkpoint-action='echo' -c -f archive.tar \
> + tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='echo' \
> + --checkpoint-action='sleep=1' -c -f archive.tar \
> --listed-incremental db -v dir dir/sub >/dev/null
> ],
> [2],
> [ignore],
> [tar: dir: Directory is new
> tar: dir/sub: Directory is new
> +tar: dir/sub: file changed as we read it
> tar: dir/sub: Cannot open: No such file or directory
> tar: Exiting with failure status due to previous errors
> ],[],[],[gnu,posix])
>