This patch enforces a minimum size of unprivileged section when performing shrink() operation. When the cache is shrank, we still drop entries first from unprivileged section (as before this commit), however if this section is already small (smaller than max_size / 2), we will drop entries from the privileged section. For example if the cache could store at most 50 entries and there are 49 entries in privileged section, after adding 5 entries (that would go to unprivileged section) 4 of them would get evicted and only the 5th one would stay. This caused problems with BATCH statements where all prepared statements in the batch have to stay in cache at the same time for the batch to correctly execute. New tests are added to check this behavior and bookkeeping of section sizes. Fixes #10440.
32 KiB
32 KiB