Merge branch 'cassandra-4.0' into cassandra-4.1

* cassandra-4.0:
  Use default commitlog settings in test YAMLs
This commit is contained in:
Caleb Rackliffe 2024-08-15 10:15:33 -05:00
commit e5fc9b3e14
23 changed files with 75 additions and 48 deletions

View File

@ -6,6 +6,7 @@
* Reduce info logging from automatic paxos repair (CASSANDRA-19445)
* Support legacy plain_text_auth section in credentials file removed unintentionally (CASSANDRA-19498)
Merged from 4.0:
* Use default commitlog settings in test YAMLs (CASSANDRA-19830)
* Do not spam log with SSLExceptions (CASSANDRA-18839)
* Fix schema.cql created by a snapshot after dropping more than one column (CASSANDRA-19747)
* UnsupportedOperationException when reducing scope for LCS compactions (CASSANDRA-19704)

View File

@ -4,8 +4,8 @@
#
cluster_name: Test Cluster
memtable_allocation_type: heap_buffers
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
cdc_raw_directory: build/test/cassandra/cdc_raw

View File

@ -5,8 +5,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size_in_mb: 5
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -23,7 +23,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -23,7 +23,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -23,7 +23,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -23,7 +23,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -23,7 +23,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -5,8 +5,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
cdc_raw_directory: build/test/cassandra/cdc_raw

View File

@ -23,8 +23,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -23,8 +23,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -5,8 +5,8 @@
cluster_name: Test Cluster
memtable_allocation_type: heap_buffers
# memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -5,8 +5,8 @@
cluster_name: Test Cluster
# memtable_allocation_type: heap_buffers
memtable_allocation_type: offheap_objects
commitlog_sync: batch
commitlog_sync_batch_window_in_ms: 1.0
commitlog_sync: periodic
commitlog_sync_period: 10s
commitlog_segment_size: 5MiB
commitlog_directory: build/test/cassandra/commitlog
# commitlog_compression:

View File

@ -100,7 +100,8 @@ public class InstanceConfig implements IInstanceConfig
.set("memtable_flush_writers", 1)
.set("concurrent_compactors", 1)
.set("memtable_heap_space", "10MiB")
.set("commitlog_sync", "batch")
.set("commitlog_sync", "periodic")
.set("commitlog_sync_period_in_ms", 10000)
.set("storage_port", storage_port)
.set("native_transport_port", native_transport_port)
.set("endpoint_snitch", DistributedTestSnitch.class.getName())
@ -112,9 +113,7 @@ public class InstanceConfig implements IInstanceConfig
// capacities that are based on `totalMemory` that should be fixed size
.set("index_summary_capacity", "50MiB")
.set("counter_cache_size", "50MiB")
.set("key_cache_size", "50MiB")
// legacy parameters
.forceSet("commitlog_sync_batch_window_in_ms", "1");
.set("key_cache_size", "50MiB");
this.featureFlags = EnumSet.noneOf(Feature.class);
this.jmxPort = jmx_port;
}

View File

