Skip to content

Commit b7ddfac

Browse files
committed
issue-20085: remove references to cluster state from ConcreteIndices object
Signed-off-by: Gautham Hullikunte <46633282+batcity@users.noreply.github.com>
1 parent 68c2d14 commit b7ddfac

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

server/src/main/java/org/opensearch/action/bulk/TransportBulkAction.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ protected void doRun() {
596596
if (handleBlockExceptions(clusterState)) {
597597
return;
598598
}
599-
final ConcreteIndices concreteIndices = new ConcreteIndices(clusterState, indexNameExpressionResolver);
599+
final ConcreteIndices concreteIndices = new ConcreteIndices(indexNameExpressionResolver);
600600
Metadata metadata = clusterState.metadata();
601601
// go over all the requests and create a ShardId -> Operations mapping
602602
Map<ShardId, List<BulkItemRequest>> requestsByShard = new HashMap<>();
@@ -610,14 +610,14 @@ protected void doRun() {
610610
if (addFailureIfRequiresAliasAndAliasIsMissing(docWriteRequest, i, metadata)) {
611611
continue;
612612
}
613-
if (addFailureIfIndexIsUnavailable(docWriteRequest, i, concreteIndices, metadata)) {
613+
if (addFailureIfIndexIsUnavailable(clusterState, docWriteRequest, i, concreteIndices, metadata)) {
614614
continue;
615615
}
616-
if (addFailureIfAppendOnlyIndexAndOpsDeleteOrUpdate(docWriteRequest, i, concreteIndices, metadata)) {
616+
if (addFailureIfAppendOnlyIndexAndOpsDeleteOrUpdate(clusterState, docWriteRequest, i, concreteIndices, metadata)) {
617617
continue;
618618
}
619619

620-
Index concreteIndex = concreteIndices.resolveIfAbsent(docWriteRequest);
620+
Index concreteIndex = concreteIndices.resolveIfAbsent(clusterState, docWriteRequest);
621621
try {
622622
// The ConcreteIndices#resolveIfAbsent(...) method validates via IndexNameExpressionResolver whether
623623
// an operation is allowed in index into a data stream, but this isn't done when resolve call is cached, so
@@ -821,12 +821,13 @@ public void onTimeout(TimeValue timeout) {
821821
}
822822

823823
private boolean addFailureIfAppendOnlyIndexAndOpsDeleteOrUpdate(
824+
ClusterState clusterstate,
824825
DocWriteRequest<?> request,
825826
int idx,
826827
final ConcreteIndices concreteIndices,
827828
Metadata metadata
828829
) {
829-
Index concreteIndex = concreteIndices.resolveIfAbsent(request);
830+
Index concreteIndex = concreteIndices.resolveIfAbsent(clusterstate, request);
830831
final IndexMetadata indexMetadata = metadata.index(concreteIndex);
831832
if (indexMetadata.isAppendOnlyIndex()) {
832833
if ((request.opType() == DocWriteRequest.OpType.UPDATE || request.opType() == DocWriteRequest.OpType.DELETE)) {
@@ -874,6 +875,7 @@ private boolean addFailureIfRequiresAliasAndAliasIsMissing(DocWriteRequest<?> re
874875
}
875876

876877
private boolean addFailureIfIndexIsUnavailable(
878+
ClusterState clusterstate,
877879
DocWriteRequest<?> request,
878880
int idx,
879881
final ConcreteIndices concreteIndices,
@@ -887,7 +889,7 @@ private boolean addFailureIfIndexIsUnavailable(
887889
Index concreteIndex = concreteIndices.getConcreteIndex(request.index());
888890
if (concreteIndex == null) {
889891
try {
890-
concreteIndex = concreteIndices.resolveIfAbsent(request);
892+
concreteIndex = concreteIndices.resolveIfAbsent(clusterstate, request);
891893
} catch (IndexClosedException | IndexNotFoundException | IllegalArgumentException ex) {
892894
addFailure(request, idx, ex);
893895
return true;
@@ -925,26 +927,25 @@ void executeBulk(
925927
new BulkOperation(task, bulkRequest, listener, responses, startTimeNanos, indicesThatCannotBeCreated).run();
926928
}
927929

928-
/**
930+
/**
929931
* Concrete indices
930932
*
931933
* @opensearch.internal
932934
*/
933-
static class ConcreteIndices {
934-
private final ClusterState state;
935+
static final class ConcreteIndices {
936+
935937
private final IndexNameExpressionResolver indexNameExpressionResolver;
936938
private final Map<String, Index> indices = new HashMap<>();
937939

938-
ConcreteIndices(ClusterState state, IndexNameExpressionResolver indexNameExpressionResolver) {
939-
this.state = state;
940+
private ConcreteIndices(IndexNameExpressionResolver indexNameExpressionResolver) {
940941
this.indexNameExpressionResolver = indexNameExpressionResolver;
941942
}
942943

943944
Index getConcreteIndex(String indexOrAlias) {
944945
return indices.get(indexOrAlias);
945946
}
946947

947-
Index resolveIfAbsent(DocWriteRequest<?> request) {
948+
Index resolveIfAbsent(ClusterState state, DocWriteRequest<?> request) {
948949
Index concreteIndex = indices.get(request.index());
949950
if (concreteIndex == null) {
950951
boolean includeDataStreams = request.opType() == DocWriteRequest.OpType.CREATE;
@@ -957,11 +958,10 @@ Index resolveIfAbsent(DocWriteRequest<?> request) {
957958
includeDataStreams
958959
);
959960
} catch (IndexNotFoundException e) {
960-
if (includeDataStreams == false && e.getMetadataKeys().contains(EXCLUDED_DATA_STREAMS_KEY)) {
961+
if (!includeDataStreams && e.getMetadataKeys().contains(EXCLUDED_DATA_STREAMS_KEY)) {
961962
throw new IllegalArgumentException("only write ops with an op_type of create are allowed in data streams");
962-
} else {
963-
throw e;
964963
}
964+
throw e;
965965
}
966966
indices.put(request.index(), concreteIndex);
967967
}

0 commit comments

Comments
 (0)