Do not crash on first boot with data_disk_usage_max_disk_size set when data directory is not created yet

patch by Isaac Reath; reviewed by Paulo Motta, Stefan Miklosovic for CASSANDRA-20787
This commit is contained in:
Isaac Reath 2025-07-25 12:31:12 -04:00 committed by Stefan Miklosovic
parent f5f71b7fae
commit fcaa1b3e39
No known key found for this signature in database
GPG Key ID: 32F35CB2F546D93E
4 changed files with 4 additions and 11 deletions

View File

@ -1,4 +1,5 @@
4.1.10
* Do not crash on first boot with data_disk_usage_max_disk_size set when data directory is not created yet (CASSANDRA-20787)
* Rework / simplification of nodetool get/setguardrailsconfig commands (CASSANDRA-20778)
* IntrusiveStack.accumulate is not accumulating correctly (CASSANDRA-20670)
* Add nodetool get/setguardrailsconfig commands (CASSANDRA-19552)

View File

@ -392,6 +392,8 @@ public class DatabaseDescriptor
applySslContext();
createAllDirectories();
applyGuardrails();
applyStartupChecks();

View File

@ -606,7 +606,6 @@ public class Instance extends IsolatedExecutor implements IInvokableInstance
System.setProperty("cassandra.consistent.simultaneousmoves.allow", "true");
}
mkdirs();
assert config.networkTopology().contains(config.broadcastAddress()) : String.format("Network topology %s doesn't contain the address %s",
config.networkTopology(), config.broadcastAddress());
@ -617,7 +616,6 @@ public class Instance extends IsolatedExecutor implements IInvokableInstance
DatabaseDescriptor.daemonInitialization();
FileUtils.setFSErrorHandler(new DefaultFSErrorHandler());
DatabaseDescriptor.createAllDirectories();
CassandraDaemon.getInstanceForTesting().migrateSystemDataIfNeeded();
CommitLog.instance.start();
@ -814,15 +812,6 @@ public class Instance extends IsolatedExecutor implements IInvokableInstance
).run();
}
private void mkdirs()
{
new File(config.getString("saved_caches_directory")).tryCreateDirectories();
new File(config.getString("hints_directory")).tryCreateDirectories();
new File(config.getString("commitlog_directory")).tryCreateDirectories();
for (String dir : (String[]) config.get("data_file_directories"))
new File(dir).tryCreateDirectories();
}
private Config loadConfig(IInstanceConfig overrides)
{
Map<String, Object> params = overrides.getParams();

View File

@ -72,6 +72,7 @@ public class GuardrailDiskUsageTest extends GuardrailTester
cluster = init(Cluster.build(2)
.withInstanceInitializer(DiskStateInjection::install)
.withConfig(c -> c.with(Feature.GOSSIP, Feature.NATIVE_PROTOCOL)
.set("data_disk_usage_max_disk_size", "10GiB")
.set("data_disk_usage_percentage_warn_threshold", 98)
.set("data_disk_usage_percentage_fail_threshold", 99)
.set("authenticator", "PasswordAuthenticator"))