From 5101c9a21849af2547e9c4ec421715ae3d7ca48c Mon Sep 17 00:00:00 2001 From: Yaliang Wu Date: Tue, 14 Jun 2022 18:28:19 +0000 Subject: [PATCH] transform role name to lower case to avoid confusion Signed-off-by: Yaliang Wu --- .../java/org/opensearch/cluster/node/DiscoveryNode.java | 9 ++++++--- .../org/opensearch/cluster/node/DiscoveryNodeRole.java | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java index 9fe96caf268a5..5e8f796300812 100644 --- a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java +++ b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java @@ -52,6 +52,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -571,10 +572,12 @@ private static Map rolesToMap(final Stream roleMap = rolesToMap(DiscoveryNodeRole.BUILT_IN_ROLES.stream()); public static DiscoveryNodeRole getRoleFromRoleName(final String roleName) { - if (roleMap.containsKey(roleName)) { - return roleMap.get(roleName); + //As we are supporting dynamic role, should make role name case-insensitive to avoid confusion of role name like "Data"/"DATA" + String lowerCasedRoleName = Objects.requireNonNull(roleName).toLowerCase(Locale.ROOT); + if (roleMap.containsKey(lowerCasedRoleName)) { + return roleMap.get(lowerCasedRoleName); } - return new DiscoveryNodeRole.DynamicRole(roleName, roleName, false); + return new DiscoveryNodeRole.DynamicRole(lowerCasedRoleName, lowerCasedRoleName, false); } public static Set getPossibleRoles() { diff --git a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodeRole.java b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodeRole.java index 03cadf20170b1..f5a9170beb4d4 100644 --- a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodeRole.java +++ b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodeRole.java @@ -128,7 +128,8 @@ private DiscoveryNodeRole( ) { this.isKnownRole = isKnownRole; this.isDynamicRole = isDynamicRole; - this.roleName = Objects.requireNonNull(roleName); + //As we are supporting dynamic role, should make role name case-insensitive to avoid confusion of role name like "Data"/"DATA" + this.roleName = Objects.requireNonNull(roleName).toLowerCase(Locale.ROOT); this.roleNameAbbreviation = Objects.requireNonNull(roleNameAbbreviation); this.canContainData = canContainData; }