Memtable allocation type unslabbed_heap_buffers_logged will cause an assertion error for TrieMemtables and SegmentedTrieMemtables

patch by David Capwell; reviewed by Brandon Williams, Caleb Rackliffe for CASSANDRA-19835
This commit is contained in:
David Capwell 2024-08-14 11:55:19 -07:00
parent aca11d4fc3
commit 3afa2585d9
3 changed files with 44 additions and 0 deletions

View File

@ -1,5 +1,6 @@
5.0-rc2
* Fix direct IO support always being evaluated to false upon the first start of a node (CASSANDRA-19779)
* Memtable allocation type unslabbed_heap_buffers_logged will cause an assertion error for TrieMemtables and SegmentedTrieMemtables (CASSANDRA-19835)
5.0-rc1

View File

@ -1185,6 +1185,7 @@ public class Config
switch (this)
{
case unslabbed_heap_buffers:
case unslabbed_heap_buffers_logged:
case heap_buffers:
return BufferType.ON_HEAP;
case offheap_buffers:

View File

@ -0,0 +1,42 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cassandra.config;
import org.junit.Assert;
import org.junit.Test;
import org.apache.cassandra.config.Config.MemtableAllocationType;
import org.apache.cassandra.io.compress.BufferType;
import static org.assertj.core.api.Assertions.assertThat;
public class ConfigTest
{
@Test
public void memtableAllocationTypeBuffer()
{
for (MemtableAllocationType type : MemtableAllocationType.values())
{
BufferType bufferType = type.toBufferType();
if (type.name().contains("offheap")) assertThat(bufferType).isEqualTo(BufferType.OFF_HEAP);
else if (type.name().contains("heap_buffers")) assertThat(bufferType).isEqualTo(BufferType.ON_HEAP);
else Assert.fail("Unexpected type: " + type);
}
}
}