Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Original file line number Diff line number Diff line change
Expand Up @@ -4100,6 +4100,26 @@ public static void setDynamicBadnessThreshold(double dynamicBadnessThreshold)
conf.dynamic_snitch_badness_threshold = dynamicBadnessThreshold;
}

public static boolean isDynamicSnitch()
{
return conf.dynamic_snitch;
}

public static void setDynamicSnitch(boolean enabled)
{
conf.dynamic_snitch = enabled;
}

public static void setEndpointSnitch(String endpointSnitch)
{
conf.endpoint_snitch = endpointSnitch;
}

public static void setNodeProximityClassName(String nodeProximity)
{
conf.node_proximity = nodeProximity;
}

public static EncryptionOptions.ServerEncryptionOptions getInternodeMessagingEncyptionOptions()
{
return conf.server_encryption_options;
Expand Down
21 changes: 21 additions & 0 deletions src/java/org/apache/cassandra/service/StorageService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4369,12 +4369,14 @@ public void updateSnitch(String epSnitchClassName, Boolean dynamic, Integer dyna
{
Supplier<NodeProximity> factory = () -> new SnitchAdapter(DatabaseDescriptor.createEndpointSnitch(epSnitchClassName));
updateProximityInternal(factory, dynamic, dynamicUpdateInterval, dynamicResetInterval, dynamicBadnessThreshold);
DatabaseDescriptor.setEndpointSnitch(epSnitchClassName);
}

public void updateNodeProximity(String npsClassName, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ClassNotFoundException
{
Supplier<NodeProximity> factory = () -> DatabaseDescriptor.createProximityImpl(npsClassName);
updateProximityInternal(factory, dynamic, dynamicUpdateInterval, dynamicResetInterval, dynamicBadnessThreshold);
DatabaseDescriptor.setNodeProximityClassName(npsClassName);
}

private void updateProximityInternal(Supplier<NodeProximity> implSupplier, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ClassNotFoundException
Expand Down Expand Up @@ -4423,6 +4425,9 @@ private void updateProximityInternal(Supplier<NodeProximity> implSupplier, Boole

// point reference to the new instance
DatabaseDescriptor.setNodeProximity(newProximity);

if (dynamic != null)
DatabaseDescriptor.setDynamicSnitch(dynamic);
}
else
{
Expand Down Expand Up @@ -5023,6 +5028,10 @@ public void disconnectInvalidRoles()
public void disableAuditLog()
{
AuditLogManager.instance.disableAuditLog();
AuditLogOptions disabledOptions = new AuditLogOptions.Builder(DatabaseDescriptor.getAuditLoggingOptions())
.withEnabled(false)
.build();
DatabaseDescriptor.setAuditLoggingOptions(disabledOptions);
logger.info("Auditlog is disabled");
}

Expand Down Expand Up @@ -5078,6 +5087,7 @@ public void enableAuditLog(String loggerName, Map<String, String> parameters, St
.build();

AuditLogManager.instance.enable(options);
DatabaseDescriptor.setAuditLoggingOptions(options);
logger.info("AuditLog is enabled with configuration: {}", options);
}

Expand Down Expand Up @@ -5170,6 +5180,17 @@ public void enableFullQueryLogger(String path, String rollCycle, Boolean blockin

checkNotNull(path, "cassandra.yaml did not set log_dir and not set as parameter");
FullQueryLogger.instance.enableWithoutClean(File.getPath(path), rollCycle, blocking, maxQueueWeight, maxLogSize, archiveCommand, maxArchiveRetries);

FullQueryLoggerOptions updatedOptions = new FullQueryLoggerOptions();
updatedOptions.log_dir = path;
updatedOptions.roll_cycle = rollCycle;
updatedOptions.block = blocking;
updatedOptions.max_queue_weight = maxQueueWeight;
updatedOptions.max_log_size = maxLogSize;
updatedOptions.archive_command = archiveCommand;
updatedOptions.max_archive_retries = maxArchiveRetries;
updatedOptions.allow_nodetool_archive_command = fqlOptions.allow_nodetool_archive_command;
DatabaseDescriptor.setFullQueryLogOptions(updatedOptions);
}

@Override
Expand Down
18 changes: 18 additions & 0 deletions test/unit/org/apache/cassandra/fql/FullQueryLoggerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,24 @@ public void testLogQueryNegativeTime() throws Exception
logQuery("", QueryOptions.DEFAULT, queryState(), -1);
}

@Test
public void testEnableFullQueryLoggerUpdatesConfig() throws IOException
{
FullQueryLoggerOptions options = new FullQueryLoggerOptions();
Path tmpDir = Files.createTempDirectory("FullQueryLoggerTest");
options.log_dir = tmpDir.toString();
DatabaseDescriptor.setFullQueryLogOptions(options);

StorageService.instance.enableFullQueryLogger(options.log_dir, "TEST_SECONDLY", true, 5000, 50000, null, 0);

FullQueryLoggerOptions updated = DatabaseDescriptor.getFullQueryLogOptions();
assertEquals("TEST_SECONDLY", updated.roll_cycle);
assertTrue(updated.block);
assertEquals(5000, updated.max_queue_weight);

FullQueryLogger.instance.stop();
}

@Test
public void testJMXArchiveCommand() throws IOException
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -605,6 +605,31 @@ public void testAuditLogEnableLoggerTransitions() throws Exception
StorageService.instance.disableAuditLog();
}

@Test
public void testAuditLogJmxUpdatesConfig() throws Exception
{
DatabaseDescriptor.setAuditLoggingOptions(getBaseAuditLogOptions());

StorageService.instance.enableAuditLog(null, null, null, null, null, null, null, null);
assertTrue(DatabaseDescriptor.getAuditLoggingOptions().enabled);

StorageService.instance.disableAuditLog();
Assert.assertFalse(DatabaseDescriptor.getAuditLoggingOptions().enabled);
}

@Test
public void testSnitchSettersUpdateConfig()
{
DatabaseDescriptor.setDynamicSnitch(false);
Assert.assertFalse(DatabaseDescriptor.isDynamicSnitch());
DatabaseDescriptor.setDynamicSnitch(true);
assertTrue(DatabaseDescriptor.isDynamicSnitch());

DatabaseDescriptor.setEndpointSnitch("org.apache.cassandra.locator.SimpleSnitch");
Assert.assertEquals("org.apache.cassandra.locator.SimpleSnitch",
DatabaseDescriptor.getRawConfig().endpoint_snitch);
}

/**
Create a new AuditLogOptions instance with the log dir set appropriately to a temp dir for unit testing.
*/
Expand Down