Skip to content

Commit f976414

Browse files
authored
Make Metadata extend AbstractCollection (#83791)
1 parent 5b1f162 commit f976414

File tree

7 files changed

+21
-18
lines changed

7 files changed

+21
-18
lines changed

server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.elasticsearch.xcontent.XContentParser;
5555

5656
import java.io.IOException;
57+
import java.util.AbstractCollection;
5758
import java.util.ArrayList;
5859
import java.util.Arrays;
5960
import java.util.Collections;
@@ -86,7 +87,7 @@
8687
* The details of how this is persisted are covered in {@link org.elasticsearch.gateway.PersistedClusterStateService}.
8788
* </p>
8889
*/
89-
public class Metadata implements Iterable<IndexMetadata>, Diffable<Metadata>, ToXContentFragment {
90+
public class Metadata extends AbstractCollection<IndexMetadata> implements Diffable<Metadata>, ToXContentFragment {
9091

9192
private static final Logger logger = LogManager.getLogger(Metadata.class);
9293

@@ -898,6 +899,11 @@ public Iterator<IndexMetadata> iterator() {
898899
return indices.valuesIt();
899900
}
900901

902+
@Override
903+
public int size() {
904+
return indices.size();
905+
}
906+
901907
public static boolean isGlobalStateEquals(Metadata metadata1, Metadata metadata2) {
902908
if (metadata1.coordinationMetadata.equals(metadata2.coordinationMetadata) == false) {
903909
return false;

server/src/main/java/org/elasticsearch/rest/action/cat/RestIndicesAction.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import java.util.Set;
5050
import java.util.function.Function;
5151
import java.util.stream.Collectors;
52-
import java.util.stream.StreamSupport;
5352

5453
import static java.util.Arrays.asList;
5554
import static org.elasticsearch.action.support.master.MasterNodeRequest.DEFAULT_MASTER_NODE_TIMEOUT;
@@ -229,10 +228,10 @@ public void onResponse(final Collection<ActionResponse> responses) {
229228
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
230229

231230
ClusterStateResponse stateResponse = extractResponse(responses, ClusterStateResponse.class);
232-
Map<String, IndexMetadata> indicesStates = StreamSupport.stream(
233-
stateResponse.getState().getMetadata().spliterator(),
234-
false
235-
).collect(Collectors.toMap(indexMetadata -> indexMetadata.getIndex().getName(), Function.identity()));
231+
Map<String, IndexMetadata> indicesStates = stateResponse.getState()
232+
.getMetadata()
233+
.stream()
234+
.collect(Collectors.toMap(indexMetadata -> indexMetadata.getIndex().getName(), Function.identity()));
236235

237236
ClusterHealthResponse healthResponse = extractResponse(responses, ClusterHealthResponse.class);
238237
Map<String, ClusterIndexHealth> indicesHealths = healthResponse.getIndices();

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/existence/FrozenExistenceDeciderService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.util.List;
2626
import java.util.Objects;
2727
import java.util.stream.Collectors;
28-
import java.util.stream.StreamSupport;
2928

3029
/**
3130
* This decider looks at all indices and ensures a minimum capacity is available if any indices are in the frozen ILM phase, since that
@@ -45,7 +44,9 @@ public String name() {
4544

4645
@Override
4746
public AutoscalingDeciderResult scale(Settings configuration, AutoscalingDeciderContext context) {
48-
List<String> indicesNeedingFrozen = StreamSupport.stream(context.state().metadata().spliterator(), false)
47+
List<String> indicesNeedingFrozen = context.state()
48+
.metadata()
49+
.stream()
4950
.filter(this::needsTier)
5051
.map(imd -> imd.getIndex().getName())
5152
.limit(10)

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/shards/FrozenShardsDeciderService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.io.IOException;
2626
import java.util.List;
2727
import java.util.Objects;
28-
import java.util.stream.StreamSupport;
2928

3029
/**
3130
* This decider enforces that on a 64GB memory node (31GB heap) we can max have 2000 shards. We arrive at 2000 because our current limit is
@@ -58,7 +57,7 @@ public AutoscalingDeciderResult scale(Settings configuration, AutoscalingDecider
5857
}
5958

6059
static int countFrozenShards(Metadata metadata) {
61-
return StreamSupport.stream(metadata.spliterator(), false)
60+
return metadata.stream()
6261
.filter(imd -> FrozenUtils.isFrozenIndex(imd.getSettings()))
6362
.mapToInt(IndexMetadata::getTotalNumberOfShards)
6463
.sum();

x-pack/plugin/autoscaling/src/main/java/org/elasticsearch/xpack/autoscaling/storage/FrozenStorageDeciderService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.io.IOException;
2727
import java.util.List;
2828
import java.util.Objects;
29-
import java.util.stream.StreamSupport;
3029

3130
public class FrozenStorageDeciderService implements AutoscalingDeciderService {
3231
public static final String NAME = "frozen_storage";
@@ -42,7 +41,7 @@ public String name() {
4241
@Override
4342
public AutoscalingDeciderResult scale(Settings configuration, AutoscalingDeciderContext context) {
4443
Metadata metadata = context.state().metadata();
45-
long dataSetSize = StreamSupport.stream(metadata.spliterator(), false)
44+
long dataSetSize = metadata.stream()
4645
.filter(imd -> FrozenUtils.isFrozenIndex(imd.getSettings()))
4746
.mapToLong(imd -> estimateSize(imd, context.info()))
4847
.sum();

x-pack/plugin/searchable-snapshots/src/main/java/org/elasticsearch/xpack/searchablesnapshots/upgrade/SearchableSnapshotIndexMetadataUpgrader.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
import java.util.concurrent.Executor;
2626
import java.util.concurrent.atomic.AtomicBoolean;
27-
import java.util.stream.StreamSupport;
2827

2928
/**
3029
* This class upgrades frozen indices to apply the index.shard_limit.group=frozen setting after all nodes have been upgraded to 7.13+
@@ -91,7 +90,8 @@ public void onFailure(Exception e) {
9190
}
9291

9392
static boolean needsUpgrade(ClusterState state) {
94-
return StreamSupport.stream(state.metadata().spliterator(), false)
93+
return state.metadata()
94+
.stream()
9595
.filter(
9696
imd -> imd.getCompatibilityVersion().onOrAfter(Version.V_7_12_0) && imd.getCompatibilityVersion().before(Version.V_8_0_0)
9797
)
@@ -105,7 +105,8 @@ static ClusterState upgradeIndices(ClusterState currentState) {
105105
return currentState;
106106
}
107107
Metadata.Builder builder = Metadata.builder(currentState.metadata());
108-
StreamSupport.stream(currentState.metadata().spliterator(), false)
108+
currentState.metadata()
109+
.stream()
109110
.filter(
110111
imd -> imd.getCompatibilityVersion().onOrAfter(Version.V_7_12_0) && imd.getCompatibilityVersion().before(Version.V_8_0_0)
111112
)

x-pack/plugin/searchable-snapshots/src/test/java/org/elasticsearch/xpack/searchablesnapshots/upgrade/SearchableSnapshotIndexMetadataUpgraderTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import org.elasticsearch.test.ESTestCase;
2020
import org.elasticsearch.test.VersionUtils;
2121

22-
import java.util.stream.StreamSupport;
23-
2422
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.SEARCHABLE_SNAPSHOT_STORE_TYPE;
2523
import static org.hamcrest.Matchers.equalTo;
2624
import static org.hamcrest.Matchers.is;
@@ -71,7 +69,7 @@ public void testUpgradeIndices() {
7169
assertThat(upgradedState, not(sameInstance(originalState)));
7270
assertThat(upgradedState.metadata().indices().size(), equalTo(originalState.metadata().indices().size()));
7371

74-
assertTrue(StreamSupport.stream(upgradedState.metadata().spliterator(), false).anyMatch(upgraded -> {
72+
assertTrue(upgradedState.metadata().stream().anyMatch(upgraded -> {
7573
IndexMetadata original = originalState.metadata().index(upgraded.getIndex());
7674
assertThat(original, notNullValue());
7775
if (upgraded.isPartialSearchableSnapshot() == false

0 commit comments

Comments
 (0)