If you can reproduce this, a few more details would be helpful. When it happens, can you tell if the 'held' directory is actually present. Meaning the rename does succeed, just not immediately.
The primary workaround is to not use a file system for which doing:
mkdir a
echo content > a/info
rename a b
open b/info
fails.
Such as using bzr+ssh instead of a locally mounted filesystem.
If you do find that the directory does exist eventually, then a small wait loop in the inner function that checks after-rename would be ok. It should succeed immediately in most systems, so it won't delay anything unless you have a system which is actually either genuinely failing or just sluggish to actually handle the rename operation.
If you can reproduce this, a few more details would be helpful. When it happens, can you tell if the 'held' directory is actually present. Meaning the rename does succeed, just not immediately.
The primary workaround is to not use a file system for which doing:
mkdir a
echo content > a/info
rename a b
open b/info
fails.
Such as using bzr+ssh instead of a locally mounted filesystem.
If you do find that the directory does exist eventually, then a small wait loop in the inner function that checks after-rename would be ok. It should succeed immediately in most systems, so it won't delay anything unless you have a system which is actually either genuinely failing or just sluggish to actually handle the rename operation.