Allow setCompressedReadAheadBufferSizeInKb(0) to disable RAB

This commit is contained in:
nivy 2026-07-13 22:31:39 -07:00
parent 1515da5635
commit 0a6bf2b7f5
2 changed files with 26 additions and 2 deletions

View File

@ -3067,8 +3067,8 @@ public class DatabaseDescriptor
public static void setCompressedReadAheadBufferSizeInKb(int sizeInKb)
{
if (sizeInKb < 256)
throw new IllegalArgumentException("compressed_read_ahead_buffer_size_in_kb must be at least 256KiB");
if (sizeInKb != 0 && sizeInKb < 256)
throw new IllegalArgumentException("compressed_read_ahead_buffer_size_in_kb must be at least 256KiB (set to 0 to disable)");
conf.compressed_read_ahead_buffer_size = createIntKibibyteBoundAndEnsureItIsValidForByteConversion(sizeInKb, "compressed_read_ahead_buffer_size");
}

View File

@ -1190,4 +1190,28 @@ public class DatabaseDescriptorTest
conf.local_system_data_file_directory = savedLocalSystemDir;
}
}
@Test
public void testSetCompressedReadAheadBufferSizeInKb()
{
int original = DatabaseDescriptor.getCompressedReadAheadBufferSizeInKB();
try
{
// 0 should be a legal value, and represents disabling read-ahead buffer
DatabaseDescriptor.setCompressedReadAheadBufferSizeInKb(0);
assertEquals(0, DatabaseDescriptor.getCompressedReadAheadBufferSizeInKB());
assertEquals(0, DatabaseDescriptor.getCompressedReadAheadBufferSize());
Assertions.assertThatThrownBy(() -> DatabaseDescriptor.setCompressedReadAheadBufferSizeInKb(255))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("compressed_read_ahead_buffer_size_in_kb must be at least 256KiB (set to 0 to disable)");
DatabaseDescriptor.setCompressedReadAheadBufferSizeInKb(256);
assertEquals(256, DatabaseDescriptor.getCompressedReadAheadBufferSizeInKB());
}
finally
{
DatabaseDescriptor.setCompressedReadAheadBufferSizeInKb(original);
}
}
}