@@ -247,22 +247,24 @@ public void testCloseUnassignedFailedJobAndStopUnassignedStoppingDatafeed() thro
247247 PersistentTasksCustomMetaData .PersistentTask <?> task = MlTasks .getDatafeedTask (datafeedId , tasks );
248248
249249 // It is possible that the datafeed has already detected the job failure and
250- // terminated itself. In this happens there is no task
251- if (task != null ) {
252- UpdatePersistentTaskStatusAction .Request updatePersistentTaskStatusRequest =
253- new UpdatePersistentTaskStatusAction .Request (task .getId (), task .getAllocationId (), DatafeedState .STOPPING );
254- PersistentTaskResponse updatePersistentTaskStatusResponse =
255- client ().execute (UpdatePersistentTaskStatusAction .INSTANCE , updatePersistentTaskStatusRequest ).actionGet ();
256- assertNotNull (updatePersistentTaskStatusResponse .getTask ());
257-
258- // Confirm the datafeed state is now stopping - this may take a while to update in cluster state
259- assertBusy (() -> {
260- GetDatafeedsStatsAction .Request datafeedStatsRequest = new GetDatafeedsStatsAction .Request (datafeedId );
261- GetDatafeedsStatsAction .Response datafeedStatsResponse =
262- client ().execute (GetDatafeedsStatsAction .INSTANCE , datafeedStatsRequest ).actionGet ();
263- assertEquals (DatafeedState .STOPPING , datafeedStatsResponse .getResponse ().results ().get (0 ).getDatafeedState ());
264- });
265- }
250+ // terminated itself. In this happens there is no persistent task to stop
251+ assumeFalse ("The datafeed task is null most likely because the datafeed detected the job had failed. " +
252+ "This is expected to happen extremely rarely but the test cannot continue in these circumstances." , task == null );
253+
254+ UpdatePersistentTaskStatusAction .Request updatePersistentTaskStatusRequest =
255+ new UpdatePersistentTaskStatusAction .Request (task .getId (), task .getAllocationId (), DatafeedState .STOPPING );
256+ PersistentTaskResponse updatePersistentTaskStatusResponse =
257+ client ().execute (UpdatePersistentTaskStatusAction .INSTANCE , updatePersistentTaskStatusRequest ).actionGet ();
258+ assertNotNull (updatePersistentTaskStatusResponse .getTask ());
259+
260+ // Confirm the datafeed state is now stopping - this may take a while to update in cluster state
261+ assertBusy (() -> {
262+ GetDatafeedsStatsAction .Request datafeedStatsRequest = new GetDatafeedsStatsAction .Request (datafeedId );
263+ GetDatafeedsStatsAction .Response datafeedStatsResponse =
264+ client ().execute (GetDatafeedsStatsAction .INSTANCE , datafeedStatsRequest ).actionGet ();
265+ assertEquals (DatafeedState .STOPPING , datafeedStatsResponse .getResponse ().results ().get (0 ).getDatafeedState ());
266+ });
267+
266268
267269 // Stop the node running the failed job/stopping datafeed
268270 ensureGreen (); // replicas must be assigned, otherwise we could lose a whole index
0 commit comments