Skip to content

Commit

Permalink
[ML] DeleteExpiredDataAction should use client with origin (#30646)
Browse files Browse the repository at this point in the history
This is an admin action that should be allowed to operate on
ML indices with full permissions.
  • Loading branch information
dimitris-athanasiou committed May 16, 2018
1 parent aea4cd5 commit e0196b4
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.TransportService;
import org.elasticsearch.xpack.core.ClientHelper;
import org.elasticsearch.xpack.core.ml.action.DeleteExpiredDataAction;
import org.elasticsearch.xpack.ml.MachineLearning;
import org.elasticsearch.xpack.ml.job.retention.ExpiredForecastsRemover;
Expand All @@ -40,7 +41,7 @@ public TransportDeleteExpiredDataAction(Settings settings, ThreadPool threadPool
Client client, ClusterService clusterService) {
super(settings, DeleteExpiredDataAction.NAME, threadPool, transportService, actionFilters, indexNameExpressionResolver,
DeleteExpiredDataAction.Request::new);
this.client = client;
this.client = ClientHelper.clientWithOrigin(client, ClientHelper.ML_ORIGIN);
this.clusterService = clusterService;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@
* Removes up to {@link #MAX_FORECASTS} forecasts (stats + forecasts docs) that have expired.
* A forecast is deleted if its expiration timestamp is earlier
* than the start of the current day (local time-zone).
*
* This is expected to be used by actions requiring admin rights. Thus,
* it is also expected that the provided client will be a client with the
* ML origin so that permissions to manage ML indices are met.
*/
public class ExpiredForecastsRemover implements MlDataRemover {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
* of their respective job with the exception of the currently used snapshot.
* A snapshot is deleted if its timestamp is earlier than the start of the
* current day (local time-zone) minus the retention period.
*
* This is expected to be used by actions requiring admin rights. Thus,
* it is also expected that the provided client will be a client with the
* ML origin so that permissions to manage ML indices are met.
*/
public class ExpiredModelSnapshotsRemover extends AbstractExpiredJobDataRemover {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,15 @@
import java.time.format.DateTimeFormatter;
import java.util.Objects;

import static org.elasticsearch.xpack.core.ClientHelper.ML_ORIGIN;
import static org.elasticsearch.xpack.core.ClientHelper.executeAsyncWithOrigin;

/**
* Removes all results that have expired the configured retention time
* of their respective job. A result is deleted if its timestamp is earlier
* than the start of the current day (local time-zone) minus the retention
* period.
*
* This is expected to be used by actions requiring admin rights. Thus,
* it is also expected that the provided client will be a client with the
* ML origin so that permissions to manage ML indices are met.
*/
public class ExpiredResultsRemover extends AbstractExpiredJobDataRemover {

Expand All @@ -65,7 +66,7 @@ protected void removeDataBefore(Job job, long cutoffEpochMs, ActionListener<Bool
LOGGER.debug("Removing results of job [{}] that have a timestamp before [{}]", job.getId(), cutoffEpochMs);
DeleteByQueryRequest request = createDBQRequest(job, cutoffEpochMs);

executeAsyncWithOrigin(client, ML_ORIGIN, DeleteByQueryAction.INSTANCE, request, new ActionListener<BulkByScrollResponse>() {
client.execute(DeleteByQueryAction.INSTANCE, request, new ActionListener<BulkByScrollResponse>() {
@Override
public void onResponse(BulkByScrollResponse bulkByScrollResponse) {
try {
Expand Down

0 comments on commit e0196b4

Please sign in to comment.