]> git.ipfire.org Git - thirdparty/tar.git/commit
tests: fix race in dirrem01 and dirrem02
authorPavel Raiskup <praiskup@redhat.com>
Thu, 4 Jan 2018 17:55:12 +0000 (18:55 +0100)
committerSergey Poznyakoff <gray@gnu.org>
Sun, 18 Mar 2018 06:33:03 +0000 (08:33 +0200)
commit64b43fdf70d82c39eb2ca900cd4f8e49b86c2020
tree4a10d89973ed13777d3a46e25cf9ffc970e13673
parent7b8efcc7cbd92e608e69087dd6055d03d0bd2519
tests: fix race in dirrem01 and dirrem02

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
tests/dirrem02.at