GetObjectWithGeneration may return the data from the wrong generation:
GetObjectWithGeneration takes a lock, retrieves object metadata, releases the lock.
- Here another call might create new generation as no lock is held.
GetObjectWithGeneration checks the actual and expected generation
GetObjectWithGeneration opens the file (that was replaced on step 2) and returns it.
Originally found in #2117
GetObjectWithGenerationmay return the data from the wrong generation:GetObjectWithGenerationtakes a lock, retrieves object metadata, releases the lock.GetObjectWithGenerationchecks the actual and expected generationGetObjectWithGenerationopens the file (that was replaced on step 2) and returns it.Originally found in #2117