|
@@ -5,6 +5,8 @@
|
|
|
*/
|
|
|
package org.elasticsearch.xpack.dataframe.action;
|
|
|
|
|
|
+import org.apache.logging.log4j.LogManager;
|
|
|
+import org.apache.logging.log4j.Logger;
|
|
|
import org.elasticsearch.ElasticsearchStatusException;
|
|
|
import org.elasticsearch.action.ActionListener;
|
|
|
import org.elasticsearch.action.ActionListenerResponseHandler;
|
|
@@ -12,6 +14,7 @@ import org.elasticsearch.action.FailedNodeException;
|
|
|
import org.elasticsearch.action.TaskOperationFailure;
|
|
|
import org.elasticsearch.action.support.ActionFilters;
|
|
|
import org.elasticsearch.action.support.tasks.TransportTasksAction;
|
|
|
+import org.elasticsearch.client.Client;
|
|
|
import org.elasticsearch.cluster.ClusterState;
|
|
|
import org.elasticsearch.cluster.node.DiscoveryNodes;
|
|
|
import org.elasticsearch.cluster.service.ClusterService;
|
|
@@ -26,6 +29,7 @@ import org.elasticsearch.transport.TransportService;
|
|
|
import org.elasticsearch.xpack.core.action.util.PageParams;
|
|
|
import org.elasticsearch.xpack.core.dataframe.action.StopDataFrameTransformAction;
|
|
|
import org.elasticsearch.xpack.core.dataframe.transforms.DataFrameTransformTaskState;
|
|
|
+import org.elasticsearch.xpack.dataframe.persistence.DataFrameInternalIndex;
|
|
|
import org.elasticsearch.xpack.dataframe.persistence.DataFrameTransformsConfigManager;
|
|
|
import org.elasticsearch.xpack.dataframe.transforms.DataFrameTransformTask;
|
|
|
|
|
@@ -38,20 +42,25 @@ public class TransportStopDataFrameTransformAction extends
|
|
|
TransportTasksAction<DataFrameTransformTask, StopDataFrameTransformAction.Request,
|
|
|
StopDataFrameTransformAction.Response, StopDataFrameTransformAction.Response> {
|
|
|
|
|
|
+ private static final Logger logger = LogManager.getLogger(TransportStopDataFrameTransformAction.class);
|
|
|
+
|
|
|
private final ThreadPool threadPool;
|
|
|
private final DataFrameTransformsConfigManager dataFrameTransformsConfigManager;
|
|
|
private final PersistentTasksService persistentTasksService;
|
|
|
+ private final Client client;
|
|
|
|
|
|
@Inject
|
|
|
public TransportStopDataFrameTransformAction(TransportService transportService, ActionFilters actionFilters,
|
|
|
ClusterService clusterService, ThreadPool threadPool,
|
|
|
PersistentTasksService persistentTasksService,
|
|
|
- DataFrameTransformsConfigManager dataFrameTransformsConfigManager) {
|
|
|
+ DataFrameTransformsConfigManager dataFrameTransformsConfigManager,
|
|
|
+ Client client) {
|
|
|
super(StopDataFrameTransformAction.NAME, clusterService, transportService, actionFilters, StopDataFrameTransformAction.Request::new,
|
|
|
StopDataFrameTransformAction.Response::new, StopDataFrameTransformAction.Response::new, ThreadPool.Names.SAME);
|
|
|
this.threadPool = threadPool;
|
|
|
this.dataFrameTransformsConfigManager = dataFrameTransformsConfigManager;
|
|
|
this.persistentTasksService = persistentTasksService;
|
|
|
+ this.client = client;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -132,12 +141,26 @@ public class TransportStopDataFrameTransformAction extends
|
|
|
waitForStopListener(StopDataFrameTransformAction.Request request,
|
|
|
ActionListener<StopDataFrameTransformAction.Response> listener) {
|
|
|
|
|
|
+ ActionListener<StopDataFrameTransformAction.Response> onStopListener = ActionListener.wrap(
|
|
|
+ waitResponse ->
|
|
|
+ client.admin()
|
|
|
+ .indices()
|
|
|
+ .prepareRefresh(DataFrameInternalIndex.INDEX_NAME)
|
|
|
+ .execute(ActionListener.wrap(
|
|
|
+ r -> listener.onResponse(waitResponse),
|
|
|
+ e -> {
|
|
|
+ logger.info("Failed to refresh internal index after delete", e);
|
|
|
+ listener.onResponse(waitResponse);
|
|
|
+ })
|
|
|
+ ),
|
|
|
+ listener::onFailure
|
|
|
+ );
|
|
|
return ActionListener.wrap(
|
|
|
response -> {
|
|
|
// Wait until the persistent task is stopped
|
|
|
// Switch over to Generic threadpool so we don't block the network thread
|
|
|
threadPool.generic().execute(() ->
|
|
|
- waitForDataFrameStopped(request.getExpandedIds(), request.getTimeout(), listener));
|
|
|
+ waitForDataFrameStopped(request.getExpandedIds(), request.getTimeout(), onStopListener));
|
|
|
},
|
|
|
listener::onFailure
|
|
|
);
|