Skip to content

Commit 99a2e34

Browse files
committed
Use HashMap in admin get actions
Actions for getting aliases, indices, and settings all return a Map. Yet internally these unnecessarily ImmutableOpenMap. This commit converts these actions to use HashMap. relates elastic#86239
1 parent 76cd7b6 commit 99a2e34

File tree

4 files changed

+33
-30
lines changed

4 files changed

+33
-30
lines changed

server/src/main/java/org/elasticsearch/action/admin/indices/alias/get/TransportGetAliasesAction.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ protected void masterOperation(Task task, GetAliasesRequest request, ClusterStat
9595
/**
9696
* Fills alias result with empty entries for requested indices when no specific aliases were requested.
9797
*/
98-
static ImmutableOpenMap<String, List<AliasMetadata>> postProcess(
98+
static Map<String, List<AliasMetadata>> postProcess(
9999
GetAliasesRequest request,
100100
String[] concreteIndices,
101101
Map<String, List<AliasMetadata>> aliases,
@@ -105,7 +105,7 @@ static ImmutableOpenMap<String, List<AliasMetadata>> postProcess(
105105
SystemIndices systemIndices
106106
) {
107107
boolean noAliasesSpecified = request.getOriginalAliases() == null || request.getOriginalAliases().length == 0;
108-
ImmutableOpenMap.Builder<String, List<AliasMetadata>> mapBuilder = ImmutableOpenMap.builder(aliases);
108+
Map<String, List<AliasMetadata>> mapBuilder = new HashMap<>(aliases);
109109
for (String index : concreteIndices) {
110110
IndexAbstraction ia = state.metadata().getIndicesLookup().get(index);
111111
assert ia.getType() == IndexAbstraction.Type.CONCRETE_INDEX;
@@ -121,7 +121,7 @@ static ImmutableOpenMap<String, List<AliasMetadata>> postProcess(
121121
assert previous == null;
122122
}
123123
}
124-
final ImmutableOpenMap<String, List<AliasMetadata>> finalResponse = mapBuilder.build();
124+
final Map<String, List<AliasMetadata>> finalResponse = Collections.unmodifiableMap(mapBuilder);
125125
if (systemIndexAccessLevel != SystemIndexAccessLevel.ALL) {
126126
checkSystemIndexAccess(request, systemIndices, state, finalResponse, systemIndexAccessLevel, threadContext);
127127
}
@@ -155,7 +155,7 @@ private static void checkSystemIndexAccess(
155155
GetAliasesRequest request,
156156
SystemIndices systemIndices,
157157
ClusterState state,
158-
ImmutableOpenMap<String, List<AliasMetadata>> aliasesMap,
158+
Map<String, List<AliasMetadata>> aliasesMap,
159159
SystemIndexAccessLevel systemIndexAccessLevel,
160160
ThreadContext threadContext
161161
) {

server/src/main/java/org/elasticsearch/action/admin/indices/get/TransportGetIndexAction.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.elasticsearch.threadpool.ThreadPool;
3030
import org.elasticsearch.transport.TransportService;
3131

32+
import java.util.Collections;
33+
import java.util.HashMap;
3234
import java.util.List;
3335
import java.util.Map;
3436
import java.util.stream.Collectors;
@@ -78,17 +80,14 @@ protected void doMasterOperation(
7880
) {
7981
Map<String, MappingMetadata> mappingsResult = ImmutableOpenMap.of();
8082
Map<String, List<AliasMetadata>> aliasesResult = Map.of();
81-
ImmutableOpenMap<String, Settings> settings = ImmutableOpenMap.of();
82-
ImmutableOpenMap<String, Settings> defaultSettings = ImmutableOpenMap.of();
83-
ImmutableOpenMap<String, String> dataStreams = ImmutableOpenMap.<String, String>builder()
84-
.putAllFromMap(
85-
state.metadata()
83+
Map<String, Settings> settings = Map.of();
84+
Map<String, Settings> defaultSettings = Map.of();
85+
Map<String, String> dataStreams = Map.copyOf(state.metadata()
8686
.findDataStreams(concreteIndices)
8787
.entrySet()
8888
.stream()
8989
.collect(Collectors.toMap(Map.Entry::getKey, v -> v.getValue().getName()))
90-
)
91-
.build();
90+
);
9291
Feature[] features = request.features();
9392
boolean doneAliases = false;
9493
boolean doneMappings = false;
@@ -111,8 +110,8 @@ protected void doMasterOperation(
111110
break;
112111
case SETTINGS:
113112
if (doneSettings == false) {
114-
ImmutableOpenMap.Builder<String, Settings> settingsMapBuilder = ImmutableOpenMap.builder();
115-
ImmutableOpenMap.Builder<String, Settings> defaultSettingsMapBuilder = ImmutableOpenMap.builder();
113+
Map<String, Settings> settingsMapBuilder = new HashMap<>();
114+
Map<String, Settings> defaultSettingsMapBuilder = new HashMap<>();
116115
for (String index : concreteIndices) {
117116
checkCancellation(task);
118117
Settings indexSettings = state.metadata().index(index).getSettings();
@@ -127,8 +126,8 @@ protected void doMasterOperation(
127126
defaultSettingsMapBuilder.put(index, defaultIndexSettings);
128127
}
129128
}
130-
settings = settingsMapBuilder.build();
131-
defaultSettings = defaultSettingsMapBuilder.build();
129+
settings = Collections.unmodifiableMap(settingsMapBuilder);
130+
defaultSettings = Collections.unmodifiableMap(defaultSettingsMapBuilder);
132131
doneSettings = true;
133132
}
134133
break;

server/src/main/java/org/elasticsearch/action/admin/indices/settings/get/TransportGetSettingsAction.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import org.elasticsearch.cluster.metadata.IndexMetadata;
1818
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
1919
import org.elasticsearch.cluster.service.ClusterService;
20-
import org.elasticsearch.common.collect.ImmutableOpenMap;
2120
import org.elasticsearch.common.inject.Inject;
2221
import org.elasticsearch.common.regex.Regex;
2322
import org.elasticsearch.common.settings.IndexScopedSettings;
@@ -29,6 +28,11 @@
2928
import org.elasticsearch.threadpool.ThreadPool;
3029
import org.elasticsearch.transport.TransportService;
3130

31+
import java.util.HashMap;
32+
import java.util.Map;
33+
34+
import static java.util.Collections.unmodifiableMap;
35+
3236
public class TransportGetSettingsAction extends TransportMasterNodeReadAction<GetSettingsRequest, GetSettingsResponse> {
3337

3438
private final SettingsFilter settingsFilter;
@@ -77,8 +81,8 @@ protected void masterOperation(
7781
ActionListener<GetSettingsResponse> listener
7882
) {
7983
Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request);
80-
ImmutableOpenMap.Builder<String, Settings> indexToSettingsBuilder = ImmutableOpenMap.builder();
81-
ImmutableOpenMap.Builder<String, Settings> indexToDefaultSettingsBuilder = ImmutableOpenMap.builder();
84+
Map<String, Settings> indexToSettings = new HashMap<>();
85+
Map<String, Settings> indexToDefaultSettings = new HashMap<>();
8286
for (Index concreteIndex : concreteIndices) {
8387
IndexMetadata indexMetadata = state.getMetadata().index(concreteIndex);
8488
if (indexMetadata == null) {
@@ -94,15 +98,15 @@ protected void masterOperation(
9498
indexSettings = indexSettings.filter(k -> Regex.simpleMatch(request.names(), k));
9599
}
96100

97-
indexToSettingsBuilder.put(concreteIndex.getName(), indexSettings);
101+
indexToSettings.put(concreteIndex.getName(), indexSettings);
98102
if (request.includeDefaults()) {
99103
Settings defaultSettings = settingsFilter.filter(indexScopedSettings.diff(indexSettings, Settings.EMPTY));
100104
if (isFilteredRequest(request)) {
101105
defaultSettings = defaultSettings.filter(k -> Regex.simpleMatch(request.names(), k));
102106
}
103-
indexToDefaultSettingsBuilder.put(concreteIndex.getName(), defaultSettings);
107+
indexToDefaultSettings.put(concreteIndex.getName(), defaultSettings);
104108
}
105109
}
106-
listener.onResponse(new GetSettingsResponse(indexToSettingsBuilder.build(), indexToDefaultSettingsBuilder.build()));
110+
listener.onResponse(new GetSettingsResponse(unmodifiableMap(indexToSettings), unmodifiableMap(indexToDefaultSettings)));
107111
}
108112
}

server/src/test/java/org/elasticsearch/action/admin/indices/alias/get/TransportGetAliasesActionTests.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import java.util.Collections;
3131
import java.util.List;
32+
import java.util.Map;
3233

3334
import static org.hamcrest.Matchers.contains;
3435
import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -47,7 +48,7 @@ public void testPostProcess() {
4748
ImmutableOpenMap<String, List<AliasMetadata>> aliases = ImmutableOpenMap.<String, List<AliasMetadata>>builder()
4849
.fPut("b", Collections.singletonList(new AliasMetadata.Builder("y").build()))
4950
.build();
50-
ImmutableOpenMap<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
51+
Map<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
5152
request,
5253
new String[] { "a", "b", "c" },
5354
aliases,
@@ -107,7 +108,7 @@ public void testDeprecationWarningEmittedForTotalWildcard() {
107108
.build();
108109
final String[] concreteIndices = { "a", ".b", "c" };
109110
assertEquals(state.metadata().findAliases(request.aliases(), concreteIndices), aliases);
110-
ImmutableOpenMap<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
111+
Map<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
111112
request,
112113
concreteIndices,
113114
aliases,
@@ -140,7 +141,7 @@ public void testDeprecationWarningEmittedWhenSystemIndexIsRequested() {
140141
.build();
141142
final String[] concreteIndices = { ".b" };
142143
assertEquals(state.metadata().findAliases(request.aliases(), concreteIndices), aliases);
143-
ImmutableOpenMap<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
144+
Map<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
144145
request,
145146
concreteIndices,
146147
aliases,
@@ -170,7 +171,7 @@ public void testDeprecationWarningEmittedWhenSystemIndexIsRequestedByAlias() {
170171
.build();
171172
final String[] concreteIndices = { "a", ".b", "c" };
172173
assertEquals(state.metadata().findAliases(request.aliases(), concreteIndices), aliases);
173-
ImmutableOpenMap<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
174+
Map<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
174175
request,
175176
concreteIndices,
176177
aliases,
@@ -200,7 +201,7 @@ public void testDeprecationWarningNotEmittedWhenSystemAccessAllowed() {
200201
.build();
201202
final String[] concreteIndices = { "a", ".b", "c" };
202203
assertEquals(state.metadata().findAliases(request.aliases(), concreteIndices), aliases);
203-
ImmutableOpenMap<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
204+
Map<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
204205
request,
205206
concreteIndices,
206207
aliases,
@@ -226,7 +227,7 @@ public void testDeprecationWarningNotEmittedWhenOnlyNonsystemIndexRequested() {
226227
.build();
227228
final String[] concreteIndices = { "c" };
228229
assertEquals(state.metadata().findAliases(request.aliases(), concreteIndices), aliases);
229-
ImmutableOpenMap<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
230+
Map<String, List<AliasMetadata>> result = TransportGetAliasesAction.postProcess(
230231
request,
231232
concreteIndices,
232233
aliases,
@@ -302,11 +303,10 @@ public void testNetNewSystemIndicesDontErrorWhenNotRequested() {
302303
final IndexNameExpressionResolver indexNameExpressionResolver = new IndexNameExpressionResolver(threadContext, systemIndices);
303304
concreteIndices = indexNameExpressionResolver.concreteIndexNamesWithSystemIndexAccess(clusterState, aliasesRequest);
304305

305-
ImmutableOpenMap<String, List<AliasMetadata>> initialAliases = ImmutableOpenMap.<String, List<AliasMetadata>>builder().build();
306-
ImmutableOpenMap<String, List<AliasMetadata>> finalResponse = TransportGetAliasesAction.postProcess(
306+
Map<String, List<AliasMetadata>> finalResponse = TransportGetAliasesAction.postProcess(
307307
aliasesRequest,
308308
concreteIndices,
309-
initialAliases,
309+
Map.of(),
310310
clusterState,
311311
SystemIndexAccessLevel.NONE,
312312
threadContext,

0 commit comments

Comments
 (0)