@ -164,7 +164,6 @@ public class RepairBoundaryTest extends TestBaseImpl
{
cluster = Cluster.build(3)
.withConfig(config -> config.set("hinted_handoff_enabled", false)
.set("commitlog_sync_batch_window_in_ms", 5)
.set("num_tokens", 1)
.set("initial_token", Long.toString(config.num() * 1000))
.with(NETWORK)

View File

@ -89,7 +89,6 @@ public class RepairTest extends TestBaseImpl
{
configModifier = configModifier.andThen(
config -> config.set("hinted_handoff_enabled", false)
.set("commitlog_sync_batch_window_in_ms", 5)
.with(NETWORK)
.with(GOSSIP)
);

View File

@ -56,8 +56,7 @@ public class ReplicaFilteringProtectionTest extends TestBaseImpl
{
cluster = init(Cluster.build()
.withNodes(REPLICAS)
.withConfig(config -> config.set("hinted_handoff_enabled", false)
.set("commitlog_sync", "batch")).start());
.withConfig(config -> config.set("hinted_handoff_enabled", false)).start());
// Make sure we start w/ the correct defaults:
cluster.get(1).runOnInstance(() -> assertEquals(DEFAULT_WARN_THRESHOLD, StorageService.instance.getCachedReplicaRowsWarnThreshold()));

View File

@ -53,6 +53,7 @@ import org.apache.cassandra.distributed.api.IIsolatedExecutor.SerializableBiCons
import org.apache.cassandra.distributed.api.IIsolatedExecutor.SerializableConsumer;
import org.apache.cassandra.distributed.api.IIsolatedExecutor.SerializableRunnable;
import org.apache.cassandra.distributed.impl.DirectStreamingConnectionFactory;
import org.apache.cassandra.distributed.impl.InstanceConfig;
import org.apache.cassandra.distributed.impl.IsolatedExecutor;
import org.apache.cassandra.io.compress.LZ4Compressor;
import org.apache.cassandra.service.paxos.BallotGenerator;
@ -673,20 +674,31 @@ public class ClusterSimulation<S extends Simulation> implements AutoCloseable
cluster = snitch.setup(Cluster.build(numOfNodes)
.withRoot(jimfs.getPath("/cassandra"))
.withSharedClasses(sharedClassPredicate)
.withConfig(config -> configUpdater.accept(threadAllocator.update(config
.with(Feature.BLANK_GOSSIP)
.set("read_request_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.readTimeoutNanos)))
.set("write_request_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.writeTimeoutNanos)))
.set("cas_contention_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.contentionTimeoutNanos)))
.set("request_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.requestTimeoutNanos)))
.set("memtable_heap_space", "1MiB")
.set("memtable_allocation_type", builder.memoryListener != null ? "unslabbed_heap_buffers_logged" : "heap_buffers")
.set("file_cache_size", "16MiB")
.set("use_deterministic_table_id", true)
.set("disk_access_mode", "standard")
.set("failure_detector", SimulatedFailureDetector.Instance.class.getName())
.set("commitlog_compression", new ParameterizedClass(LZ4Compressor.class.getName(), emptyMap()))
)))
.withConfig(config -> {
config.with(Feature.BLANK_GOSSIP)
.set("read_request_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.readTimeoutNanos)))
.set("write_request_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.writeTimeoutNanos)))
.set("cas_contention_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.contentionTimeoutNanos)))
.set("request_timeout", String.format("%dms", NANOSECONDS.toMillis(builder.requestTimeoutNanos)))
.set("memtable_heap_space", "1MiB")
.set("memtable_allocation_type", builder.memoryListener != null ? "unslabbed_heap_buffers_logged" : "heap_buffers")
.set("file_cache_size", "16MiB")
.set("use_deterministic_table_id", true)
.set("disk_access_mode", "standard")
.set("failure_detector", SimulatedFailureDetector.Instance.class.getName())
.set("commitlog_compression", new ParameterizedClass(LZ4Compressor.class.getName(), emptyMap()))
.set("commitlog_sync", "batch");
// TODO: Add remove() to IInstanceConfig
if (config instanceof InstanceConfig)
{
InstanceConfig instanceConfig = (InstanceConfig) config;
instanceConfig.remove("commitlog_sync_period_in_ms");
instanceConfig.remove("commitlog_sync_period");
}
configUpdater.accept(threadAllocator.update(config));
})
.withInstanceInitializer(new IInstanceInitializer()
{
@Override

View File

@ -42,7 +42,8 @@ public class FailStartupDuplicateParamsTest
{
private static final List<String> baseConfig = ImmutableList.of(
"cluster_name: Test Cluster",
"commitlog_sync: batch",
"commitlog_sync: periodic",
"commitlog_sync_period: 10s",
"commitlog_directory: build/test/cassandra/commitlog",
"hints_directory: build/test/cassandra/hints",
"partitioner: org.apache.cassandra.dht.ByteOrderedPartitioner",

View File

@ -79,7 +79,7 @@ public class LoadOldYAMLBackwardCompatibilityTest
assertEquals(new DataRateSpec.LongBytesPerSecondBound(24L * 1024L * 1024L), config.inter_dc_stream_throughput_outbound);
assertNull(config.commitlog_total_space);
assertEquals(new DurationSpec.IntMillisecondsBound(0.0, TimeUnit.MILLISECONDS), config.commitlog_sync_group_window);
assertEquals(new DurationSpec.IntMillisecondsBound(0), config.commitlog_sync_period);
assertEquals(new DurationSpec.IntMillisecondsBound(10000), config.commitlog_sync_period);
assertEquals(new DataStorageSpec.IntMebibytesBound(5), config.commitlog_segment_size);
assertNull(config.periodic_commitlog_sync_lag_block); //Integer
assertNull(config.max_mutation_size);

View File

@ -53,7 +53,7 @@ public class ParseAndConvertUnitsTest
assertEquals(new DurationSpec.IntMillisecondsBound(2000), config.internode_tcp_connect_timeout);
assertEquals(new DurationSpec.IntMillisecondsBound(30000), config.internode_tcp_user_timeout);
assertEquals(new DurationSpec.IntMillisecondsBound(0), config.commitlog_sync_group_window);
assertEquals(new DurationSpec.IntMillisecondsBound(0), config.commitlog_sync_period);
assertEquals(new DurationSpec.IntMillisecondsBound(10000), config.commitlog_sync_period);
assertNull(config.periodic_commitlog_sync_lag_block);
assertEquals(new DurationSpec.IntMillisecondsBound(250), config.cdc_free_space_check_interval);
assertEquals(new DurationSpec.IntMillisecondsBound(100), config.dynamic_snitch_update_interval);

View File

@ -316,15 +316,20 @@ public abstract class CQLTester
@BeforeClass
public static void setUpClass()
{
prePrepareServer();
// Once per-JVM is enough
prepareServer();
}
protected static void prePrepareServer()
{
System.setProperty("cassandra.superuser_setup_delay_ms", "0");
if (ROW_CACHE_SIZE_IN_MIB > 0)
DatabaseDescriptor.setRowCacheSizeInMiB(ROW_CACHE_SIZE_IN_MIB);
StorageService.instance.setPartitionerUnsafe(Murmur3Partitioner.instance);
// Once per-JVM is enough
prepareServer();
}
@AfterClass

View File

@ -44,10 +44,17 @@ import org.apache.cassandra.utils.KillerForTests;
public class CommitLogReaderTest extends CQLTester
{
@BeforeClass
public static void beforeClass()
public static void setUpClass()
{
prePrepareServer();
DatabaseDescriptor.setCommitFailurePolicy(Config.CommitFailurePolicy.ignore);
JVMStabilityInspector.replaceKiller(new KillerForTests(false));
DatabaseDescriptor.setCommitLogSync(Config.CommitLogSync.batch);
// Once per-JVM is enough
prepareServer();
}
@Before