Index Lifecycle Policy requires rollover and adjacent settings even when rollover is disabled

It would appear that ILM is broken once you decide you wish to use ILM without rollover.

Note that I do not under any circumstance wish to activate rollover. We use daily indices. Please do not suggest I activate rollover and be done with it.

The purpose of the policy is to move daily indices to warm nodes after 21 days and then delete them after 100 days. This is the only thing I wish to do.

This is what the policy looks like:

{
"data-hot-warm-delete" : {
"version" : 1,
"modified_date" : "2019-08-09T10:02:10.587Z",
"policy" : {
"phases" : {
"hot" : {
"min_age" : "0ms",
"actions" : {
"set_priority" : {
"priority" : 100
}
}
},
"delete" : {
"min_age" : "100d",
"actions" : {
"delete" : { }
}
},
"warm" : {
"min_age" : "21d",
"actions" : {
"allocate" : {
"include" : { },
"exclude" : { },
"require" : {
"box_type" : "warm"
}
},
"set_priority" : {
"priority" : 50
}
}
}
}
}
}
}

If I attempt to run this policy on an index, I get the following error:

{
"error": {
"root_cause": [
{
"type": "remote_transport_exception",
"reason": "[masternode01][10.0.95.50:9300][indices:admin/ilm/retry]"
}
],
"type": "illegal_argument_exception",
"reason": "step [{"phase":"hot","action":"rollover","name":"check-rollover-ready"}] for index [data-2019-04-01] with policy [data-hot-warm-delete] does not exist"
},
"status": 400
}

Once again, please do not suggest I activate rollover. I do not want it. Rollover is built in to our indexing scheme. Instead I wish to know how I can build a simple ILM policy that will simply migrate the indices to warm nodes after 21 days and then delete them after 100.

From my perspective it seems to be a bug in ILM. But if ILM is built such that rollover is an absolute must, I'll simply move back to Curator.

Rollover is not a requirement of ILM.

What is the output of ILM explain for the index in question:

GET /data-2019-04-01/_ilm/explain?human

This is the policy:

{
  "data-hot-warm-delete" : {
    "version" : 1,
    "modified_date" : "2019-08-09T10:02:10.587Z",
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
            "set_priority" : {
              "priority" : 100
            }
          }
        },
        "delete" : {
          "min_age" : "100d",
          "actions" : {
            "delete" : { }
          }
        },
        "warm" : {
          "min_age" : "21d",
          "actions" : {
            "allocate" : {
              "include" : { },
              "exclude" : { },
              "require" : {
                "box_type" : "warm"
              }
            },
            "set_priority" : {
              "priority" : 50
            }
          }
        }
      }
    }
  }
}

This is the output from POST data-2019-06-01/_ilm/retry :

{
  "error": {
    "root_cause": [
      {
        "type": "remote_transport_exception",
        "reason": "[masternode-01][10.95.23.30:9300][indices:admin/ilm/retry]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "step [{\"phase\":\"hot\",\"action\":\"rollover\",\"name\":\"check-rollover-ready\"}] for index [data-2019-06-01] with policy [data-hot-warm-delete] does not exist"
  },
  "status": 400
}

Explain output is not from the new policy, but an old one - likely due to a retry failing to even get off the ground.