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
