Transfer parameters to the newly introduced configuration framework (3)

patch by Ekaterina Dimitrova; reviewed by Caleb Rackliffe, David Capwell, Michael Semb Wever and Benjamin Lerer for CASSANDRA-15234
This commit is contained in:
Ekaterina Dimitrova 2022-02-03 14:39:48 -05:00
parent d85f7f7c2d
commit 755fd9446b
13 changed files with 65 additions and 58 deletions

View File

@ -61,7 +61,7 @@ hinted_handoff_enabled: true
# this defines the maximum amount of time a dead host will have hints
# generated. After it has been dead this long, new hints for it will not be
# created until it has been seen alive and gone down again.
max_hint_window_in_ms: 10800000 # 3 hours
max_hint_window: 3h
# Maximum throttle in KBs per second, per delivery thread. This will be
# reduced proportionally to the number of nodes in the cluster. (If there
@ -101,10 +101,10 @@ auto_hints_cleanup_enabled: false
# Enable / disable persistent hint windows.
#
# If set to false, a hint will be stored only in case a respective node
# that hint is for is down less than or equal to max_hint_window_in_ms.
# that hint is for is down less than or equal to max_hint_window.
#
# If set to true, a hint will be stored in case there is not any
# hint which was stored earlier than max_hint_window_in_ms. This is for cases
# hint which was stored earlier than max_hint_window. This is for cases
# when a node keeps to restart and hints are not delivered yet, we would be saving
# hints for that node indefinitely.
#
@ -172,21 +172,21 @@ network_authorizer: AllowAllNetworkAuthorizer
# Will be disabled automatically for AllowAllAuthenticator.
# For a long-running cache using roles_cache_active_update, consider
# setting to something longer such as a daily validation: 86400000
roles_validity_in_ms: 2000
roles_validity: 2000ms
# Refresh interval for roles cache (if enabled).
# After this interval, cache entries become eligible for refresh. Upon next
# access, an async reload is scheduled and the old value returned until it
# completes. If roles_validity_in_ms is non-zero, then this must be
# completes. If roles_validity is non-zero, then this must be
# also.
# This setting is also used to inform the interval of auto-updating if
# using roles_cache_active_update.
# Defaults to the same value as roles_validity_in_ms.
# Defaults to the same value as roles_validity.
# For a long-running cache, consider setting this to 60000 (1 hour) etc.
# roles_update_interval_in_ms: 2000
# roles_update_interval: 2000ms
# If true, cache contents are actively updated by a background task at the
# interval set by roles_update_interval_in_ms. If false, cache entries
# interval set by roles_update_interval. If false, cache entries
# become eligible for refresh after their update interval. Upon next access,
# an async reload is scheduled and the old value returned until it completes.
# roles_cache_active_update: false
@ -197,21 +197,21 @@ roles_validity_in_ms: 2000
# Will be disabled automatically for AllowAllAuthorizer.
# For a long-running cache using permissions_cache_active_update, consider
# setting to something longer such as a daily validation: 86400000
permissions_validity_in_ms: 2000
permissions_validity: 2000ms
# Refresh interval for permissions cache (if enabled).
# After this interval, cache entries become eligible for refresh. Upon next
# access, an async reload is scheduled and the old value returned until it
# completes. If permissions_validity_in_ms is non-zero, then this must be
# completes. If permissions_validity is non-zero, then this must be
# also.
# This setting is also used to inform the interval of auto-updating if
# using permissions_cache_active_update.
# Defaults to the same value as permissions_validity_in_ms.
# Defaults to the same value as permissions_validity.
# For a longer-running permissions cache, consider setting to update hourly (60000)
# permissions_update_interval_in_ms: 2000
# permissions_update_interval: 2000ms
# If true, cache contents are actively updated by a background task at the
# interval set by permissions_update_interval_in_ms. If false, cache entries
# interval set by permissions_update_interval. If false, cache entries
# become eligible for refresh after their update interval. Upon next access,
# an async reload is scheduled and the old value returned until it completes.
# permissions_cache_active_update: false
@ -227,21 +227,21 @@ permissions_validity_in_ms: 2000
# Defaults to 2000, set to 0 to disable credentials caching.
# For a long-running cache using credentials_cache_active_update, consider
# setting to something longer such as a daily validation: 86400000
credentials_validity_in_ms: 2000
credentials_validity: 2000ms
# Refresh interval for credentials cache (if enabled).
# After this interval, cache entries become eligible for refresh. Upon next
# access, an async reload is scheduled and the old value returned until it
# completes. If credentials_validity_in_ms is non-zero, then this must be
# completes. If credentials_validity is non-zero, then this must be
# also.
# This setting is also used to inform the interval of auto-updating if
# using credentials_cache_active_update.
# Defaults to the same value as credentials_validity_in_ms.
# Defaults to the same value as credentials_validity.
# For a longer-running permissions cache, consider setting to update hourly (60000)
# credentials_update_interval_in_ms: 2000
# credentials_update_interval: 2000ms
# If true, cache contents are actively updated by a background task at the
# interval set by credentials_update_interval_in_ms. If false (default), cache entries
# interval set by credentials_update_interval. If false (default), cache entries
# become eligible for refresh after their update interval. Upon next access,
# an async reload is scheduled and the old value returned until it completes.
# credentials_cache_active_update: false

