-
Notifications
You must be signed in to change notification settings - Fork 476
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
metamorphic: refactor key tracking for single deletes
This commit refactors the key tracking performed across objects and decision-making around when to perform single deletes. Previously, the metamorphic test tracked inflight writes to batches and restricted operations to keys with inflight deletes (both SINGLEDEL and DEL). This commit takes an alternative approach of tracking entire key histories per object and only restricting per-object single deletes. This tracking alone is sufficient to maintain single delete invariants for operations only performed directly against the DB object. Operations performed to batches and then committed to the database require additional care. Rather than attempting to prevent violations from ever being generated, this commit adapts the generator to detect violations and correct them. When an applying or ingesting batch containing a single delete would cause a violation of the single delete invariants, the generator generates delete operations on the destination to avoid the violation. This allows single deletes to be generated in a wider variety of circumstances and plays well with the new multi-DB variants of the metamorphic test.
- Loading branch information
Showing
5 changed files
with
768 additions
and
613 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.