You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rabbit_deprecated_features: Use is_feature_used callback only if not required
[Why]
The `is_feature_used` callback is used to determine if a deprecated
feature can really be denied. Therefore it only makes sense for
deprecated features in their `permitted_by_default` and
`denied_by_default` phases.
When a deprecated feature enters the `disconnected` or `removed` phases,
the code being the feature should be gone. Therefore, there is no point
in checking if it is used.
[How]
We get the stability derived from the deprecated feature phase before we
actually run the callback.
While here, if the callback returns an error, we treat it as if it
returned that the feature is used.
As a reminder, a node will refuse to start if a deprecated feature is
denied but the feature is used. This is a slight change compared to the
initial goal of the deprecated features subsystem. Indeed, the goal was
to allow users experiment with the future behavior of RabbitMQ. However,
a future node would probably still start even if there were left-overs
from a removed feature. However if a `permitted_by_default` or
`denied_by_default` deprecated feature is denied, the node would refuse
to start. We see that as a strong way to communicate the user that an
action is required from them.
0 commit comments