You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The cbook.makedirs code does not catch all the problems with multi-threading. We are seeing a very rare failure in the LSST test suite when multiple tests are using matplotlib in parallel. I think it is because the try/catch in makedirs is assuming that only the last part of the path could have the race and only does a single catch around the entire for loop. If both processes are racing to create path A/B/C and both notice that B is missing then the second one to attempt to create B will abort when it finds that B now exists. It should just continue on with trying to make C. I think the try/catch should be in the inner part of the loop around the os.makedirs call.
The
cbook.makedirs
code does not catch all the problems with multi-threading. We are seeing a very rare failure in the LSST test suite when multiple tests are using matplotlib in parallel. I think it is because the try/catch inmakedirs
is assuming that only the last part of the path could have the race and only does a single catch around the entire for loop. If both processes are racing to create pathA/B/C
and both notice thatB
is missing then the second one to attempt to createB
will abort when it finds thatB
now exists. It should just continue on with trying to makeC
. I think the try/catch should be in the inner part of the loop around theos.makedirs
call.This is the error we get:
with v1.4.3.
Originally filed as an addendum of #2046. @tacaswell requested I file this separately.
See the PR in #5224
The text was updated successfully, but these errors were encountered: