Skip to content

Commit 9dfe9cc

Browse files
committed
Fix failing tests and update per comments
1 parent 72e9306 commit 9dfe9cc

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

modules/ingest-common/src/main/java/org/opensearch/ingest/common/HierarchicalRoutingProcessor.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@
3434
public final class HierarchicalRoutingProcessor extends AbstractProcessor {
3535

3636
public static final String TYPE = "hierarchical_routing";
37-
private static final String VERSION = "3.2.0";
3837

3938
private final String pathField;
4039
private final int anchorDepth;
4140
private final String pathSeparator;
4241
private final boolean ignoreMissing;
4342
private final boolean overrideExisting;
43+
private final java.util.regex.Pattern pathSeparatorPattern;
4444

4545
HierarchicalRoutingProcessor(
4646
String tag,
@@ -57,6 +57,7 @@ public final class HierarchicalRoutingProcessor extends AbstractProcessor {
5757
this.pathSeparator = pathSeparator;
5858
this.ignoreMissing = ignoreMissing;
5959
this.overrideExisting = overrideExisting;
60+
this.pathSeparatorPattern = java.util.regex.Pattern.compile(java.util.regex.Pattern.quote(pathSeparator));
6061
}
6162

6263
@Override
@@ -75,11 +76,8 @@ public IngestDocument execute(IngestDocument document) throws Exception {
7576

7677
Object pathValue = document.getFieldValue(pathField, Object.class, ignoreMissing);
7778

78-
if (pathValue == null) {
79-
if (ignoreMissing) {
80-
return document;
81-
}
82-
throw new IllegalArgumentException("field [" + pathField + "] doesn't exist");
79+
if (pathValue == null && ignoreMissing) {
80+
return document;
8381
}
8482

8583
String path = pathValue.toString();
@@ -102,7 +100,7 @@ public IngestDocument execute(IngestDocument document) throws Exception {
102100
*/
103101
private String computeRoutingValue(String path) {
104102
String normalizedPath = normalizePath(path);
105-
String[] segments = normalizedPath.split(java.util.regex.Pattern.quote(pathSeparator));
103+
String[] segments = pathSeparatorPattern.split(normalizedPath);
106104
String anchor = extractAnchor(segments, anchorDepth);
107105

108106
// Use MurmurHash3 for consistent, fast hashing

modules/ingest-common/src/test/java/org/opensearch/ingest/common/IngestCommonModulePluginTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ public void testAllowlistNotSpecified() throws IOException {
7373
"script",
7474
"dissect",
7575
"uppercase",
76-
"split"
76+
"split",
77+
"hierarchical_routing"
7778
);
7879
assertEquals(expected, plugin.getProcessors(createParameters(settings)).keySet());
7980
}

modules/search-pipeline-common/src/main/java/org/opensearch/search/pipeline/common/HierarchicalRoutingSearchProcessor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@
2323
import org.opensearch.search.pipeline.SearchRequestProcessor;
2424

2525
import java.nio.charset.StandardCharsets;
26-
import java.util.ArrayList;
2726
import java.util.HashSet;
28-
import java.util.List;
2927
import java.util.Map;
3028
import java.util.Set;
3129

@@ -50,6 +48,7 @@ public class HierarchicalRoutingSearchProcessor extends AbstractProcessor implem
5048
private final int anchorDepth;
5149
private final String pathSeparator;
5250
private final boolean enableAutoDetection;
51+
private final java.util.regex.Pattern pathSeparatorPattern;
5352

5453
HierarchicalRoutingSearchProcessor(
5554
String tag,
@@ -65,6 +64,7 @@ public class HierarchicalRoutingSearchProcessor extends AbstractProcessor implem
6564
this.anchorDepth = anchorDepth;
6665
this.pathSeparator = pathSeparator;
6766
this.enableAutoDetection = enableAutoDetection;
67+
this.pathSeparatorPattern = java.util.regex.Pattern.compile(java.util.regex.Pattern.quote(pathSeparator));
6868
}
6969

7070
@Override
@@ -88,7 +88,7 @@ public SearchRequest processRequest(SearchRequest request) throws Exception {
8888

8989
// If we found path information, compute routing and apply it
9090
if (!routingValues.isEmpty()) {
91-
List<String> computedRouting = new ArrayList<>();
91+
Set<String> computedRouting = new HashSet<>();
9292
for (String path : routingValues) {
9393
String routingValue = computeRoutingValue(path);
9494
if (routingValue != null) {
@@ -199,7 +199,7 @@ private String computeRoutingValue(String path) {
199199
}
200200

201201
String normalizedPath = normalizePath(path);
202-
String[] segments = normalizedPath.split(java.util.regex.Pattern.quote(pathSeparator));
202+
String[] segments = pathSeparatorPattern.split(normalizedPath);
203203
String anchor = extractAnchor(segments, anchorDepth);
204204

205205
// Use MurmurHash3 for consistent, fast hashing (same as ingest processor)

modules/search-pipeline-common/src/test/java/org/opensearch/search/pipeline/common/SearchPipelineCommonModulePluginTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,10 @@ private void runAllowlistTest(
8181
public void testAllowlistNotSpecified() throws IOException {
8282
final Settings settings = Settings.EMPTY;
8383
try (SearchPipelineCommonModulePlugin plugin = new SearchPipelineCommonModulePlugin()) {
84-
assertEquals(Set.of("oversample", "filter_query", "script"), plugin.getRequestProcessors(createParameters(settings)).keySet());
84+
assertEquals(
85+
Set.of("oversample", "filter_query", "script", "hierarchical_routing_search"),
86+
plugin.getRequestProcessors(createParameters(settings)).keySet()
87+
);
8588
assertEquals(
8689
Set.of("rename_field", "truncate_hits", "collapse", "split", "sort"),
8790
plugin.getResponseProcessors(createParameters(settings)).keySet()

0 commit comments

Comments
 (0)