Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
There is a race-condition between a collision rollback and MongoDocumentStore's nodesCache leaking uncommitted data, that later gets treated as if committed.
Under normal circumstances, a collision is properly cleaned up via a rollback : all colliding data written is removed, and the revision was never marked as committed in the first place. Without the revision marked as committed, no-one would know of that revision - i.e. it wouldn't be able to be read since that clusterId doesn't update parent's lastRevs etc. Subsequent updates on involved documents result in caches to be updated accordingly, after which all traces from a collision rollback are gone.
But if a peer cluster manages to read and cache uncommitted data, that later is rolled back due to a collision, it can happen that it treats that data as if committed.
This situation only persists as long as that process is running - since this is dependent on cached data. The data in the physical repository is always consistent. So a restart will cause that uncommitted data to disappear again.