mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-23 18:10:39 +00:00
Currently, we keep the entries in a circular_buffer, which uses a contiguous storage. For large partitions with many promoted index entries this can cause OOM and sstable compaction failure. A similar problem exists for the offset vector built in write_promoted_index(). This change solves the problem by serializing promoted index entries and the offset vector on the fly directly into a bytes_ostream, which uses fragmented storage. The serialization of the first entry is deferred, so that serialization is avoided if there will be less than 2 entries. Promoted index is not added for such partitions. There still remains a problem that large-enough promoted index can cause OOM. Refs #4217