Skip to content

Conversation

@mergify
Copy link

@mergify mergify bot commented Feb 2, 2023

This is an automatic backport of pull request #7156 done by Mergify.


Mergify commands and options

More conditions and actions can be found in the documentation.

You can also trigger Mergify actions by commenting on this pull request:

  • @Mergifyio refresh will re-evaluate the rules
  • @Mergifyio rebase will rebase this PR on its base branch
  • @Mergifyio update will merge the base branch into this PR
  • @Mergifyio backport <destination> will backport this PR on <destination> branch

Additionally, on Mergify dashboard you can:

  • look at your merge queues
  • generate the Mergify configuration with the config editor.

Finally, you can contact us on https://mergify.com

When we collect feature flag properties from all nodes, we start with an
empty cluster inventory (a common Erlang recursion pattern). This means
that all feature flags are unknown at first.

In `merge_feature_flags()`, we must compute a global stability level for
each feature flag, in case all nodes are not on the same page (like one
nodes considers a feature flag experimental, but another one marks it as
stable). That's why we rank stability level: required > stable >
experimental.

This ranking had one issue: `rabbit_feature_flags:get_stability/1`
defaults to `stable` if a feature flag has not explicit stability set.
Therefore, with our empty starting inventory, the starting stability
would be `stable`. And it would superceed an experimental feature flag
stability level, even though all nodes agree on that.

Now, if a feature flag is missing from our inventory being collected, we
consider its stability level to be experimental. This is different from
a known feature flag with no explicit stability level. This way, we are
sure that feature flags marked as experimental everywhere will be
considered experimental globally.

(cherry picked from commit aa78bad)
"~~" was ok when the final string was a format string, but it's not
anymore. We need a simple "~".

(cherry picked from commit 4d4421f)
The return value was incorrectly specified and documented: it can return
`undefined` when a feature flag name is passed and that feature flag is
unknown.

So far, this function is always called with a feature flag properties
map, in which case it doesn't return `undefined`.

(cherry picked from commit 55cb7ec)
@dumbbell dumbbell marked this pull request as draft February 2, 2023 13:02
@dumbbell dumbbell added this to the 3.11.9 milestone Feb 2, 2023
@dumbbell dumbbell marked this pull request as ready for review February 2, 2023 13:31
@dumbbell dumbbell merged commit 24d200f into v3.11.x Feb 2, 2023
@dumbbell dumbbell deleted the mergify/bp/v3.11.x/pr-7156 branch February 2, 2023 13:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants