20
20
import org .elasticsearch .common .util .Maps ;
21
21
import org .elasticsearch .env .Environment ;
22
22
import org .elasticsearch .license .XPackLicenseState ;
23
+ import org .elasticsearch .logging .LogManager ;
24
+ import org .elasticsearch .logging .Logger ;
23
25
import org .elasticsearch .protocol .xpack .XPackUsageRequest ;
24
26
import org .elasticsearch .tasks .Task ;
25
27
import org .elasticsearch .threadpool .ThreadPool ;
66
68
67
69
public class MachineLearningUsageTransportAction extends XPackUsageFeatureTransportAction {
68
70
71
+ private static final Logger logger = LogManager .getLogger (MachineLearningUsageTransportAction .class );
72
+
69
73
private final Client client ;
70
74
private final XPackLicenseState licenseState ;
71
75
private final JobManagerHolder jobManagerHolder ;
@@ -124,8 +128,8 @@ protected void masterOperation(
124
128
int nodeCount = mlNodeCount (state );
125
129
126
130
// Step 5. return final ML usage
127
- ActionListener <Map <String , Object >> inferenceUsageListener = ActionListener .wrap (inferenceUsage -> {
128
- listener .onResponse (
131
+ ActionListener <Map <String , Object >> inferenceUsageListener = ActionListener .wrap (
132
+ inferenceUsage -> listener .onResponse (
129
133
new XPackUsageFeatureResponse (
130
134
new MachineLearningFeatureSetUsage (
131
135
MachineLearningField .ML_API_FEATURE .checkWithoutTracking (licenseState ),
@@ -137,45 +141,76 @@ protected void masterOperation(
137
141
nodeCount
138
142
)
139
143
)
140
- );
141
- }, listener ::onFailure );
144
+ ),
145
+ e -> {
146
+ logger .warn ("Failed to get inference usage to include in ML usage" , e );
147
+ listener .onResponse (
148
+ new XPackUsageFeatureResponse (
149
+ new MachineLearningFeatureSetUsage (
150
+ MachineLearningField .ML_API_FEATURE .checkWithoutTracking (licenseState ),
151
+ enabled ,
152
+ jobsUsage ,
153
+ datafeedsUsage ,
154
+ analyticsUsage ,
155
+ Collections .emptyMap (),
156
+ nodeCount
157
+ )
158
+ )
159
+ );
160
+ }
161
+ );
142
162
143
163
// Step 4. Extract usage from data frame analytics configs and then get inference usage
144
164
ActionListener <GetDataFrameAnalyticsAction .Response > dataframeAnalyticsListener = ActionListener .wrap (response -> {
145
165
addDataFrameAnalyticsUsage (response , analyticsUsage );
146
166
addInferenceUsage (inferenceUsageListener );
147
- }, listener ::onFailure );
167
+ }, e -> {
168
+ logger .warn ("Failed to get data frame analytics configs to include in ML usage" , e );
169
+ addInferenceUsage (inferenceUsageListener );
170
+ });
148
171
149
172
// Step 3. Extract usage from data frame analytics stats and then request data frame analytics configs
173
+ GetDataFrameAnalyticsAction .Request getDfaRequest = new GetDataFrameAnalyticsAction .Request (Metadata .ALL );
174
+ getDfaRequest .setPageParams (new PageParams (0 , 10_000 ));
150
175
ActionListener <GetDataFrameAnalyticsStatsAction .Response > dataframeAnalyticsStatsListener = ActionListener .wrap (response -> {
151
176
addDataFrameAnalyticsStatsUsage (response , analyticsUsage );
152
- GetDataFrameAnalyticsAction .Request getDfaRequest = new GetDataFrameAnalyticsAction .Request (Metadata .ALL );
153
- getDfaRequest .setPageParams (new PageParams (0 , 10_000 ));
154
177
client .execute (GetDataFrameAnalyticsAction .INSTANCE , getDfaRequest , dataframeAnalyticsListener );
155
- }, listener ::onFailure );
178
+ }, e -> {
179
+ logger .warn ("Failed to get data frame analytics stats to include in ML usage" , e );
180
+ client .execute (GetDataFrameAnalyticsAction .INSTANCE , getDfaRequest , dataframeAnalyticsListener );
181
+ });
156
182
157
183
// Step 2. Extract usage from datafeeds stats and then request stats for data frame analytics
184
+ GetDataFrameAnalyticsStatsAction .Request dataframeAnalyticsStatsRequest = new GetDataFrameAnalyticsStatsAction .Request (
185
+ Metadata .ALL
186
+ );
187
+ dataframeAnalyticsStatsRequest .setPageParams (new PageParams (0 , 10_000 ));
158
188
ActionListener <GetDatafeedsStatsAction .Response > datafeedStatsListener = ActionListener .wrap (response -> {
159
189
addDatafeedsUsage (response , datafeedsUsage );
160
- GetDataFrameAnalyticsStatsAction .Request dataframeAnalyticsStatsRequest = new GetDataFrameAnalyticsStatsAction .Request (
161
- Metadata .ALL
162
- );
163
- dataframeAnalyticsStatsRequest .setPageParams (new PageParams (0 , 10_000 ));
164
190
client .execute (GetDataFrameAnalyticsStatsAction .INSTANCE , dataframeAnalyticsStatsRequest , dataframeAnalyticsStatsListener );
165
- }, listener ::onFailure );
191
+ }, e -> {
192
+ logger .warn ("Failed to get datafeed stats to include in ML usage" , e );
193
+ client .execute (GetDataFrameAnalyticsStatsAction .INSTANCE , dataframeAnalyticsStatsRequest , dataframeAnalyticsStatsListener );
194
+ });
166
195
167
196
// Step 1. Extract usage from jobs stats and then request stats for all datafeeds
168
- GetJobsStatsAction .Request jobStatsRequest = new GetJobsStatsAction .Request (Metadata .ALL );
197
+ GetDatafeedsStatsAction .Request datafeedStatsRequest = new GetDatafeedsStatsAction .Request (Metadata .ALL );
169
198
ActionListener <GetJobsStatsAction .Response > jobStatsListener = ActionListener .wrap (
170
199
response -> jobManagerHolder .getJobManager ().expandJobs (Metadata .ALL , true , ActionListener .wrap (jobs -> {
171
200
addJobsUsage (response , jobs .results (), jobsUsage );
172
- GetDatafeedsStatsAction .Request datafeedStatsRequest = new GetDatafeedsStatsAction .Request (Metadata .ALL );
173
201
client .execute (GetDatafeedsStatsAction .INSTANCE , datafeedStatsRequest , datafeedStatsListener );
174
- }, listener ::onFailure )),
175
- listener ::onFailure
202
+ }, e -> {
203
+ logger .warn ("Failed to get job configs to include in ML usage" , e );
204
+ client .execute (GetDatafeedsStatsAction .INSTANCE , datafeedStatsRequest , datafeedStatsListener );
205
+ })),
206
+ e -> {
207
+ logger .warn ("Failed to get job stats to include in ML usage" , e );
208
+ client .execute (GetDatafeedsStatsAction .INSTANCE , datafeedStatsRequest , datafeedStatsListener );
209
+ }
176
210
);
177
211
178
212
// Step 0. Kick off the chain of callbacks by requesting jobs stats
213
+ GetJobsStatsAction .Request jobStatsRequest = new GetJobsStatsAction .Request (Metadata .ALL );
179
214
client .execute (GetJobsStatsAction .INSTANCE , jobStatsRequest , jobStatsListener );
180
215
}
181
216
0 commit comments