#12002: avoid race conditions when creating directories - scripts
------------------------+---------------------------------------------------
   Reporter:  jdemeyer  |          Owner:  leif          
       Type:  defect    |         Status:  needs_work    
   Priority:  blocker   |      Milestone:  sage-4.8      
  Component:  scripts   |       Keywords:                
Work_issues:            |       Upstream:  N/A           
   Reviewer:            |         Author:  Jeroen Demeyer
     Merged:            |   Dependencies:                
------------------------+---------------------------------------------------
Changes (by jdemeyer):

  * status:  needs_review => needs_work


Comment:

 Replying to [comment:6 jhpalmieri]:
 > We still have the possibility of a race condition, though:
 > {{{
 > #!python
 >   if os.path.isdir(TMP):   # suppose TMP does not exist at this point
 >       shutil.rmtree(TMP)
 >   # but suppose by now TMP exists
 >   os.makedirs(TMP)
 > }}}
 > Instead maybe this?
 > {{{
 > #!python
 >   try:
 >      os.makedirs(TMP)
 >   except OSError:
 >      if os.path.isdir(TMP):
 >         shutil.rmtree(TMP)
 >         os.makedirs(TMP)
 >      else:
 >         raise
 > }}}
 There is still a race condition (between the `rmtree` and `makedirs`) but
 I don't think this can be avoided here.  But I like your code, using a
 nice `try`/`except` block.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12002#comment:7>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to