Skip to content

Commit 7de0a2b

Browse files
committed
Pass IndexReshardingMetadata over the wire
When I introduced IndexReshardingMetadata I inadvertently only covered local serialization. It was not getting sent or received over the wire. This fixes that.
1 parent 0497e4b commit 7de0a2b

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

server/src/internalClusterTest/java/org/elasticsearch/cluster/ClusterStateDiffIT.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.elasticsearch.cluster.metadata.IndexGraveyard;
2323
import org.elasticsearch.cluster.metadata.IndexGraveyardTests;
2424
import org.elasticsearch.cluster.metadata.IndexMetadata;
25+
import org.elasticsearch.cluster.metadata.IndexReshardingMetadata;
2526
import org.elasticsearch.cluster.metadata.IndexTemplateMetadata;
2627
import org.elasticsearch.cluster.metadata.Metadata;
2728
import org.elasticsearch.cluster.metadata.NodesShutdownMetadata;
@@ -586,13 +587,18 @@ public IndexMetadata randomCreate(String name) {
586587
for (int i = 0; i < aliasCount; i++) {
587588
builder.putAlias(randomAlias());
588589
}
590+
if (randomBoolean()) {
591+
builder.reshardingMetadata(
592+
IndexReshardingMetadata.newSplitByMultiple(builder.numberOfShards(), randomIntBetween(2, 5))
593+
);
594+
}
589595
return builder.build();
590596
}
591597

