Skip to content

Commit ba6abf6

Browse files
Merge remote-tracking branch 'elastic/master' into eventually-consistent-mock-repo
2 parents dd0f92f + 501c2a7 commit ba6abf6

File tree

204 files changed

+3655
-1858
lines changed

Some content is hidden

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

204 files changed

+3655
-1858
lines changed

TESTING.asciidoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ password: `elastic-password`.
7171
==== Other useful arguments
7272

7373
In order to start a node with a different max heap space add: `-Dtests.heap.size=4G`
74-
In order to disable annotations add: `-Dtests.asserts=false`
74+
In order to disable assertions add: `-Dtests.asserts=false`
7575
In order to set an Elasticsearch setting, provide a setting with the following prefix: `-Dtests.es.`
7676

7777
=== Test case filtering.

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ task verifyVersions {
162162
* after the backport of the backcompat code is complete.
163163
*/
164164

165-
boolean bwc_tests_enabled = true
166-
final String bwc_tests_disabled_issue = "" /* place a PR link here when committing bwc changes */
165+
boolean bwc_tests_enabled = false
166+
final String bwc_tests_disabled_issue = "https://github.com/elastic/elasticsearch/pull/41426" /* place a PR link here when committing bwc changes */
167167
if (bwc_tests_enabled == false) {
168168
if (bwc_tests_disabled_issue.isEmpty()) {
169169
throw new GradleException("bwc_tests_disabled_issue must be set when bwc_tests_enabled == false")

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -936,8 +936,6 @@ class ClusterFormationTasks {
936936
}
937937
doLast {
938938
project.delete(node.pidFile)
939-
// Large tests can exhaust disk space, clean up on stop, but leave the data dir as some tests reuse it
940-
project.delete(project.fileTree(node.baseDir).minus(project.fileTree(node.dataDir)))
941939
}
942940
}
943941
}

buildSrc/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ httpcore = 4.4.11
3737
httpasyncclient = 4.1.4
3838
commonslogging = 1.1.3
3939
commonscodec = 1.11
40-
hamcrest = 1.3
40+
hamcrest = 2.1
4141
securemock = 1.2
4242
mocksocket = 1.2
4343

client/rest-high-level/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ dependencies {
6161
testCompile "org.elasticsearch.test:framework:${version}"
6262
testCompile "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${versions.randomizedrunner}"
6363
testCompile "junit:junit:${versions.junit}"
64-
testCompile "org.hamcrest:hamcrest-all:${versions.hamcrest}"
6564
//this is needed to make RestHighLevelClientTests#testApiNamingConventions work from IDEs
6665
testCompile "org.elasticsearch:rest-api-spec:${version}"
6766
// Needed for serialization tests:
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/*
2+
* Licensed to Elasticsearch under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.elasticsearch.client.dataframe.transforms;
21+
22+
import org.elasticsearch.common.ParseField;
23+
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
24+
import org.elasticsearch.common.xcontent.XContentParser;
25+
26+
import java.util.Objects;
27+
28+
import static org.elasticsearch.common.xcontent.ConstructingObjectParser.constructorArg;
29+
import static org.elasticsearch.common.xcontent.ConstructingObjectParser.optionalConstructorArg;
30+
31+
public class DataFrameTransformProgress {
32+
33+
public static final ParseField TOTAL_DOCS = new ParseField("total_docs");
34+
public static final ParseField DOCS_REMAINING = new ParseField("docs_remaining");
35+
public static final ParseField PERCENT_COMPLETE = new ParseField("percent_complete");
36+
37+
public static final ConstructingObjectParser<DataFrameTransformProgress, Void> PARSER = new ConstructingObjectParser<>(
38+
"data_frame_transform_progress",
39+
true,
40+
a -> new DataFrameTransformProgress((Long) a[0], (Long)a[1], (Double)a[2]));
41+
42+
static {
43+
PARSER.declareLong(constructorArg(), TOTAL_DOCS);
44+
PARSER.declareLong(optionalConstructorArg(), DOCS_REMAINING);
45+
PARSER.declareDouble(optionalConstructorArg(), PERCENT_COMPLETE);
46+
}
47+
48+
public static DataFrameTransformProgress fromXContent(XContentParser parser) {
49+
return PARSER.apply(parser, null);
50+
}
51+
52+
private final long totalDocs;
53+
private final long remainingDocs;
54+
private final double percentComplete;
55+
56+
public DataFrameTransformProgress(long totalDocs, Long remainingDocs, double percentComplete) {
57+
this.totalDocs = totalDocs;
58+
this.remainingDocs = remainingDocs == null ? totalDocs : remainingDocs;
59+
this.percentComplete = percentComplete;
60+
}
61+
62+
public double getPercentComplete() {
63+
return percentComplete;
64+
}
65+
66+
public long getTotalDocs() {
67+
return totalDocs;
68+
}
69+
70+
public long getRemainingDocs() {
71+
return remainingDocs;
72+
}
73+
74+
@Override
75+
public boolean equals(Object other) {
76+
if (other == this) {
77+
return true;
78+
}
79+
80+
if (other == null || other.getClass() != getClass()) {
81+
return false;
82+
}
83+
84+
DataFrameTransformProgress that = (DataFrameTransformProgress) other;
85+
return Objects.equals(this.remainingDocs, that.remainingDocs)
86+
&& Objects.equals(this.totalDocs, that.totalDocs)
87+
&& Objects.equals(this.percentComplete, that.percentComplete);
88+
}
89+
90+
@Override
91+
public int hashCode(){
92+
return Objects.hash(remainingDocs, totalDocs, percentComplete);
93+
}
94+
}

client/rest-high-level/src/main/java/org/elasticsearch/client/dataframe/transforms/DataFrameTransformState.java

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@
2323
import org.elasticsearch.common.Nullable;
2424
import org.elasticsearch.common.ParseField;
2525
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
26-
import org.elasticsearch.common.xcontent.ObjectParser;
26+
import org.elasticsearch.common.xcontent.ObjectParser.ValueType;
2727
import org.elasticsearch.common.xcontent.XContentParser;
2828

2929
import java.io.IOException;
3030
import java.util.Collections;
31-
import java.util.HashMap;
31+
import java.util.LinkedHashMap;
3232
import java.util.Map;
3333
import java.util.Objects;
34-
import java.util.SortedMap;
35-
import java.util.TreeMap;
3634

3735
import static org.elasticsearch.common.xcontent.ConstructingObjectParser.constructorArg;
3836
import static org.elasticsearch.common.xcontent.ConstructingObjectParser.optionalConstructorArg;
@@ -44,33 +42,25 @@ public class DataFrameTransformState {
4442
private static final ParseField CURRENT_POSITION = new ParseField("current_position");
4543
private static final ParseField CHECKPOINT = new ParseField("checkpoint");
4644
private static final ParseField REASON = new ParseField("reason");
45+
private static final ParseField PROGRESS = new ParseField("progress");
4746

4847
@SuppressWarnings("unchecked")
4948
public static final ConstructingObjectParser<DataFrameTransformState, Void> PARSER =
5049
new ConstructingObjectParser<>("data_frame_transform_state", true,
5150
args -> new DataFrameTransformState((DataFrameTransformTaskState) args[0],
5251
(IndexerState) args[1],
53-
(HashMap<String, Object>) args[2],
52+
(Map<String, Object>) args[2],
5453
(long) args[3],
55-
(String) args[4]));
54+
(String) args[4],
55+
(DataFrameTransformProgress) args[5]));
5656

5757
static {
58-
PARSER.declareField(constructorArg(),
59-
p -> DataFrameTransformTaskState.fromString(p.text()),
60-
TASK_STATE,
61-
ObjectParser.ValueType.STRING);
62-
PARSER.declareField(constructorArg(), p -> IndexerState.fromString(p.text()), INDEXER_STATE, ObjectParser.ValueType.STRING);
63-
PARSER.declareField(optionalConstructorArg(), p -> {
64-
if (p.currentToken() == XContentParser.Token.START_OBJECT) {
65-
return p.map();
66-
}
67-
if (p.currentToken() == XContentParser.Token.VALUE_NULL) {
68-
return null;
69-
}
70-
throw new IllegalArgumentException("Unsupported token [" + p.currentToken() + "]");
71-
}, CURRENT_POSITION, ObjectParser.ValueType.VALUE_OBJECT_ARRAY);
58+
PARSER.declareField(constructorArg(), p -> DataFrameTransformTaskState.fromString(p.text()), TASK_STATE, ValueType.STRING);
59+
PARSER.declareField(constructorArg(), p -> IndexerState.fromString(p.text()), INDEXER_STATE, ValueType.STRING);
60+
PARSER.declareField(optionalConstructorArg(), (p, c) -> p.mapOrdered(), CURRENT_POSITION, ValueType.OBJECT);
7261
PARSER.declareLong(ConstructingObjectParser.optionalConstructorArg(), CHECKPOINT);
7362
PARSER.declareString(ConstructingObjectParser.optionalConstructorArg(), REASON);
63+
PARSER.declareField(optionalConstructorArg(), DataFrameTransformProgress::fromXContent, PROGRESS, ValueType.OBJECT);
7464
}
7565

7666
public static DataFrameTransformState fromXContent(XContentParser parser) throws IOException {
@@ -80,19 +70,22 @@ public static DataFrameTransformState fromXContent(XContentParser parser) throws
8070
private final DataFrameTransformTaskState taskState;
8171
private final IndexerState indexerState;
8272
private final long checkpoint;
83-
private final SortedMap<String, Object> currentPosition;
73+
private final Map<String, Object> currentPosition;
8474
private final String reason;
75+
private final DataFrameTransformProgress progress;
8576

8677
public DataFrameTransformState(DataFrameTransformTaskState taskState,
8778
IndexerState indexerState,
8879
@Nullable Map<String, Object> position,
8980
long checkpoint,
90-
@Nullable String reason) {
81+
@Nullable String reason,
82+
@Nullable DataFrameTransformProgress progress) {
9183
this.taskState = taskState;
9284
this.indexerState = indexerState;
93-
this.currentPosition = position == null ? null : Collections.unmodifiableSortedMap(new TreeMap<>(position));
85+
this.currentPosition = position == null ? null : Collections.unmodifiableMap(new LinkedHashMap<>(position));
9486
this.checkpoint = checkpoint;
9587
this.reason = reason;
88+
this.progress = progress;
9689
}
9790

9891
public IndexerState getIndexerState() {
@@ -117,6 +110,11 @@ public String getReason() {
117110
return reason;
118111
}
119112

113+
@Nullable
114+
public DataFrameTransformProgress getProgress() {
115+
return progress;
116+
}
117+
120118
@Override
121119
public boolean equals(Object other) {
122120
if (this == other) {
@@ -132,13 +130,14 @@ public boolean equals(Object other) {
132130
return Objects.equals(this.taskState, that.taskState) &&
133131
Objects.equals(this.indexerState, that.indexerState) &&
134132
Objects.equals(this.currentPosition, that.currentPosition) &&
133+
Objects.equals(this.progress, that.progress) &&
135134
this.checkpoint == that.checkpoint &&
136135
Objects.equals(this.reason, that.reason);
137136
}
138137

139138
@Override
140139
public int hashCode() {
141-
return Objects.hash(taskState, indexerState, currentPosition, checkpoint, reason);
140+
return Objects.hash(taskState, indexerState, currentPosition, checkpoint, reason, progress);
142141
}
143142

144143
}

client/rest-high-level/src/main/java/org/elasticsearch/client/dataframe/transforms/DataFrameTransformStateAndStats.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public static DataFrameTransformStateAndStats fromXContent(XContentParser parser
5757
private final DataFrameTransformCheckpointingInfo checkpointingInfo;
5858

5959
public DataFrameTransformStateAndStats(String id, DataFrameTransformState state, DataFrameIndexerTransformStats stats,
60-
DataFrameTransformCheckpointingInfo checkpointingInfo) {
60+
DataFrameTransformCheckpointingInfo checkpointingInfo) {
6161
this.id = id;
6262
this.transformState = state;
6363
this.transformStats = stats;

client/rest-high-level/src/main/java/org/elasticsearch/client/ml/job/process/DataCounts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
* Job processed record counts.
3535
* <p>
3636
* The getInput... methods return the actual number of
37-
* fields/records sent the the API including invalid records.
37+
* fields/records sent the API including invalid records.
3838
* The getProcessed... methods are the number sent to the
3939
* Engine.
4040
* <p>

client/rest-high-level/src/test/java/org/elasticsearch/client/DataFrameTransformIT.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import static org.hamcrest.Matchers.containsString;
7272
import static org.hamcrest.Matchers.empty;
7373
import static org.hamcrest.Matchers.equalTo;
74+
import static org.hamcrest.Matchers.greaterThan;
7475
import static org.hamcrest.Matchers.hasSize;
7576
import static org.hamcrest.Matchers.is;
7677

@@ -360,6 +361,10 @@ public void testGetStats() throws Exception {
360361
assertEquals(DataFrameTransformTaskState.STARTED, stateAndStats.getTransformState().getTaskState());
361362
assertEquals(null, stateAndStats.getTransformState().getReason());
362363
assertNotEquals(zeroIndexerStats, stateAndStats.getTransformStats());
364+
assertNotNull(stateAndStats.getTransformState().getProgress());
365+
assertThat(stateAndStats.getTransformState().getProgress().getPercentComplete(), equalTo(100.0));
366+
assertThat(stateAndStats.getTransformState().getProgress().getTotalDocs(), greaterThan(0L));
367+
assertThat(stateAndStats.getTransformState().getProgress().getRemainingDocs(), equalTo(0L));
363368
});
364369
}
365370
}

0 commit comments

Comments
 (0)