mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-02 04:56:58 +00:00
Fixes #6202 Distributed loader sstable opening is gated through the database::sstable_load_concurrency_sem() semaphore (at a concurrency of 3). This is (according to creation comment) to reduce memory footprint during bootstrap, by partially serializing the actual opening of existing sstables. However, in certain versions of the product, there exist circular dependencies between data in some sstables and the ability to actually read others. Thus when gated as above, we can end up with the dependents acquiring the semaphore fully, and once stuck waiting for population of their dependency effectively blocking this from ever happening. Since we probably do not want to remove the concurrency control, and increasing it would only push the problem further away, we solve the issue by adding the ability to mark certain keyspaces as "prioritized" (pre-bootstrap), and allow them to populate outside the normal concurrency control semaphore. Concurrency increase is however limited to one extra sstable per shard and prio keyspace. Message-Id: <20200415102431.20816-1-calle@scylladb.com>
50 KiB
50 KiB