Hi Jason,

 I have just review the change but it doesn't feel like an elegant
solution. I haven't workout a better solution yet though...

A mutex to prevent makeDirectory being called by multiple threads at
once might be one way, but this wouldn't protect against a totally
separate process/application s for creating the directory,

Do you consider/discount other solutions?

Robert.



On 25 April 2014 22:31, Jason Beverage <[email protected]> wrote:
> Hi Robert,
>
> Here is a fix for a small race condition in osgDB::makeDirectory.  It
> attempts to create all the directories in the given path and stops
> attempting to make directories when one of them fails.  I've added a check
> to see if the failure occurred b/c the directory was created by another
> thread or process.
>
> We were running into issues occasionally in osgEarth where multiple threads
> were writing out files like /1/2/3.jpg and /1/3/4.jpg.  Both threads would
> try to create the /1 directory and only one of them would succeed.  So the
> first thread would write out the full /1/2/3.jpg while the second thread
> wouldn't create the /1/3 directory b/c /1 was already created and the
> writing of /1/3/4.jpg would fail.
>
> Thanks!
>
> Jason
>
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to