592598
@Override
593599
public IndexMetadata randomChange(IndexMetadata part) {
594600
IndexMetadata.Builder builder = IndexMetadata.builder(part);
595-
switch (randomIntBetween(0, 3)) {
601+
switch (randomIntBetween(0, 4)) {
596602
case 0:
597603
builder.settings(Settings.builder().put(part.getSettings()).put(randomSettings(Settings.EMPTY)));
598604
break;
@@ -609,6 +615,15 @@ public IndexMetadata randomChange(IndexMetadata part) {
609615
case 3:
610616
builder.putInferenceFields(randomInferenceFields());
611617
break;
618+
case 4:
619+
if (randomBoolean()) {
620+
builder.reshardingMetadata(
621+
IndexReshardingMetadata.newSplitByMultiple(builder.numberOfShards(), randomIntBetween(2, 5))
622+
);
623+
} else {
624+
builder.reshardingMetadata(null);
625+
}
626+
break;
612627
default:
613628
throw new IllegalArgumentException("Shouldn't be here");
614629
}

server/src/main/java/org/elasticsearch/TransportVersions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ static TransportVersion def(int id) {
185185
public static final TransportVersion ESQL_THREAD_NAME_IN_DRIVER_PROFILE = def(9_027_0_00);
186186
public static final TransportVersion INFERENCE_CONTEXT = def(9_028_0_00);
187187
public static final TransportVersion ML_INFERENCE_DEEPSEEK = def(9_029_00_0);
188+
public static final TransportVersion INDEX_RESHARDING_METADATA = def(9_030_0_00);
188189

189190
/*
190191
* STOP! READ THIS FIRST! No, really,

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,6 +1424,11 @@ public IndexLongFieldRange getTimeSeriesTimestampRange(DateFieldMapper.DateField
14241424
}
14251425
}
14261426

1427+
@Nullable
1428+
public IndexReshardingMetadata getReshardingMetadata() {
1429+
return reshardingMetadata;
1430+
}
1431+
14271432
@Override
14281433
public boolean equals(Object o) {
14291434
if (this == o) {
@@ -1558,6 +1563,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
15581563
private final IndexMetadataStats stats;
15591564
private final Double indexWriteLoadForecast;
15601565
private final Long shardSizeInBytesForecast;
1566+
private final IndexReshardingMetadata reshardingMetadata;
15611567

15621568
IndexMetadataDiff(IndexMetadata before, IndexMetadata after) {
15631569
index = after.index.getName();
@@ -1597,6 +1603,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
15971603
stats = after.stats;
15981604
indexWriteLoadForecast = after.writeLoadForecast;
15991605
shardSizeInBytesForecast = after.shardSizeInBytesForecast;
1606+
reshardingMetadata = after.reshardingMetadata;
16001607
}
16011608

16021609
private static final DiffableUtils.DiffableValueReader<String, AliasMetadata> ALIAS_METADATA_DIFF_VALUE_READER =
@@ -1669,6 +1676,11 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
16691676
} else {
16701677
eventIngestedRange = IndexLongFieldRange.UNKNOWN;
16711678
}
1679+
if (in.getTransportVersion().onOrAfter(TransportVersions.INDEX_RESHARDING_METADATA)) {
1680+
reshardingMetadata = in.readOptionalWriteable(IndexReshardingMetadata::new);
1681+
} else {
1682+
reshardingMetadata = null;
1683+
}
16721684
}
16731685

16741686
@Override
@@ -1707,6 +1719,9 @@ public void writeTo(StreamOutput out) throws IOException {
17071719
out.writeOptionalLong(shardSizeInBytesForecast);
17081720
}
17091721
eventIngestedRange.writeTo(out);
1722+
if (out.getTransportVersion().onOrAfter(TransportVersions.INDEX_RESHARDING_METADATA)) {
1723+
out.writeOptionalWriteable(reshardingMetadata);
1724+
}
17101725
}
17111726

17121727
@Override
@@ -1739,6 +1754,7 @@ public IndexMetadata apply(IndexMetadata part) {
17391754
builder.stats(stats);
17401755
builder.indexWriteLoadForecast(indexWriteLoadForecast);
17411756
builder.shardSizeInBytesForecast(shardSizeInBytesForecast);
1757+
builder.reshardingMetadata(reshardingMetadata);
17421758
return builder.build(true);
17431759
}
17441760
}
@@ -1810,6 +1826,9 @@ public static IndexMetadata readFrom(StreamInput in, @Nullable Function<String,
18101826
builder.shardSizeInBytesForecast(in.readOptionalLong());
18111827
}
18121828
builder.eventIngestedRange(IndexLongFieldRange.readFrom(in));
1829+
if (in.getTransportVersion().onOrAfter(TransportVersions.INDEX_RESHARDING_METADATA)) {
1830+
builder.reshardingMetadata(in.readOptionalWriteable(IndexReshardingMetadata::new));
1831+
}
18131832
return builder.build(true);
18141833
}
18151834

@@ -1859,6 +1878,9 @@ public void writeTo(StreamOutput out, boolean mappingsAsHash) throws IOException
18591878
out.writeOptionalLong(shardSizeInBytesForecast);
18601879
}
18611880
eventIngestedRange.writeTo(out);
1881+
if (out.getTransportVersion().onOrAfter(TransportVersions.INDEX_RESHARDING_METADATA)) {
1882+
out.writeOptionalWriteable(reshardingMetadata);
1883+
}
18621884
}
18631885

18641886
@Override

server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ public void testIndexMetadataSerialization() throws IOException {
166166
assertEquals(metadata.getForecastedWriteLoad(), fromXContentMeta.getForecastedWriteLoad());
167167
assertEquals(metadata.getForecastedShardSizeInBytes(), fromXContentMeta.getForecastedShardSizeInBytes());
168168
assertEquals(metadata.getInferenceFields(), fromXContentMeta.getInferenceFields());
169+
assertEquals(metadata.getReshardingMetadata(), fromXContentMeta.getReshardingMetadata());
169170

170171
final BytesStreamOutput out = new BytesStreamOutput();
171172
metadata.writeTo(out);
@@ -192,6 +193,7 @@ public void testIndexMetadataSerialization() throws IOException {
192193
assertEquals(metadata.getForecastedShardSizeInBytes(), deserialized.getForecastedShardSizeInBytes());
193194
assertEquals(metadata.getInferenceFields(), deserialized.getInferenceFields());
194195
assertEquals(metadata.getEventIngestedRange(), deserialized.getEventIngestedRange());
196+
assertEquals(metadata.getReshardingMetadata(), deserialized.getReshardingMetadata());
195197
}
196198
}
197199

0 commit comments

Comments
 (0)