Skip to content

Commit d6dd365

Browse files
author
Hendrik Muhs
committed
fix NPE when search fails
1 parent f9804dc commit d6dd365

File tree

1 file changed

+12
-10
lines changed
  • x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/persistence

1 file changed

+12
-10
lines changed

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/persistence/JobProvider.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import org.elasticsearch.search.SearchHits;
6464
import org.elasticsearch.search.aggregations.Aggregation;
6565
import org.elasticsearch.search.aggregations.AggregationBuilders;
66+
import org.elasticsearch.search.aggregations.Aggregations;
6667
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
6768
import org.elasticsearch.search.aggregations.metrics.stats.Stats;
6869
import org.elasticsearch.search.aggregations.metrics.stats.extended.ExtendedStats;
@@ -1142,22 +1143,23 @@ public void getForecastStats(String jobId, Consumer<ForecastStats> handler, Cons
11421143

11431144
executeAsyncWithOrigin(client.threadPool().getThreadContext(), ML_ORIGIN, searchRequest,
11441145
ActionListener.<SearchResponse>wrap(searchResponse -> {
1145-
11461146
long totalHits = searchResponse.getHits().getTotalHits();
1147-
Map<String, Aggregation> aggregations = searchResponse.getAggregations().asMap();
1148-
1147+
Aggregations aggregations = searchResponse.getAggregations();
1148+
if (totalHits == 0 || aggregations == null) {
1149+
handler.accept(new ForecastStats());
1150+
return;
1151+
}
1152+
Map<String, Aggregation> aggregationsAsMap = aggregations.asMap();
11491153
StatsAccumulator memoryStats = StatsAccumulator
1150-
.fromStatsAggregation((Stats) aggregations.get(ForecastStats.Fields.MEMORY));
1154+
.fromStatsAggregation((Stats) aggregationsAsMap.get(ForecastStats.Fields.MEMORY));
11511155
StatsAccumulator recordStats = StatsAccumulator
1152-
.fromStatsAggregation((Stats) aggregations.get(ForecastStats.Fields.RECORDS));
1156+
.fromStatsAggregation((Stats) aggregationsAsMap.get(ForecastStats.Fields.RECORDS));
11531157
StatsAccumulator runtimeStats = StatsAccumulator
1154-
.fromStatsAggregation((Stats) aggregations.get(ForecastStats.Fields.RUNTIME));
1158+
.fromStatsAggregation((Stats) aggregationsAsMap.get(ForecastStats.Fields.RUNTIME));
11551159
CountAccumulator statusCount = CountAccumulator
1156-
.fromTermsAggregation((StringTerms) aggregations.get(ForecastStats.Fields.STATUSES));
1157-
1158-
ForecastStats forecastStats = new ForecastStats(totalHits, memoryStats, recordStats,
1159-
runtimeStats, statusCount);
1160+
.fromTermsAggregation((StringTerms) aggregationsAsMap.get(ForecastStats.Fields.STATUSES));
11601161

1162+
ForecastStats forecastStats = new ForecastStats(totalHits, memoryStats, recordStats, runtimeStats, statusCount);
11611163
handler.accept(forecastStats);
11621164
}, errorHandler), client::search);
11631165

0 commit comments

Comments
 (0)