Skip to content

Commit

Permalink
fix: groupId
Browse files Browse the repository at this point in the history
  • Loading branch information
gardleopard committed Aug 22, 2023
1 parent 617dacc commit de14163
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions lib/unleash/feature_toggle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,13 @@ def get_variant(context, fallback_variant = Unleash::FeatureToggle.disabled_vari
toggle_enabled = am_enabled?(context)

variants = am_enabled(context)[:variants]
strategy = am_enabled(context)[:strategy]
group_id = self.name
if strategy
group_id = strategy.params.fetch('groupId', self.name)
end

variant = resolve_variant(context, toggle_enabled, variants)
variant = resolve_variant(context, toggle_enabled, variants, group_id)

choice = toggle_enabled ? :yes : :no
Unleash.toggle_metrics.increment_variant(self.name, choice, variant.name) unless Unleash.configuration.disable_metrics
Expand All @@ -54,11 +59,11 @@ def self.disabled_variant

private

def resolve_variant(context, toggle_enabled, variants)
def resolve_variant(context, toggle_enabled, variants, group_id)
return Unleash::FeatureToggle.disabled_variant unless toggle_enabled
return Unleash::FeatureToggle.disabled_variant if sum_variant_defs_weights(variants) <= 0

variant_from_override_match(context, variants) || variant_from_weights(context, resolve_stickiness(variants), variants)
variant_from_override_match(context, variants) || variant_from_weights(context, resolve_stickiness(variants), variants, group_id)
end

def resolve_stickiness(variants)
Expand All @@ -72,6 +77,7 @@ def am_enabled?(context)

def am_enabled(context)
result = false
strategy = false
variants = self.variant_definitions
if self.enabled
if self.strategies.empty?
Expand All @@ -90,7 +96,8 @@ def am_enabled(context)

{
result: result,
variants: variants
variants: variants,
strategy: strategy
}
end

Expand Down Expand Up @@ -131,8 +138,8 @@ def variant_from_override_match(context, variants)
Unleash::Variant.new(name: variant.name, enabled: true, payload: variant.payload)
end

def variant_from_weights(context, stickiness, variants)
variant_weight = Unleash::Strategy::Util.get_normalized_number(variant_salt(context, stickiness), self.name, sum_variant_defs_weights(variants))
def variant_from_weights(context, stickiness, variants, group_id)
variant_weight = Unleash::Strategy::Util.get_normalized_number(variant_salt(context, stickiness), "#{group_id}", sum_variant_defs_weights(variants))
prev_weights = 0

variant_definition = variants
Expand Down

0 comments on commit de14163

Please sign in to comment.