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
142653: kvserver, storage: clean up, fix bugs in, and test snapshot receive path r=tbg a=tbg
When a snapshot is received, we write the incoming KV pairs into a number of SSTs. With the introduction of excise and shared/external SSTs (disagg storage), this code had become quite crufty and supported - in principle - multiple modes that made it quite brittle and under-tested.
In this PR, we "bake in" excises: for the SST covering the MVCC span, we don't lay down a range deletion but instead *always* use excise. We now also always allow splitting of large MVCC SSTs (into reasonably-sized SSTs). This works against the previous proliferation of options, and enabled various code improvements.
The code around range keys (MVCC rangedels) was cleaned up too, and missing fragmentation was added. For "regular" rangedels (ClearRange), fragmentation was missing entirely and was added as well.
We now have a datadriven unit test for the MultiSSTWriter, which shows precisely what's contained in each produced SST. This doesn't mean the receive path is well-tested - far from it - but at least there's a solid foundation to build on top of.
Overall, the code here is much improved and easier to reason about.
Epic: CRDB-46488
Release Note: None
144215: vecindex: update vector index key and value encodings r=drewkimball a=andy-kimball
First commit:
When multiple workers are racing to create the root partition, it's possible to trigger an error when the root partition already exists and is in a state other than Ready (e.g. Splitting). Fix this by creating the root metadata record only if doesn't already exist. If it does exist, just return the current metadata.
Second commit:
Make two updates to how KV keys and values are encoded for vector indexes:
1. Add Family ID to the end of the metadata KV key encoding. This is required by the KV split code, which checks the family ID to ensure that splits don't split column families for the same row across ranges.
2. Encode the partition state fields in the metadata KV value. This is needed for the new non-transactional background split code.
Epic: CRDB-42943
Release note: None
Co-authored-by: Tobias Grieger <[email protected]>
Co-authored-by: Andrew Kimball <[email protected]>
0 commit comments