bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-tar] [PATCH] tests: fix race in dirrem01 and dirrem02


From: Pavel Raiskup
Subject: Re: [Bug-tar] [PATCH] tests: fix race in dirrem01 and dirrem02
Date: Mon, 30 Jul 2018 15:07:25 +0200

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])
> > 
> 
> 
> 
> 
> 
> 







reply via email to

[Prev in Thread] Current Thread [Next in Thread]