jcshepherd commented on code in PR #4427:
URL: https://github.com/apache/cassandra/pull/4427#discussion_r2984829684
##########
src/java/org/apache/cassandra/auth/CassandraRoleManager.java:
##########
@@ -171,17 +173,16 @@ public CassandraRoleManager()
public CassandraRoleManager(Map<String, String> parameters)
{
- Set<Option> allowedOptions = DatabaseDescriptor.getAuthenticator()
instanceof PasswordAuthenticator
- ? EnumSet.of(Option.LOGIN,
Option.SUPERUSER, Option.PASSWORD, Option.HASHED_PASSWORD,
Option.GENERATED_PASSWORD, Option.GENERATED_NAME)
- : EnumSet.of(Option.LOGIN,
Option.SUPERUSER);
+ Set<Option> allowedOptions =
Stream.concat(DEFAULT_SUPPORTED_ROLE_OPTIONS.stream(),
DatabaseDescriptor.getAuthenticator().getSupportedRoleOptions().stream())
+ .collect(Collectors.toSet());
if (Guardrails.roleNamePolicy.getGenerator() != NoOpGenerator.INSTANCE)
allowedOptions.add(Option.OPTIONS);
- supportedOptions = ImmutableSet.copyOf(allowedOptions);
- alterableOptions = DatabaseDescriptor.getAuthenticator() instanceof
PasswordAuthenticator
- ? ImmutableSet.of(Option.PASSWORD,
Option.HASHED_PASSWORD, Option.GENERATED_PASSWORD)
- : ImmutableSet.<Option>of();
+ supportedOptions = Set.copyOf(allowedOptions);
Review Comment:
It's for immutability. I can do `.collect(toUnmodifiableSet())` for
`alterableOptions`, but `supportedOptions` may or may not have an `OPTIONS`
option, depending on the configured role name policy generator. So the
`Stream.concat()` that produces the initial set of `supportedOptions` needs to
produce a mutable set in case we need to add the additional `OPTIONS` option.
The `Set.copyOf()` is likely to be very cheap (the set is small) and is only
hit once in the node lifetime during `AuthConfig.applyAuth()` so the memory and
performance impact is minimal.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]