Documentation bug in Index state management conditions?

In the the example policy in the docs, the transition should happen when the conditions are met.
In the example policy here: https://opendistro.github.io/for-elasticsearch-docs/docs/ism/policies/#example-policy, there is no condition on the transition from “hot” to “warm”.
There is a condition on the the transition from “warm” to “delete”.

I do see a rollover action for the “hot” state which says the index should rollover once all the documents in the index are at least once day old, but that is an action, and actions are documented to happen when the state is entered.

Shouldn’t the min index age condition also be part of the transition as well as being the condition for the rollover?

Hi @iamthealex-es,

The actions do happen when a state is entered and they do happen linearly/sequentially. ISM will not move on to the next action until the previous one is completed. For rollover this means it will not move past rollover action until it has completed which is when the index is 1 day old. So in this example there is no need to also set the condition in the transition as technically you know you will already be >1day by the time you get to it. Conditions are not required on transitions btw, if you leave out conditions it just defaults to evaluating to true in case you want to immediately transition.

Thank you for your quick reply.

I understand that you are saying that the rollover action is not complete until the rollover actually happens.

Is it the case that all of the the other actions are more immediate and don’t block?

The “rollover” action is the only one that takes a time unit (despite the documentation saying “integer”, I suspect the example is correct and the type is actually “time unit”. Right?

Hi @iamthealex-es,

All actions block until they are completed. Most actions are pretty simple in that they don’t really fail and are not waiting on anything. For example read_only is just updating a cluster setting. Rollover however does wait for the conditions passed to it to evaluate to true before calling rollover. So it can “block” for quite a while longer depending on what was passed.

And good catch, looks like the docs need to be updated. It does take a time unit like “30m”, “5h”, “7d” etc.