Skip to content

Commit df26a61

Browse files
committed
Merge remote-tracking branch 'upstream/main' into 09162025/ReshardSplitRequestOnSourceTwoPass
Refresh
2 parents c2c5490 + 7613137 commit df26a61

File tree

201 files changed

+4049
-1079
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

201 files changed

+4049
-1079
lines changed

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/ResolveTransportVersionConflictFuncTest.groovy

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,13 @@ class ResolveTransportVersionConflictFuncTest extends AbstractTransportVersionFu
8787
assertUpperBound("9.1", "new_tv,8012002")
8888
assertUpperBound("8.19", "new_tv,7123002")
8989
}
90+
91+
def "no new transport version is idempotent"() {
92+
when:
93+
def result = runResolveAndValidateTask().build()
94+
95+
then:
96+
assertResolveAndValidateSuccess(result)
97+
assertUpperBound("9.2", "existing_92,8123000")
98+
}
9099
}

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionGenerationFuncTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
428428

429429
def "upper bounds files must exist for backport branches"() {
430430
when:
431-
def result = runGenerateTask("--backport-branches=9.1,8.13,7.17,6.0").buildAndFail()
431+
def result = runGenerateTask("--name", "new_tv", "--backport-branches=9.1,8.13,7.17,6.0").buildAndFail()
432432

433433
then:
434434
assertGenerateFailure(result, "Missing upper bounds files for branches [6.0, 7.17, 8.13], known branches are [8.19, 9.0, 9.1, 9.2]")

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,21 @@ class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTes
294294
then:
295295
result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS
296296
}
297+
298+
def "only current upper bound validated on release branch"() {
299+
given:
300+
file("myserver/build.gradle") << """
301+
tasks.named('validateTransportVersionResources') {
302+
currentUpperBoundName = '9.0'
303+
}
304+
"""
305+
referableAndReferencedTransportVersion("some_tv", "8124000,8012004")
306+
transportVersionUpperBound("9.1", "some_tv", "8012004")
307+
308+
when:
309+
def result = gradleRunner("validateTransportVersionResources").build()
310+
311+
then:
312+
result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS
313+
}
297314
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionDefinitionTask.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,14 @@ public void run() throws IOException {
9898
List<String> changedDefinitionNames = resources.getChangedReferableDefinitionNames();
9999
String targetDefinitionName = getTargetDefinitionName(resources, referencedNames, changedDefinitionNames);
100100

101-
List<TransportVersionUpperBound> upstreamUpperBounds = resources.getUpperBoundsFromUpstream();
102-
Set<String> targetUpperBoundNames = getTargetUpperBoundNames(resources, upstreamUpperBounds, targetDefinitionName);
103-
104101
getLogger().lifecycle("Generating transport version name: " + targetDefinitionName);
105102
if (targetDefinitionName.isEmpty()) {
106103
// TODO: resetting upper bounds needs to be done locally, otherwise it pulls in some (incomplete) changes from upstream main
107104
// resetAllUpperBounds(resources);
108105
} else {
106+
List<TransportVersionUpperBound> upstreamUpperBounds = resources.getUpperBoundsFromUpstream();
107+
Set<String> targetUpperBoundNames = getTargetUpperBoundNames(resources, upstreamUpperBounds, targetDefinitionName);
108+
109109
List<TransportVersionId> ids = updateUpperBounds(resources, upstreamUpperBounds, targetUpperBoundNames, targetDefinitionName);
110110
// (Re)write the definition file.
111111
resources.writeDefinition(new TransportVersionDefinition(targetDefinitionName, ids, true));

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public void validateTransportVersions() throws IOException {
8383
Map<String, TransportVersionDefinition> allDefinitions = collectAllDefinitions(referableDefinitions, unreferableDefinitions);
8484
Map<Integer, List<IdAndDefinition>> idsByBase = collectIdsByBase(allDefinitions.values());
8585
Map<String, TransportVersionUpperBound> upperBounds = resources.getUpperBounds();
86+
TransportVersionUpperBound currentUpperBound = upperBounds.get(getCurrentUpperBoundName().get());
8687
boolean onReleaseBranch = checkIfDefinitelyOnReleaseBranch(upperBounds);
8788

8889
for (var definition : referableDefinitions.values()) {
@@ -94,14 +95,21 @@ public void validateTransportVersions() throws IOException {
9495
}
9596

9697
for (var entry : idsByBase.entrySet()) {
97-
validateBase(entry.getKey(), entry.getValue());
98+
int baseId = entry.getKey();
99+
// on main we validate all bases, but on release branches we only validate up to the current upper bound
100+
if (onReleaseBranch == false || baseId <= currentUpperBound.definitionId().base()) {
101+
validateBase(baseId, entry.getValue());
102+
}
98103
}
99104

100-
for (var upperBound : upperBounds.values()) {
101-
validateUpperBound(upperBound, allDefinitions, idsByBase);
102-
}
105+
if (onReleaseBranch) {
106+
// on release branches we only check the current upper bound, others may be inaccurate
107+
validateUpperBound(currentUpperBound, allDefinitions, idsByBase);
108+
} else {
109+
for (var upperBound : upperBounds.values()) {
110+
validateUpperBound(upperBound, allDefinitions, idsByBase);
111+
}
103112

104-
if (onReleaseBranch == false) {
105113
validatePrimaryIds(resources, upperBounds, allDefinitions);
106114
}
107115
}

docs/changelog/134585.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 134585
2+
summary: Add classes to represent raw docs sampling configs
3+
area: Ingest Node
4+
type: feature
5+
issues: []

docs/changelog/135309.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 135309
2+
summary: Enable semantic search CCS when ccs_minimize_roundtrips=true
3+
area: Vector Search
4+
type: enhancement
5+
issues: []

docs/changelog/135479.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 135479
2+
summary: Correctly apply field path to JSON processor when adding contents to document
3+
root
4+
area: Ingest Node
5+
type: bug
6+
issues: []

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/JsonProcessor.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ public static void apply(
149149
boolean strictJsonParsing
150150
) {
151151
Object value = apply(ctx.get(fieldName), allowDuplicateKeys, strictJsonParsing);
152+
mergeParsedJson(ctx, value, conflictStrategy);
153+
}
154+
155+
private static void mergeParsedJson(Map<String, Object> ctx, Object value, ConflictStrategy conflictStrategy) {
152156
if (value instanceof Map) {
153157
@SuppressWarnings("unchecked")
154158
Map<String, Object> map = (Map<String, Object>) value;
@@ -184,10 +188,11 @@ public static void recursiveMerge(Map<String, Object> target, Map<String, Object
184188

185189
@Override
186190
public IngestDocument execute(IngestDocument document) throws Exception {
191+
Object value = apply(document.getFieldValue(field, Object.class), allowDuplicateKeys, strictJsonParsing);
187192
if (addToRoot) {
188-
apply(document.getSourceAndMetadata(), field, allowDuplicateKeys, addToRootConflictStrategy, strictJsonParsing);
193+
mergeParsedJson(document.getSourceAndMetadata(), value, addToRootConflictStrategy);
189194
} else {
190-
document.setFieldValue(targetField, apply(document.getFieldValue(field, Object.class), allowDuplicateKeys, strictJsonParsing));
195+
document.setFieldValue(targetField, value);
191196
}
192197
return document;
193198
}

modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/JsonProcessorTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.elasticsearch.common.bytes.BytesReference;
1313
import org.elasticsearch.common.xcontent.XContentHelper;
1414
import org.elasticsearch.ingest.IngestDocument;
15+
import org.elasticsearch.ingest.IngestPipelineTestUtils;
1516
import org.elasticsearch.ingest.RandomDocumentPicks;
1617
import org.elasticsearch.test.ESTestCase;
1718
import org.elasticsearch.xcontent.XContentBuilder;
@@ -166,6 +167,28 @@ public void testAddToRoot() throws Exception {
166167
assertEquals("see", sourceAndMetadata.get("c"));
167168
}
168169

170+
public void testAddToRootNestedField() throws Exception {
171+
String processorTag = randomAlphaOfLength(3);
172+
String randomTargetField = randomAlphaOfLength(2);
173+
JsonProcessor jsonProcessor = new JsonProcessor(processorTag, null, "a.b", randomTargetField, true, REPLACE, false);
174+
175+
String json = "{\"a\": 1, \"b\": 2}";
176+
Map<String, Object> subfield = new HashMap<>();
177+
subfield.put("b", json);
178+
179+
Map<String, Object> document = new HashMap<>();
180+
document.put("a", subfield);
181+
document.put("c", "see");
182+
183+
IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random(), document);
184+
ingestDocument = IngestPipelineTestUtils.runWithRandomAccessPattern(ingestDocument, jsonProcessor);
185+
186+
Map<String, Object> sourceAndMetadata = ingestDocument.getSourceAndMetadata();
187+
assertEquals(1, sourceAndMetadata.get("a"));
188+
assertEquals(2, sourceAndMetadata.get("b"));
189+
assertEquals("see", sourceAndMetadata.get("c"));
190+
}
191+
169192
public void testDuplicateKeys() throws Exception {
170193
String processorTag = randomAlphaOfLength(3);
171194
JsonProcessor lenientJsonProcessor = new JsonProcessor(processorTag, null, "a", null, true, REPLACE, true);

0 commit comments

Comments
 (0)