88import org .elasticsearch .action .ActionListener ;
99import org .elasticsearch .action .support .ActionFilters ;
1010import org .elasticsearch .action .support .HandledTransportAction ;
11- import org .elasticsearch .cluster .ClusterState ;
12- import org .elasticsearch .cluster .service .ClusterService ;
1311import org .elasticsearch .common .inject .Inject ;
1412import org .elasticsearch .common .settings .Settings ;
1513import org .elasticsearch .tasks .Task ;
1614import org .elasticsearch .transport .TransportService ;
17- import org .elasticsearch .xpack .core .ml .MlMetadata ;
1815import org .elasticsearch .xpack .core .ml .action .GetCalendarEventsAction ;
1916import org .elasticsearch .xpack .core .ml .action .GetCalendarsAction ;
2017import org .elasticsearch .xpack .core .ml .action .util .QueryPage ;
2118import org .elasticsearch .xpack .core .ml .calendars .ScheduledEvent ;
2219import org .elasticsearch .xpack .core .ml .job .config .Job ;
2320import org .elasticsearch .xpack .core .ml .utils .ExceptionsHelper ;
21+ import org .elasticsearch .xpack .ml .job .persistence .JobConfigProvider ;
2422import org .elasticsearch .xpack .ml .job .persistence .JobResultsProvider ;
2523import org .elasticsearch .xpack .ml .job .persistence .ScheduledEventsQueryBuilder ;
2624
2725import java .util .Collections ;
28- import java .util .List ;
2926import java .util .function .Supplier ;
3027
3128public class TransportGetCalendarEventsAction extends HandledTransportAction <GetCalendarEventsAction .Request ,
3229 GetCalendarEventsAction .Response > {
3330
3431 private final JobResultsProvider jobResultsProvider ;
35- private final ClusterService clusterService ;
32+ private final JobConfigProvider jobConfigProvider ;
3633
3734 @ Inject
3835 public TransportGetCalendarEventsAction (Settings settings , TransportService transportService ,
39- ActionFilters actionFilters , ClusterService clusterService ,
40- JobResultsProvider jobResultsProvider ) {
36+ ActionFilters actionFilters , JobResultsProvider jobResultsProvider ,
37+ JobConfigProvider jobConfigProvider ) {
4138 super (settings , GetCalendarEventsAction .NAME , transportService , actionFilters ,
4239 (Supplier <GetCalendarEventsAction .Request >) GetCalendarEventsAction .Request ::new );
4340 this .jobResultsProvider = jobResultsProvider ;
44- this .clusterService = clusterService ;
41+ this .jobConfigProvider = jobConfigProvider ;
4542 }
4643
4744 @ Override
@@ -67,26 +64,28 @@ protected void doExecute(Task task, GetCalendarEventsAction.Request request,
6764 );
6865
6966 if (request .getJobId () != null ) {
70- ClusterState state = clusterService .state ();
71- MlMetadata currentMlMetadata = MlMetadata .getMlMetadata (state );
7267
73- List <String > jobGroups ;
74- String requestId = request .getJobId ();
68+ jobConfigProvider .getJob (request .getJobId (), ActionListener .wrap (
69+ jobBuiler -> {
70+ Job job = jobBuiler .build ();
71+ jobResultsProvider .scheduledEventsForJob (request .getJobId (), job .getGroups (), query , eventsListener );
7572
76- Job job = currentMlMetadata .getJobs ().get (request .getJobId ());
77- if (job == null ) {
78- // Check if the requested id is a job group
79- if (currentMlMetadata .isGroupOrJob (request .getJobId ()) == false ) {
80- listener .onFailure (ExceptionsHelper .missingJobException (request .getJobId ()));
81- return ;
82- }
83- jobGroups = Collections .singletonList (request .getJobId ());
84- requestId = null ;
85- } else {
86- jobGroups = job .getGroups ();
87- }
88-
89- jobResultsProvider .scheduledEventsForJob (requestId , jobGroups , query , eventsListener );
73+ },
74+ jobNotFound -> {
75+ // is the request Id a group?
76+ jobConfigProvider .groupExists (request .getJobId (), ActionListener .wrap (
77+ groupExists -> {
78+ if (groupExists ) {
79+ jobResultsProvider .scheduledEventsForJob (
80+ null , Collections .singletonList (request .getJobId ()), query , eventsListener );
81+ } else {
82+ listener .onFailure (ExceptionsHelper .missingJobException (request .getJobId ()));
83+ }
84+ },
85+ listener ::onFailure
86+ ));
87+ }
88+ ));
9089 } else {
9190 jobResultsProvider .scheduledEvents (query , eventsListener );
9291 }
0 commit comments