From 4ad4b0c279f7c24408e873380cdc1895178f1e4d Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Tue, 12 Dec 2023 13:01:17 -0500 Subject: [PATCH 1/9] Add additional handling in SearchTemplateRequest when simulate is set to true Signed-off-by: Craig Perkins --- .../script/mustache/SearchTemplateRequest.java | 9 +++++++++ .../script/mustache/SearchTemplateRequestTests.java | 13 +++++++++++++ 2 files changed, 22 insertions(+) diff --git a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java index 1aabea30fc651..667560101b92f 100644 --- a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java +++ b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java @@ -259,16 +259,25 @@ public void writeTo(StreamOutput out) throws IOException { @Override public String[] indices() { + if (simulate) { + return new String[0]; + } return request.indices(); } @Override public IndicesOptions indicesOptions() { + if (simulate) { + return SearchRequest.DEFAULT_INDICES_OPTIONS; + } return request.indicesOptions(); } @Override public IndicesRequest indices(String... indices) { + if (simulate) { + return request; + } return request.indices(indices); } } diff --git a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java index 72443d1323b44..b514fbb61c67d 100644 --- a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java +++ b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java @@ -32,11 +32,13 @@ package org.opensearch.script.mustache; +import org.opensearch.action.search.SearchRequest; import org.opensearch.core.common.io.stream.Writeable; import org.opensearch.script.ScriptType; import org.opensearch.search.RandomSearchRequestGenerator; import org.opensearch.search.builder.SearchSourceBuilder; import org.opensearch.test.AbstractWireSerializingTestCase; +import org.junit.Test; import java.io.IOException; import java.util.ArrayList; @@ -110,4 +112,15 @@ public static SearchTemplateRequest createRandomRequest() { request.setRequest(RandomSearchRequestGenerator.randomSearchRequest(SearchSourceBuilder::searchSource)); return request; } + + @Test + public void testSimulatedSearchTemplateRequest() { + SearchTemplateRequest request = createRandomRequest(); + request.setRequest(null); + request.setSimulate(true); + + assertEquals(0, request.indices().length); + assertEquals(SearchRequest.DEFAULT_INDICES_OPTIONS, request.indicesOptions()); + assertNull(request.indices("index1", "index2")); + } } From abd488584ddd5b5b0687c51965ff9558cecb7953 Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Tue, 12 Dec 2023 13:07:23 -0500 Subject: [PATCH 2/9] Add to CHANGELOG Signed-off-by: Craig Perkins --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5ea3f83bffc7..99f119010e367 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -121,6 +121,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Adding slf4j license header to LoggerMessageFormat.java ([#11069](https://github.com/opensearch-project/OpenSearch/pull/11069)) - [BWC and API enforcement] Introduce checks for enforcing the API restrictions ([#11175](https://github.com/opensearch-project/OpenSearch/pull/11175)) - Create separate transport action for render search template action ([#11170](https://github.com/opensearch-project/OpenSearch/pull/11170)) +- Add additional handling in SearchTemplateRequest when simulate is set to to true ([#11591](https://github.com/opensearch-project/OpenSearch/pull/11591)) ### Dependencies - Bump Lucene from 9.7.0 to 9.8.0 ([10276](https://github.com/opensearch-project/OpenSearch/pull/10276)) From 48e61d5c8f9d633779da5971ec7ed82d40cd558d Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Tue, 12 Dec 2023 13:21:16 -0500 Subject: [PATCH 3/9] Remove test annotation Signed-off-by: Craig Perkins --- .../opensearch/script/mustache/SearchTemplateRequestTests.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java index b514fbb61c67d..ae686aad1aaa2 100644 --- a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java +++ b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java @@ -38,7 +38,6 @@ import org.opensearch.search.RandomSearchRequestGenerator; import org.opensearch.search.builder.SearchSourceBuilder; import org.opensearch.test.AbstractWireSerializingTestCase; -import org.junit.Test; import java.io.IOException; import java.util.ArrayList; @@ -113,7 +112,6 @@ public static SearchTemplateRequest createRandomRequest() { return request; } - @Test public void testSimulatedSearchTemplateRequest() { SearchTemplateRequest request = createRandomRequest(); request.setRequest(null); From 10f411a9023698d07c377c1cde703b8d6ddc327d Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Fri, 15 Dec 2023 12:32:52 -0500 Subject: [PATCH 4/9] Add SIMULATED_REQUEST Signed-off-by: Craig Perkins --- .../script/mustache/SearchTemplateRequest.java | 13 ++++--------- .../script/mustache/SearchTemplateRequestTests.java | 3 +-- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java index 667560101b92f..0b708d70af1a3 100644 --- a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java +++ b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java @@ -60,6 +60,7 @@ */ public class SearchTemplateRequest extends ActionRequest implements IndicesRequest.Replaceable, CompositeIndicesRequest, ToXContentObject { + private static SearchRequest SIMULATED_REQUEST = new SearchRequest(new String[0]); private SearchRequest request; private boolean simulate = false; private boolean explain = false; @@ -119,6 +120,9 @@ public boolean isSimulate() { } public void setSimulate(boolean simulate) { + if (simulate) { + this.request = SIMULATED_REQUEST; + } this.simulate = simulate; } @@ -259,25 +263,16 @@ public void writeTo(StreamOutput out) throws IOException { @Override public String[] indices() { - if (simulate) { - return new String[0]; - } return request.indices(); } @Override public IndicesOptions indicesOptions() { - if (simulate) { - return SearchRequest.DEFAULT_INDICES_OPTIONS; - } return request.indicesOptions(); } @Override public IndicesRequest indices(String... indices) { - if (simulate) { - return request; - } return request.indices(indices); } } diff --git a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java index ae686aad1aaa2..e632b5a86e780 100644 --- a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java +++ b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java @@ -114,11 +114,10 @@ public static SearchTemplateRequest createRandomRequest() { public void testSimulatedSearchTemplateRequest() { SearchTemplateRequest request = createRandomRequest(); - request.setRequest(null); request.setSimulate(true); assertEquals(0, request.indices().length); assertEquals(SearchRequest.DEFAULT_INDICES_OPTIONS, request.indicesOptions()); - assertNull(request.indices("index1", "index2")); + assertEquals(2, request.indices("index1", "index2").indices().length); } } From d1e25f35f94ff3d43c42224f3be9d9199d7cf172 Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Fri, 15 Dec 2023 12:39:44 -0500 Subject: [PATCH 5/9] Only set request to default if null Signed-off-by: Craig Perkins --- .../opensearch/script/mustache/SearchTemplateRequest.java | 2 +- .../script/mustache/SearchTemplateRequestTests.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java index 0b708d70af1a3..ac8d42b21e3d5 100644 --- a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java +++ b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java @@ -120,7 +120,7 @@ public boolean isSimulate() { } public void setSimulate(boolean simulate) { - if (simulate) { + if (simulate && request == null) { this.request = SIMULATED_REQUEST; } this.simulate = simulate; diff --git a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java index e632b5a86e780..1b20b742f822d 100644 --- a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java +++ b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java @@ -114,10 +114,17 @@ public static SearchTemplateRequest createRandomRequest() { public void testSimulatedSearchTemplateRequest() { SearchTemplateRequest request = createRandomRequest(); + request.setRequest(null); request.setSimulate(true); assertEquals(0, request.indices().length); assertEquals(SearchRequest.DEFAULT_INDICES_OPTIONS, request.indicesOptions()); assertEquals(2, request.indices("index1", "index2").indices().length); + + SearchTemplateRequest randomRequest = createRandomRequest(); + int expectedIndicesLength = randomRequest.indices().length; + request.setSimulate(true); + + assertEquals(expectedIndicesLength, randomRequest.indices().length); } } From bb8e602cb3699272bc7f9c8d90dd53b7daf070c8 Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Fri, 15 Dec 2023 12:40:46 -0500 Subject: [PATCH 6/9] Add final Signed-off-by: Craig Perkins --- .../org/opensearch/script/mustache/SearchTemplateRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java index ac8d42b21e3d5..3e4c51e96d1a3 100644 --- a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java +++ b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java @@ -60,7 +60,7 @@ */ public class SearchTemplateRequest extends ActionRequest implements IndicesRequest.Replaceable, CompositeIndicesRequest, ToXContentObject { - private static SearchRequest SIMULATED_REQUEST = new SearchRequest(new String[0]); + private static final SearchRequest SIMULATED_REQUEST = new SearchRequest(new String[0]); private SearchRequest request; private boolean simulate = false; private boolean explain = false; From 51facc58589e916aff7fc6dd2527d55b5af214ea Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Fri, 15 Dec 2023 13:04:41 -0500 Subject: [PATCH 7/9] Ensure setRequest cannot be passed null Signed-off-by: Craig Perkins --- .../script/mustache/SearchTemplateRequest.java | 1 + .../script/mustache/SearchTemplateRequestTests.java | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java index 3e4c51e96d1a3..087b3d5a446d8 100644 --- a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java +++ b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java @@ -89,6 +89,7 @@ public SearchTemplateRequest(SearchRequest searchRequest) { } public void setRequest(SearchRequest request) { + Objects.requireNonNull(request); this.request = request; } diff --git a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java index 1b20b742f822d..dbb3056770b4c 100644 --- a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java +++ b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java @@ -38,6 +38,7 @@ import org.opensearch.search.RandomSearchRequestGenerator; import org.opensearch.search.builder.SearchSourceBuilder; import org.opensearch.test.AbstractWireSerializingTestCase; +import org.junit.Assert; import java.io.IOException; import java.util.ArrayList; @@ -113,8 +114,7 @@ public static SearchTemplateRequest createRandomRequest() { } public void testSimulatedSearchTemplateRequest() { - SearchTemplateRequest request = createRandomRequest(); - request.setRequest(null); + SearchTemplateRequest request = new SearchTemplateRequest(); request.setSimulate(true); assertEquals(0, request.indices().length); @@ -127,4 +127,9 @@ public void testSimulatedSearchTemplateRequest() { assertEquals(expectedIndicesLength, randomRequest.indices().length); } + + public void testSearchTemplateRequestSetRequestCannotBeNull() { + SearchTemplateRequest request = new SearchTemplateRequest(); + Assert.assertThrows(NullPointerException.class, () -> request.setRequest(null)); + } } From 73420f178bd166fc23e148b694d16a630e1690fe Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Mon, 18 Dec 2023 16:59:12 -0500 Subject: [PATCH 8/9] Add handling in when request is null Signed-off-by: Craig Perkins --- .../script/mustache/SearchTemplateRequest.java | 14 +++++++++----- .../mustache/SearchTemplateRequestTests.java | 6 ------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java index 087b3d5a446d8..d02c5f1efa591 100644 --- a/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java +++ b/modules/lang-mustache/src/main/java/org/opensearch/script/mustache/SearchTemplateRequest.java @@ -60,7 +60,6 @@ */ public class SearchTemplateRequest extends ActionRequest implements IndicesRequest.Replaceable, CompositeIndicesRequest, ToXContentObject { - private static final SearchRequest SIMULATED_REQUEST = new SearchRequest(new String[0]); private SearchRequest request; private boolean simulate = false; private boolean explain = false; @@ -89,7 +88,6 @@ public SearchTemplateRequest(SearchRequest searchRequest) { } public void setRequest(SearchRequest request) { - Objects.requireNonNull(request); this.request = request; } @@ -121,9 +119,6 @@ public boolean isSimulate() { } public void setSimulate(boolean simulate) { - if (simulate && request == null) { - this.request = SIMULATED_REQUEST; - } this.simulate = simulate; } @@ -264,16 +259,25 @@ public void writeTo(StreamOutput out) throws IOException { @Override public String[] indices() { + if (request == null) { + return new String[0]; + } return request.indices(); } @Override public IndicesOptions indicesOptions() { + if (request == null) { + return SearchRequest.DEFAULT_INDICES_OPTIONS; + } return request.indicesOptions(); } @Override public IndicesRequest indices(String... indices) { + if (request == null) { + return new SearchRequest(new String[0]).indices(indices); + } return request.indices(indices); } } diff --git a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java index dbb3056770b4c..71ce616fd5d94 100644 --- a/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java +++ b/modules/lang-mustache/src/test/java/org/opensearch/script/mustache/SearchTemplateRequestTests.java @@ -38,7 +38,6 @@ import org.opensearch.search.RandomSearchRequestGenerator; import org.opensearch.search.builder.SearchSourceBuilder; import org.opensearch.test.AbstractWireSerializingTestCase; -import org.junit.Assert; import java.io.IOException; import java.util.ArrayList; @@ -127,9 +126,4 @@ public void testSimulatedSearchTemplateRequest() { assertEquals(expectedIndicesLength, randomRequest.indices().length); } - - public void testSearchTemplateRequestSetRequestCannotBeNull() { - SearchTemplateRequest request = new SearchTemplateRequest(); - Assert.assertThrows(NullPointerException.class, () -> request.setRequest(null)); - } } From 02f010b7310273e7b3aaf30de2d8df3ab5fe0cfd Mon Sep 17 00:00:00 2001 From: Craig Perkins Date: Mon, 18 Dec 2023 16:59:36 -0500 Subject: [PATCH 9/9] Update CHANGELOG Signed-off-by: Craig Perkins --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99f119010e367..65bd3740e6f28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -121,7 +121,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Adding slf4j license header to LoggerMessageFormat.java ([#11069](https://github.com/opensearch-project/OpenSearch/pull/11069)) - [BWC and API enforcement] Introduce checks for enforcing the API restrictions ([#11175](https://github.com/opensearch-project/OpenSearch/pull/11175)) - Create separate transport action for render search template action ([#11170](https://github.com/opensearch-project/OpenSearch/pull/11170)) -- Add additional handling in SearchTemplateRequest when simulate is set to to true ([#11591](https://github.com/opensearch-project/OpenSearch/pull/11591)) +- Add additional handling in SearchTemplateRequest when simulate is set to true ([#11591](https://github.com/opensearch-project/OpenSearch/pull/11591)) ### Dependencies - Bump Lucene from 9.7.0 to 9.8.0 ([10276](https://github.com/opensearch-project/OpenSearch/pull/10276))