So I always hated the way that the status field worked on our db's - but when looking at it I thought I spotted a race, and now I'm pretty sure it's there. Can someone check out this test case (redbo, put on your concurrency hat).
Basically if you PUT on a container if the file on disk already exists it will update the put_timestamp, if not it goes into initialize which *may* raise AlreadyExists - but in the second case we don't update put_timestamp! (?)
Can we make it so when you DELETE a db I think we should just replace the .db file with a .ts (a file with some xattrs if we need them, but that is *not* a db and definitely doesn't get re-used if you recreate it)
So I always hated the way that the status field worked on our db's - but when looking at it I thought I spotted a race, and now I'm pretty sure it's there. Can someone check out this test case (redbo, put on your concurrency hat).
Basically if you PUT on a container if the file on disk already exists it will update the put_timestamp, if not it goes into initialize which *may* raise AlreadyExists - but in the second case we don't update put_timestamp! (?)
Can we make it so when you DELETE a db I think we should just replace the .db file with a .ts (a file with some xattrs if we need them, but that is *not* a db and definitely doesn't get re-used if you recreate it)