44
44
import org .elasticsearch .cluster .metadata .MetaDataIndexAliasesService ;
45
45
import org .elasticsearch .cluster .metadata .MetaDataIndexTemplateService ;
46
46
import org .elasticsearch .cluster .service .ClusterService ;
47
+ import org .elasticsearch .common .Nullable ;
47
48
import org .elasticsearch .common .inject .Inject ;
48
49
import org .elasticsearch .common .unit .ByteSizeValue ;
49
50
import org .elasticsearch .index .shard .DocsStats ;
55
56
import java .util .List ;
56
57
import java .util .Locale ;
57
58
import java .util .Map ;
59
+ import java .util .Optional ;
58
60
import java .util .regex .Pattern ;
59
61
import java .util .stream .Collectors ;
60
62
@@ -238,7 +240,11 @@ static String generateRolloverIndexName(String sourceIndexName, IndexNameExpress
238
240
}
239
241
240
242
static Map <String , Boolean > evaluateConditions (final Collection <Condition <?>> conditions ,
241
- final DocsStats docsStats , final IndexMetaData metaData ) {
243
+ @ Nullable final DocsStats docsStats ,
244
+ @ Nullable final IndexMetaData metaData ) {
245
+ if (metaData == null ) {
246
+ return conditions .stream ().collect (Collectors .toMap (Condition ::toString , cond -> false ));
247
+ }
242
248
final long numDocs = docsStats == null ? 0 : docsStats .getCount ();
243
249
final long indexSize = docsStats == null ? 0 : docsStats .getTotalSizeInBytes ();
244
250
final Condition .Stats stats = new Condition .Stats (numDocs , metaData .getCreationDate (), new ByteSizeValue (indexSize ));
@@ -247,9 +253,18 @@ static Map<String, Boolean> evaluateConditions(final Collection<Condition<?>> co
247
253
.collect (Collectors .toMap (result -> result .condition .toString (), result -> result .matched ));
248
254
}
249
255
250
- static Map <String , Boolean > evaluateConditions (final Collection <Condition <?>> conditions , final IndexMetaData metaData ,
251
- final IndicesStatsResponse statsResponse ) {
252
- return evaluateConditions (conditions , statsResponse .getIndex (metaData .getIndex ().getName ()).getPrimaries ().getDocs (), metaData );
256
+ static Map <String , Boolean > evaluateConditions (final Collection <Condition <?>> conditions ,
257
+ @ Nullable final IndexMetaData metaData ,
258
+ @ Nullable final IndicesStatsResponse statsResponse ) {
259
+ if (metaData == null ) {
260
+ return conditions .stream ().collect (Collectors .toMap (Condition ::toString , cond -> false ));
261
+ } else {
262
+ final DocsStats docsStats = Optional .ofNullable (statsResponse )
263
+ .map (stats -> stats .getIndex (metaData .getIndex ().getName ()))
264
+ .map (indexStats -> indexStats .getPrimaries ().getDocs ())
265
+ .orElse (null );
266
+ return evaluateConditions (conditions , docsStats , metaData );
267
+ }
253
268
}
254
269
255
270
static void validate (MetaData metaData , RolloverRequest request ) {
0 commit comments