Skip to content

Commit 6ace852

Browse files
Resolve ImmutableOpenMap issue from core refactor (#2715)
1 parent 24e08bd commit 6ace852

File tree

6 files changed

+49
-23
lines changed

6 files changed

+49
-23
lines changed

src/integrationTest/java/org/opensearch/test/framework/matcher/AliasExistsMatcher.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,22 @@
1010
package org.opensearch.test.framework.matcher;
1111

1212
import java.util.Collection;
13+
import java.util.HashMap;
1314
import java.util.List;
15+
import java.util.Map;
1416
import java.util.Set;
1517
import java.util.concurrent.ExecutionException;
1618
import java.util.stream.Collectors;
1719
import java.util.stream.StreamSupport;
1820

21+
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
1922
import org.hamcrest.Description;
2023
import org.hamcrest.TypeSafeDiagnosingMatcher;
2124

2225
import org.opensearch.action.admin.indices.alias.get.GetAliasesRequest;
2326
import org.opensearch.action.admin.indices.alias.get.GetAliasesResponse;
2427
import org.opensearch.client.Client;
2528
import org.opensearch.cluster.metadata.AliasMetadata;
26-
import org.opensearch.common.collect.ImmutableOpenMap;
2729

2830
import static java.util.Objects.requireNonNull;
2931
import static java.util.Spliterator.IMMUTABLE;
@@ -41,8 +43,13 @@ public AliasExistsMatcher(String aliasName) {
4143
protected boolean matchesSafely(Client client, Description mismatchDescription) {
4244
try {
4345
GetAliasesResponse response = client.admin().indices().getAliases(new GetAliasesRequest(aliasName)).get();
44-
ImmutableOpenMap<String, List<AliasMetadata>> aliases = response.getAliases();
45-
Set<String> actualAliasNames = StreamSupport.stream(spliteratorUnknownSize(aliases.valuesIt(), IMMUTABLE), false)
46+
47+
final Map<String, List<AliasMetadata>> aliases = new HashMap<>();
48+
for (ObjectObjectCursor<String, List<AliasMetadata>> cursor : response.getAliases()) {
49+
aliases.put(cursor.key, cursor.value);
50+
}
51+
52+
Set<String> actualAliasNames = StreamSupport.stream(spliteratorUnknownSize(aliases.values().iterator(), IMMUTABLE), false)
4653
.flatMap(Collection::stream)
4754
.map(AliasMetadata::getAlias)
4855
.collect(Collectors.toSet());
@@ -53,7 +60,7 @@ protected boolean matchesSafely(Client client, Description mismatchDescription)
5360
}
5461
return true;
5562
} catch (InterruptedException | ExecutionException e) {
56-
mismatchDescription.appendText("Error occured during checking if cluster contains alias ")
63+
mismatchDescription.appendText("Error occurred during checking if cluster contains alias ")
5764
.appendValue(e);
5865
return false;
5966
}

src/integrationTest/java/org/opensearch/test/framework/matcher/ClusterContainTemplateWithAliasMatcher.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,21 @@
99
*/
1010
package org.opensearch.test.framework.matcher;
1111

12+
import java.util.HashMap;
13+
import java.util.Map;
1214
import java.util.Set;
1315
import java.util.stream.Collectors;
1416
import java.util.stream.Stream;
1517
import java.util.stream.StreamSupport;
1618

19+
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
1720
import org.hamcrest.Description;
1821
import org.hamcrest.TypeSafeDiagnosingMatcher;
1922

2023
import org.opensearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
2124
import org.opensearch.action.admin.indices.template.get.GetIndexTemplatesResponse;
2225
import org.opensearch.client.Client;
2326
import org.opensearch.cluster.metadata.AliasMetadata;
24-
import org.opensearch.common.collect.ImmutableOpenMap;
2527

2628
import static java.util.Objects.requireNonNull;
2729

@@ -55,15 +57,24 @@ protected boolean matchesSafely(Client client, Description mismatchDescription)
5557
private Set<String> getAliases(GetIndexTemplatesResponse response) {
5658
return response.getIndexTemplates()
5759
.stream()
58-
.map(metadata -> metadata.getAliases())
60+
.map(metadata -> {
61+
Map<String, AliasMetadata> aliases = new HashMap<>();
62+
for (ObjectObjectCursor<String, AliasMetadata> cursor : metadata.getAliases()) {
63+
aliases.put(cursor.key, cursor.value);
64+
}
65+
return aliases;
66+
})
5967
.flatMap(aliasMap -> aliasNames(aliasMap))
6068
.collect(Collectors.toSet());
6169
}
6270

63-
private Stream<String> aliasNames(ImmutableOpenMap<String, AliasMetadata> aliasMap) {
64-
return StreamSupport.stream(aliasMap.keys().spliterator(), false).map(objectCursor -> objectCursor.value);
71+
private Stream<String> aliasNames(Map<String, AliasMetadata> aliasMap) {
72+
Iterable<Map.Entry<String, AliasMetadata>> iterable = () -> aliasMap.entrySet().iterator();
73+
return StreamSupport.stream(iterable.spliterator(), false)
74+
.map(entry -> entry.getValue().getAlias());
6575
}
6676

77+
6778
@Override
6879
public void describeTo(Description description) {
6980
description.appendText("template ").appendValue(templateName).appendText(" exists and ");

src/integrationTest/java/org/opensearch/test/framework/matcher/GetSettingsResponseContainsIndicesMatcher.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,14 @@
99
*/
1010
package org.opensearch.test.framework.matcher;
1111

12+
import java.util.HashMap;
13+
import java.util.Map;
14+
15+
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
1216
import org.hamcrest.Description;
1317
import org.hamcrest.TypeSafeDiagnosingMatcher;
1418

1519
import org.opensearch.action.admin.indices.settings.get.GetSettingsResponse;
16-
import org.opensearch.common.collect.ImmutableOpenMap;
1720
import org.opensearch.common.settings.Settings;
1821

1922
import static java.util.Objects.isNull;
@@ -31,12 +34,16 @@ class GetSettingsResponseContainsIndicesMatcher extends TypeSafeDiagnosingMatche
3134

3235
@Override
3336
protected boolean matchesSafely(GetSettingsResponse response, Description mismatchDescription) {
34-
ImmutableOpenMap<String, Settings> indexToSettings = response.getIndexToSettings();
37+
38+
final Map<String, Settings> indexToSettings = new HashMap<>();
39+
for (ObjectObjectCursor<String, Settings> cursor : response.getIndexToSettings()) {
40+
indexToSettings.put(cursor.key, cursor.value);
41+
}
3542
for (String index : expectedIndices) {
3643
if (!indexToSettings.containsKey(index)) {
3744
mismatchDescription
3845
.appendText("Response contains settings of indices: ")
39-
.appendValue(indexToSettings.keys());
46+
.appendValue(indexToSettings.keySet());
4047
return false;
4148
}
4249
}

src/integrationTest/java/org/opensearch/test/framework/matcher/IndexMappingIsEqualToMatcher.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
import org.opensearch.action.admin.indices.mapping.get.GetMappingsRequest;
1818
import org.opensearch.action.admin.indices.mapping.get.GetMappingsResponse;
1919
import org.opensearch.client.Client;
20-
import org.opensearch.cluster.metadata.MappingMetadata;
21-
import org.opensearch.common.collect.ImmutableOpenMap;
2220
import org.opensearch.index.IndexNotFoundException;
2321
import org.opensearch.test.framework.cluster.LocalCluster;
2422

@@ -44,8 +42,7 @@ protected boolean matchesSafely(LocalCluster cluster, Description mismatchDescri
4442
GetMappingsResponse response = client.admin().indices()
4543
.getMappings(new GetMappingsRequest().indices(expectedIndexName)).actionGet();
4644

47-
ImmutableOpenMap<String, MappingMetadata> actualMappings = response.mappings();
48-
Map<String, Object> actualIndexMapping = actualMappings.get(expectedIndexName).getSourceAsMap();
45+
Map<String, Object> actualIndexMapping = response.getMappings().get(expectedIndexName).sourceAsMap();
4946

5047
if (!expectedMapping.equals(actualIndexMapping)) {
5148
mismatchDescription.appendText("Actual mapping ").appendValue(actualIndexMapping).appendText(" does not match expected");

src/integrationTest/java/org/opensearch/test/framework/matcher/IndexStateIsEqualToMatcher.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
*/
1010
package org.opensearch.test.framework.matcher;
1111

12+
import java.util.Map;
13+
1214
import org.hamcrest.Description;
1315
import org.hamcrest.TypeSafeDiagnosingMatcher;
1416

1517
import org.opensearch.action.admin.cluster.state.ClusterStateRequest;
1618
import org.opensearch.action.admin.cluster.state.ClusterStateResponse;
1719
import org.opensearch.client.Client;
1820
import org.opensearch.cluster.metadata.IndexMetadata;
19-
import org.opensearch.common.collect.ImmutableOpenMap;
2021
import org.opensearch.test.framework.cluster.LocalCluster;
2122

2223
import static java.util.Objects.requireNonNull;
@@ -37,7 +38,7 @@ protected boolean matchesSafely(LocalCluster cluster, Description mismatchDescri
3738
ClusterStateRequest clusterStateRequest = new ClusterStateRequest().indices(expectedIndexName);
3839
ClusterStateResponse clusterStateResponse = client.admin().cluster().state(clusterStateRequest).actionGet();
3940

40-
ImmutableOpenMap<String, IndexMetadata> indicesMetadata = clusterStateResponse.getState().getMetadata().indices();
41+
Map<String, IndexMetadata> indicesMetadata = clusterStateResponse.getState().getMetadata().indices();
4142
if (!indicesMetadata.containsKey(expectedIndexName)) {
4243
mismatchDescription.appendValue("Index does not exist");
4344
}

src/main/java/org/opensearch/security/privileges/PrivilegesEvaluator.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.ArrayList;
3030
import java.util.Arrays;
3131
import java.util.Collections;
32+
import java.util.HashMap;
3233
import java.util.HashSet;
3334
import java.util.Iterator;
3435
import java.util.List;
@@ -37,6 +38,7 @@
3738
import java.util.StringJoiner;
3839
import java.util.regex.Pattern;
3940

41+
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
4042
import com.google.common.collect.ImmutableSet;
4143
import com.google.common.collect.Sets;
4244
import org.apache.logging.log4j.LogManager;
@@ -78,7 +80,6 @@
7880
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
7981
import org.opensearch.cluster.service.ClusterService;
8082
import org.opensearch.common.Strings;
81-
import org.opensearch.common.collect.ImmutableOpenMap;
8283
import org.opensearch.common.settings.Settings;
8384
import org.opensearch.common.transport.TransportAddress;
8485
import org.opensearch.common.util.concurrent.ThreadContext;
@@ -378,8 +379,6 @@ public PrivilegesEvaluatorResponse evaluate(final User user, String action0, fin
378379
presponse.allowed = true;
379380
return presponse;
380381
}
381-
382-
383382
}
384383
}
385384

@@ -632,6 +631,7 @@ public static boolean isClusterPerm(String action0) {
632631
) ;
633632
}
634633

634+
@SuppressWarnings("unchecked")
635635
private boolean checkFilteredAliases(Resolved requestedResolved, String action, boolean isDebugEnabled) {
636636
final String faMode = dcm.getFilteredAliasMode();// getConfigSettings().dynamic.filtered_alias_mode;
637637

@@ -649,7 +649,7 @@ private boolean checkFilteredAliases(Resolved requestedResolved, String action,
649649
indexMetaDataCollection = new Iterable<IndexMetadata>() {
650650
@Override
651651
public Iterator<IndexMetadata> iterator() {
652-
return clusterService.state().getMetadata().getIndices().valuesIt();
652+
return clusterService.state().getMetadata().getIndices().values().iterator();
653653
}
654654
};
655655
} else {
@@ -674,14 +674,17 @@ public Iterator<IndexMetadata> iterator() {
674674

675675
final List<AliasMetadata> filteredAliases = new ArrayList<AliasMetadata>();
676676

677-
final ImmutableOpenMap<String, AliasMetadata> aliases = indexMetaData.getAliases();
677+
final Map<String, AliasMetadata> aliases = new HashMap<>();
678+
for (ObjectObjectCursor<String, AliasMetadata> cursor : indexMetaData.getAliases()) {
679+
aliases.put(cursor.key, cursor.value);
680+
}
678681

679682
if(aliases != null && aliases.size() > 0) {
680683
if (isDebugEnabled) {
681684
log.debug("Aliases for {}: {}", indexMetaData.getIndex().getName(), aliases);
682685
}
683686

684-
final Iterator<String> it = aliases.keysIt();
687+
final Iterator<String> it = aliases.keySet().iterator();
685688
while(it.hasNext()) {
686689
final String alias = it.next();
687690
final AliasMetadata aliasMetadata = aliases.get(alias);

0 commit comments

Comments
 (0)