You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RocksDB and Pebble have an invariant that for a given key the sequence numbers in higher levels will be larger than those in lower levels. This invariant also applies to the sstables within L0 and between L0 tables and data in memtables. Violating this invariant can cause all sorts of badness. Recently, a bug in RocksDB due to an interaction between intra-L0 compactions and ingestion allowed this invariant to be violated.
We should add a command which checks this invariant for a DB. This would have to walk over all of the data in the database. On the surface it seems similar to mergingIter, and it is possible that this can be a mode which mergingIter is run in. We wouldn't want to impact the performance of mergingIter, and we'd want this check to examine all keys, including range tombstones, and never skip keys. So perhaps not mergingIter, but similar.
In addition to an offline check, we should make sure that this is structured so that we can perform this check at the end of tests.
The text was updated successfully, but these errors were encountered:
RocksDB and Pebble have an invariant that for a given key the sequence numbers in higher levels will be larger than those in lower levels. This invariant also applies to the sstables within L0 and between L0 tables and data in memtables. Violating this invariant can cause all sorts of badness. Recently, a bug in RocksDB due to an interaction between intra-L0 compactions and ingestion allowed this invariant to be violated.
We should add a command which checks this invariant for a DB. This would have to walk over all of the data in the database. On the surface it seems similar to
mergingIter
, and it is possible that this can be a mode whichmergingIter
is run in. We wouldn't want to impact the performance ofmergingIter
, and we'd want this check to examine all keys, including range tombstones, and never skip keys. So perhaps notmergingIter
, but similar.In addition to an offline check, we should make sure that this is structured so that we can perform this check at the end of tests.
The text was updated successfully, but these errors were encountered: