Skip to content

Commit 67d576e

Browse files
authored
Prevent auto-sharding for data streams in LOOKUP index mode (#131429) (#132082)
* Prevent auto-sharding for data streams in LOOKUP index mode * Update docs/changelog/131429.yaml * Reduce test duplication (cherry picked from commit ea22dff) # Conflicts: # server/src/main/java/org/elasticsearch/action/datastreams/autosharding/DataStreamAutoShardingService.java # server/src/test/java/org/elasticsearch/action/datastreams/autosharding/DataStreamAutoShardingServiceTests.java
1 parent 08460f3 commit 67d576e

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

docs/changelog/131429.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 131429
2+
summary: Prevent auto-sharding for data streams in LOOKUP index mode
3+
area: Data streams
4+
type: bug
5+
issues: []

server/src/main/java/org/elasticsearch/action/datastreams/autosharding/DataStreamAutoShardingService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.elasticsearch.features.FeatureService;
2727
import org.elasticsearch.features.NodeFeature;
2828
import org.elasticsearch.index.Index;
29+
import org.elasticsearch.index.IndexMode;
2930

3031
import java.util.List;
3132
import java.util.Objects;
@@ -186,6 +187,11 @@ public AutoShardingResult calculate(ClusterState state, DataStream dataStream, @
186187
return NOT_APPLICABLE_RESULT;
187188
}
188189

190+
if (dataStream.getIndexMode() == IndexMode.LOOKUP) {
191+
logger.debug("Data stream [{}] has indexing mode LOOKUP; auto-sharding is not applicable.", dataStream.getName());
192+
return NOT_APPLICABLE_RESULT;
193+
}
194+
189195
if (writeIndexLoad == null) {
190196
logger.debug(
191197
"Data stream auto sharding service cannot compute the optimal number of shards for data stream [{}] as the write index "

server/src/test/java/org/elasticsearch/action/datastreams/autosharding/DataStreamAutoShardingServiceTests.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -819,4 +819,38 @@ private IndexWriteLoad getWriteLoad(int numberOfShards, double shardWriteLoad) {
819819
return builder.build();
820820
}
821821

822+
public void testCalculateReturnsNotApplicableForLookupIndexMode() {
823+
Metadata.Builder builder = Metadata.builder();
824+
DataStream dataStream = createLookupModeDataStream(builder);
825+
ClusterState state = createClusterStateWithDataStream(builder);
826+
827+
AutoShardingResult autoShardingResult = service.calculate(state, dataStream, 1.0);
828+
assertThat(autoShardingResult, is(NOT_APPLICABLE_RESULT));
829+
}
830+
831+
public void testCalculateReturnsNotApplicableForLookupIndexModeWithNullWriteLoad() {
832+
Metadata.Builder builder = Metadata.builder();
833+
DataStream dataStream = createLookupModeDataStream(builder);
834+
ClusterState state = createClusterStateWithDataStream(builder);
835+
836+
AutoShardingResult autoShardingResult = service.calculate(state, dataStream, null);
837+
assertThat(autoShardingResult, is(NOT_APPLICABLE_RESULT));
838+
}
839+
840+
private DataStream createLookupModeDataStream(Metadata.Builder builder) {
841+
DataStream dataStream = DataStream.builder(dataStreamName, List.of(new Index("test-index", randomUUID())))
842+
.setGeneration(1)
843+
.setIndexMode(IndexMode.LOOKUP)
844+
.build();
845+
builder.put(dataStream);
846+
return dataStream;
847+
}
848+
849+
private ClusterState createClusterStateWithDataStream(Metadata.Builder builder) {
850+
return ClusterState.builder(ClusterName.DEFAULT)
851+
.nodes(DiscoveryNodes.builder().add(DiscoveryNodeUtils.create("n1")))
852+
.metadata(builder.build())
853+
.build();
854+
}
855+
822856
}

0 commit comments

Comments
 (0)