View File

@ -56,11 +56,11 @@ public final class AuthConfig
// work with PasswordAuthenticator, so log a message if some other authenticator
// is in use and non-default values are detected
if (!(authenticator instanceof PasswordAuthenticator)
&& (conf.credentials_update_interval_in_ms != -1
|| conf.credentials_validity_in_ms != 2000
&& (conf.credentials_update_interval.toMillisecondsAsInt() != 0
|| conf.credentials_validity.toMillisecondsAsInt() != 2000
|| conf.credentials_cache_max_entries != 1000))
{
logger.info("Configuration options credentials_update_interval_in_ms, credentials_validity_in_ms and " +
logger.info("Configuration options credentials_update_interval, credentials_validity and " +
"credentials_cache_max_entries may not be applicable for the configured authenticator ({})",
authenticator.getClass().getName());
}

View File

@ -27,7 +27,7 @@ import org.apache.cassandra.dht.Datacenters;
* Returned from IAuthenticator#authenticate(), represents an authenticated user everywhere internally.
*
* Holds the name of the user and the roles that have been granted to the user. The roles will be cached
* for roles_validity_in_ms.
* for roles_validity.
*/
public class AuthenticatedUser
{

View File

@ -61,7 +61,7 @@ public class Roles
* Get detailed info on all the roles granted to the role identified by the supplied RoleResource.
* This includes superuser status and login privileges for the primary role and all roles granted directly
* to it or inherited.
* The returnred roles may be cached if roles_validity_in_ms > 0
* The returned roles may be cached if roles_validity > 0
* This method is used where we need to know specific attributes of the collection of granted roles, i.e.
* when checking for superuser status which may be inherited from *any* granted role.
*

View File

@ -56,17 +56,23 @@ public class Config
public String authorizer;
public String role_manager;
public String network_authorizer;
public volatile int permissions_validity_in_ms = 2000;
@Replaces(oldName = "permissions_validity_in_ms", converter = Converters.MILLIS_DURATION, deprecated = true)
public volatile SmallestDurationMilliseconds permissions_validity = new SmallestDurationMilliseconds("2s");
public volatile int permissions_cache_max_entries = 1000;
public volatile int permissions_update_interval_in_ms = -1;
@Replaces(oldName = "permissions_update_interval_in_ms", converter = Converters.MILLIS_CUSTOM_DURATION, deprecated = true)
public volatile SmallestDurationMilliseconds permissions_update_interval = new SmallestDurationMilliseconds("0ms");
public volatile boolean permissions_cache_active_update = false;
public volatile int roles_validity_in_ms = 2000;
@Replaces(oldName = "roles_validity_in_ms", converter = Converters.MILLIS_DURATION, deprecated = true)
public volatile SmallestDurationMilliseconds roles_validity = new SmallestDurationMilliseconds("2s");
public volatile int roles_cache_max_entries = 1000;
public volatile int roles_update_interval_in_ms = -1;
@Replaces(oldName = "roles_update_interval_in_ms", converter = Converters.MILLIS_CUSTOM_DURATION, deprecated = true)
public volatile SmallestDurationMilliseconds roles_update_interval= new SmallestDurationMilliseconds("0ms");
public volatile boolean roles_cache_active_update = false;
public volatile int credentials_validity_in_ms = 2000;
@Replaces(oldName = "credentials_validity_in_ms", converter = Converters.MILLIS_DURATION, deprecated = true)
public volatile SmallestDurationMilliseconds credentials_validity = new SmallestDurationMilliseconds("2s");
public volatile int credentials_cache_max_entries = 1000;
public volatile int credentials_update_interval_in_ms = -1;
@Replaces(oldName = "credentials_update_interval_in_ms", converter = Converters.MILLIS_CUSTOM_DURATION, deprecated = true)
public volatile SmallestDurationMilliseconds credentials_update_interval= new SmallestDurationMilliseconds("0ms");
public volatile boolean credentials_cache_active_update = false;
/* Hashing strategy Random or OPHF */
@ -75,7 +81,8 @@ public class Config
public boolean auto_bootstrap = true;
public volatile boolean hinted_handoff_enabled = true;
public Set<String> hinted_handoff_disabled_datacenters = Sets.newConcurrentHashSet();
public volatile int max_hint_window_in_ms = 3 * 3600 * 1000; // three hours
@Replaces(oldName = "max_hint_window_in_ms", converter = Converters.MILLIS_DURATION, deprecated = true)
public volatile SmallestDurationMilliseconds max_hint_window = new SmallestDurationMilliseconds("3h");
public String hints_directory;
public boolean hint_window_persistent_enabled = true;

View File

@ -1282,24 +1282,24 @@ public class DatabaseDescriptor
public static int getPermissionsValidity()
{
return conf.permissions_validity_in_ms;
return conf.permissions_validity.toMillisecondsAsInt();
}
public static void setPermissionsValidity(int timeout)
{
conf.permissions_validity_in_ms = timeout;
conf.permissions_validity = SmallestDurationMilliseconds.inMilliseconds(timeout);
}
public static int getPermissionsUpdateInterval()
{
return conf.permissions_update_interval_in_ms == -1
? conf.permissions_validity_in_ms
: conf.permissions_update_interval_in_ms;
return conf.permissions_update_interval.toMilliseconds() == 0
? conf.permissions_validity.toMillisecondsAsInt()
: conf.permissions_update_interval.toMillisecondsAsInt();
}
public static void setPermissionsUpdateInterval(int updateInterval)
{
conf.permissions_update_interval_in_ms = updateInterval;
conf.permissions_update_interval = SmallestDurationMilliseconds.inMilliseconds(updateInterval);
}
public static int getPermissionsCacheMaxEntries()
@ -1324,19 +1324,19 @@ public class DatabaseDescriptor
public static int getRolesValidity()
{
return conf.roles_validity_in_ms;
return conf.roles_validity.toMillisecondsAsInt();
}
public static void setRolesValidity(int validity)
{
conf.roles_validity_in_ms = validity;
conf.roles_validity = SmallestDurationMilliseconds.inMilliseconds(validity);
}
public static int getRolesUpdateInterval()
{
return conf.roles_update_interval_in_ms == -1
? conf.roles_validity_in_ms
: conf.roles_update_interval_in_ms;
return conf.roles_update_interval.toMillisecondsAsInt() == 0
? conf.roles_validity.toMillisecondsAsInt()
: conf.roles_update_interval.toMillisecondsAsInt();
}
public static void setRolesCacheActiveUpdate(boolean update)
@ -1351,7 +1351,7 @@ public class DatabaseDescriptor
public static void setRolesUpdateInterval(int interval)
{
conf.roles_update_interval_in_ms = interval;
conf.roles_update_interval = SmallestDurationMilliseconds.inMilliseconds(interval);
}
public static int getRolesCacheMaxEntries()
@ -1366,24 +1366,24 @@ public class DatabaseDescriptor
public static int getCredentialsValidity()
{
return conf.credentials_validity_in_ms;
return conf.credentials_validity.toMillisecondsAsInt();
}
public static void setCredentialsValidity(int timeout)
{
conf.credentials_validity_in_ms = timeout;
conf.credentials_validity = SmallestDurationMilliseconds.inMilliseconds(timeout);
}
public static int getCredentialsUpdateInterval()
{
return conf.credentials_update_interval_in_ms == -1
? conf.credentials_validity_in_ms
: conf.credentials_update_interval_in_ms;
return conf.credentials_update_interval.toMillisecondsAsInt() == 0
? conf.credentials_validity.toMillisecondsAsInt()
: conf.credentials_update_interval.toMillisecondsAsInt();
}
public static void setCredentialsUpdateInterval(int updateInterval)
{
conf.credentials_update_interval_in_ms = updateInterval;
conf.credentials_update_interval = SmallestDurationMilliseconds.inMilliseconds(updateInterval);
}
public static int getCredentialsCacheMaxEntries()
@ -2618,12 +2618,12 @@ public class DatabaseDescriptor
public static void setMaxHintWindow(int ms)
{
conf.max_hint_window_in_ms = ms;
conf.max_hint_window = SmallestDurationMilliseconds.inMilliseconds(ms);
}
public static int getMaxHintWindow()
{
return conf.max_hint_window_in_ms;
return conf.max_hint_window.toMillisecondsAsInt();
}
public static File getHintsDirectory()

View File

@ -940,7 +940,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
{
//only go into hibernate state if replacing the same address (CASSANDRA-8523)
logger.warn("Writes will not be forwarded to this node during replacement because it has the same address as " +
"the node to be replaced ({}). If the previous node has been down for longer than max_hint_window_in_ms, " +
"the node to be replaced ({}). If the previous node has been down for longer than max_hint_window, " +
"repair must be run after the replacement process in order to make this node consistent.",
DatabaseDescriptor.getReplaceAddress());
appStates.put(ApplicationState.STATUS_WITH_PORT, valueFactory.hibernate(true));

View File

@ -50,8 +50,8 @@ public class BootstrapBinaryDisabledTest extends TestBaseImpl
config.put("authenticator", "org.apache.cassandra.auth.PasswordAuthenticator");
config.put("authorizer", "org.apache.cassandra.auth.CassandraAuthorizer");
config.put("role_manager", "org.apache.cassandra.auth.CassandraRoleManager");
config.put("permissions_validity_in_ms", 0);
config.put("roles_validity_in_ms", 0);
config.put("permissions_validity", "0ms");
config.put("roles_validity", "0ms");
int originalNodeCount = 1;
int expandedNodeCount = originalNodeCount + 2;

View File

@ -73,7 +73,7 @@ public class CredentialsCacheKeysTableTest extends CQLTester
@AfterClass
public static void tearDownClass()
{
DatabaseDescriptor.setCredentialsValidity(DatabaseDescriptor.getRawConfig().credentials_validity_in_ms);
DatabaseDescriptor.setCredentialsValidity(DatabaseDescriptor.getRawConfig().credentials_validity.toMillisecondsAsInt());
}
@Test

View File

@ -94,7 +94,7 @@ public class JmxPermissionsCacheKeysTableTest extends CQLTester
@AfterClass
public static void tearDownClass()
{
DatabaseDescriptor.setPermissionsValidity(DatabaseDescriptor.getRawConfig().permissions_validity_in_ms);
DatabaseDescriptor.setPermissionsValidity(DatabaseDescriptor.getRawConfig().permissions_validity.toMillisecondsAsInt());
}
@Test

View File

@ -74,7 +74,7 @@ public class NetworkPermissionsCacheKeysTableTest extends CQLTester
@AfterClass
public static void tearDownClass()
{
DatabaseDescriptor.setPermissionsValidity(DatabaseDescriptor.getRawConfig().permissions_validity_in_ms);
DatabaseDescriptor.setPermissionsValidity(DatabaseDescriptor.getRawConfig().permissions_validity.toMillisecondsAsInt());
}
@Test

View File

@ -89,7 +89,7 @@ public class PermissionsCacheKeysTableTest extends CQLTester
@AfterClass
public static void tearDownClass()
{
DatabaseDescriptor.setPermissionsValidity(DatabaseDescriptor.getRawConfig().permissions_validity_in_ms);
DatabaseDescriptor.setPermissionsValidity(DatabaseDescriptor.getRawConfig().permissions_validity.toMillisecondsAsInt());
}
@Test

View File

@ -74,7 +74,7 @@ public class RolesCacheKeysTableTest extends CQLTester
@AfterClass
public static void tearDownClass()
{
DatabaseDescriptor.setRolesValidity(DatabaseDescriptor.getRawConfig().roles_validity_in_ms);
DatabaseDescriptor.setRolesValidity(DatabaseDescriptor.getRawConfig().roles_validity.toMillisecondsAsInt());
}
@Test