@@ -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