diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJob.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJob.java index 64e8512baa5b0..35878f1199586 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJob.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJob.java @@ -32,7 +32,7 @@ import org.elasticsearch.xpack.core.ml.job.messages.Messages; import org.elasticsearch.xpack.core.ml.job.process.autodetect.state.DataCounts; import org.elasticsearch.xpack.core.ml.job.results.Bucket; -import org.elasticsearch.xpack.core.security.user.SystemUser; +import org.elasticsearch.xpack.core.security.user.XPackUser; import org.elasticsearch.xpack.ml.datafeed.delayeddatacheck.DelayedDataDetector; import org.elasticsearch.xpack.ml.datafeed.delayeddatacheck.DelayedDataDetectorFactory.BucketWithMissingData; import org.elasticsearch.xpack.ml.datafeed.extractor.DataExtractorFactory; @@ -225,12 +225,12 @@ private Annotation createAnnotation(Date startTime, Date endTime, String msg) { Date currentTime = new Date(currentTimeSupplier.get()); return new Annotation(msg, currentTime, - SystemUser.NAME, + XPackUser.NAME, startTime, endTime, jobId, currentTime, - SystemUser.NAME, + XPackUser.NAME, "annotation"); } @@ -238,9 +238,11 @@ private String addAndSetDelayedDataAnnotation(Annotation annotation) { try (XContentBuilder xContentBuilder = annotation.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS)) { IndexRequest request = new IndexRequest(AnnotationIndex.WRITE_ALIAS_NAME); request.source(xContentBuilder); - IndexResponse response = client.index(request).actionGet(); - lastDataCheckAnnotation = annotation; - return response.getId(); + try (ThreadContext.StoredContext ignore = stashWithOrigin(client.threadPool().getThreadContext(), ML_ORIGIN)) { + IndexResponse response = client.index(request).actionGet(); + lastDataCheckAnnotation = annotation; + return response.getId(); + } } catch (IOException ex) { String errorMessage = "[" + jobId + "] failed to create annotation for delayed data checker."; LOGGER.error(errorMessage, ex); @@ -251,7 +253,7 @@ private String addAndSetDelayedDataAnnotation(Annotation annotation) { private void updateAnnotation(Annotation annotation) { Annotation updatedAnnotation = new Annotation(lastDataCheckAnnotation); - updatedAnnotation.setModifiedUsername(SystemUser.NAME); + updatedAnnotation.setModifiedUsername(XPackUser.NAME); updatedAnnotation.setModifiedTime(new Date(currentTimeSupplier.get())); updatedAnnotation.setAnnotation(annotation.getAnnotation()); updatedAnnotation.setTimestamp(annotation.getTimestamp()); @@ -260,8 +262,10 @@ private void updateAnnotation(Annotation annotation) { IndexRequest indexRequest = new IndexRequest(AnnotationIndex.WRITE_ALIAS_NAME); indexRequest.id(lastDataCheckAnnotationId); indexRequest.source(xContentBuilder); - client.index(indexRequest).actionGet(); - lastDataCheckAnnotation = updatedAnnotation; + try (ThreadContext.StoredContext ignore = stashWithOrigin(client.threadPool().getThreadContext(), ML_ORIGIN)) { + client.index(indexRequest).actionGet(); + lastDataCheckAnnotation = updatedAnnotation; + } } catch (IOException ex) { String errorMessage = "[" + jobId + "] failed to update annotation for delayed data checker."; LOGGER.error(errorMessage, ex); diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJobTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJobTests.java index 534681ff3c86a..2540ab8cde8ef 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJobTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/datafeed/DatafeedJobTests.java @@ -30,7 +30,7 @@ import org.elasticsearch.xpack.core.ml.datafeed.extractor.DataExtractor; import org.elasticsearch.xpack.core.ml.job.messages.Messages; import org.elasticsearch.xpack.core.ml.job.results.Bucket; -import org.elasticsearch.xpack.core.security.user.SystemUser; +import org.elasticsearch.xpack.core.security.user.XPackUser; import org.elasticsearch.xpack.ml.datafeed.delayeddatacheck.DelayedDataDetector; import org.elasticsearch.xpack.ml.datafeed.delayeddatacheck.DelayedDataDetectorFactory.BucketWithMissingData; import org.elasticsearch.xpack.ml.datafeed.extractor.DataExtractorFactory; @@ -271,12 +271,12 @@ public void testRealtimeRun() throws Exception { Annotation expectedAnnotation = new Annotation(msg, new Date(currentTime), - SystemUser.NAME, + XPackUser.NAME, bucket.getTimestamp(), new Date((bucket.getEpoch() + bucket.getBucketSpan()) * 1000), jobId, new Date(currentTime), - SystemUser.NAME, + XPackUser.NAME, "annotation"); IndexRequest request = new IndexRequest(AnnotationIndex.WRITE_ALIAS_NAME); @@ -312,7 +312,7 @@ public void testRealtimeRun() throws Exception { Annotation updatedAnnotation = new Annotation(expectedAnnotation); updatedAnnotation.setAnnotation(msg); updatedAnnotation.setModifiedTime(new Date(currentTime)); - updatedAnnotation.setModifiedUsername(SystemUser.NAME); + updatedAnnotation.setModifiedUsername(XPackUser.NAME); updatedAnnotation.setEndTimestamp(new Date((bucket2.getEpoch() + bucket2.getBucketSpan()) * 1000)); try (XContentBuilder xContentBuilder = updatedAnnotation.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS)) { indexRequest.source(xContentBuilder);