On Tuesday, March 13, 2018 9:42:41 PM CEST Pavel Raiskup wrote: > ping, still valid issue
ping > 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]) > > > > > > > >