Deprecate the ability to update datafeed's job_id. (#44691) (#44742)

This commit is contained in:
Przemysław Witek 2019-07-23 14:48:56 +02:00 committed by GitHub
parent 7f6e2aae82
commit 16c8e18013
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 47 additions and 11 deletions

View File

@ -436,9 +436,10 @@ public class MachineLearningIT extends ESRestHighLevelClientTestCase {
}
public void testUpdateDatafeed() throws Exception {
MachineLearningClient machineLearningClient = highLevelClient().machineLearning();
String jobId = randomValidJobId();
Job job = buildJob(jobId);
MachineLearningClient machineLearningClient = highLevelClient().machineLearning();
execute(new PutJobRequest(job), machineLearningClient::putJob, machineLearningClient::putJobAsync);
String datafeedId = "datafeed-" + jobId;
@ -462,6 +463,31 @@ public class MachineLearningIT extends ESRestHighLevelClientTestCase {
assertThat(datafeedUpdate.getScrollSize(), equalTo(updatedDatafeed.getScrollSize()));
}
public void testUpdateDatafeed_UpdatingJobIdIsDeprecated() throws Exception {
MachineLearningClient machineLearningClient = highLevelClient().machineLearning();
String jobId = randomValidJobId();
Job job = buildJob(jobId);
execute(new PutJobRequest(job), machineLearningClient::putJob, machineLearningClient::putJobAsync);
String anotherJobId = randomValidJobId();
Job anotherJob = buildJob(anotherJobId);
execute(new PutJobRequest(anotherJob), machineLearningClient::putJob, machineLearningClient::putJobAsync);
String datafeedId = "datafeed-" + jobId;
DatafeedConfig datafeedConfig = DatafeedConfig.builder(datafeedId, jobId).setIndices("some_data_index").build();
execute(new PutDatafeedRequest(datafeedConfig), machineLearningClient::putDatafeed, machineLearningClient::putDatafeedAsync);
DatafeedUpdate datafeedUpdateWithChangedJobId = DatafeedUpdate.builder(datafeedId).setJobId(anotherJobId).build();
WarningFailureException exception = expectThrows(
WarningFailureException.class,
() -> execute(
new UpdateDatafeedRequest(datafeedUpdateWithChangedJobId),
machineLearningClient::updateDatafeed,
machineLearningClient::updateDatafeedAsync));
assertThat(exception.getResponse().getWarnings(), contains("The ability to update a datafeed's job_id is deprecated."));
}
public void testGetDatafeed() throws Exception {
String jobId1 = "test-get-datafeed-job-1";
String jobId2 = "test-get-datafeed-job-2";

View File

@ -730,8 +730,7 @@ public class MlClientDocumentationIT extends ESRestHighLevelClientTestCase {
.setQuery(QueryBuilders.matchAllQuery()) // <6>
.setQueryDelay(TimeValue.timeValueMinutes(1)) // <7>
.setScriptFields(scriptFields) // <8>
.setScrollSize(1000) // <9>
.setJobId("update-datafeed-job"); // <10>
.setScrollSize(1000); // <9>
// end::update-datafeed-config
// Clearing aggregation to avoid complex validation rules

View File

@ -40,8 +40,6 @@ include-tagged::{doc-tests-file}[{api}-config]
<7> Optional, the time interval behind real time that data is queried.
<8> Optional, allows the use of script fields.
<9> Optional, the `size` parameter used in the searches.
<10> Optional, the `jobId` that references the job that the datafeed should be associated with
after the update.
include::../execution.asciidoc[]

View File

@ -5,12 +5,14 @@
*/
package org.elasticsearch.xpack.core.ml.datafeed;
import org.apache.logging.log4j.LogManager;
import org.elasticsearch.Version;
import org.elasticsearch.common.ParseField;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.common.logging.DeprecationLogger;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
import org.elasticsearch.common.xcontent.ObjectParser;
@ -44,6 +46,9 @@ import java.util.stream.Collectors;
*/
public class DatafeedUpdate implements Writeable, ToXContentObject {
private static final DeprecationLogger deprecationLogger = new DeprecationLogger(LogManager.getLogger(DatafeedUpdate.class));
private static final String DEPRECATION_MESSAGE_ON_JOB_ID_UPDATE = "The ability to update a datafeed's job_id is deprecated.";
public static final ObjectParser<Builder, Void> PARSER = new ObjectParser<>("datafeed_update", Builder::new);
static {
@ -105,6 +110,9 @@ public class DatafeedUpdate implements Writeable, ToXContentObject {
this.scrollSize = scrollSize;
this.chunkingConfig = chunkingConfig;
this.delayedDataCheckConfig = delayedDataCheckConfig;
if (jobId != null) {
deprecationLogger.deprecated(DEPRECATION_MESSAGE_ON_JOB_ID_UPDATE);
}
}
public DatafeedUpdate(StreamInput in) throws IOException {

View File

@ -30,7 +30,7 @@ public class UpdateDatafeedActionRequestTests extends AbstractSerializingTestCas
@Override
protected Request createTestInstance() {
return new Request(DatafeedUpdateTests.createRandomized(datafeedId));
return new Request(DatafeedUpdateTests.createRandomized(datafeedId, null, false));
}
@Override

View File

@ -77,12 +77,12 @@ public class DatafeedUpdateTests extends AbstractSerializingTestCase<DatafeedUpd
}
public static DatafeedUpdate createRandomized(String datafeedId) {
return createRandomized(datafeedId, null);
return createRandomized(datafeedId, null, true);
}
public static DatafeedUpdate createRandomized(String datafeedId, @Nullable DatafeedConfig datafeed) {
public static DatafeedUpdate createRandomized(String datafeedId, @Nullable DatafeedConfig datafeed, boolean canSetJobId) {
DatafeedUpdate.Builder builder = new DatafeedUpdate.Builder(datafeedId);
if (randomBoolean() && datafeed == null) {
if (randomBoolean() && datafeed == null && canSetJobId) {
builder.setJobId(randomAlphaOfLength(10));
}
if (randomBoolean()) {
@ -276,9 +276,9 @@ public class DatafeedUpdateTests extends AbstractSerializingTestCase<DatafeedUpd
withoutAggs.setAggProvider(null);
datafeed = withoutAggs.build();
}
DatafeedUpdate update = createRandomized(datafeed.getId(), datafeed);
DatafeedUpdate update = createRandomized(datafeed.getId(), datafeed, true);
while (update.isNoop(datafeed)) {
update = createRandomized(datafeed.getId(), datafeed);
update = createRandomized(datafeed.getId(), datafeed, true);
}
DatafeedConfig updatedDatafeed = update.apply(datafeed, Collections.emptyMap());

View File

@ -203,6 +203,9 @@ setup:
---
"Test update datafeed to point to different job":
- skip:
features: "warnings"
- do:
ml.put_datafeed:
datafeed_id: test-datafeed-1
@ -214,6 +217,8 @@ setup:
}
- do:
warnings:
- The ability to update a datafeed's job_id is deprecated.
ml.update_datafeed:
datafeed_id: test-datafeed-1
body: >