Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions lib/optimizely/decision_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ def get_variation(project_config, experiment_id, user_context, user_profile_trac

should_ignore_user_profile_service = decide_options.include? Optimizely::Decide::OptimizelyDecideOption::IGNORE_USER_PROFILE_SERVICE
# Check for saved bucketing decisions if decide_options do not include ignoreUserProfileService
unless should_ignore_user_profile_service && user_profile_tracker
# Skip UPS for CMAB experiments as they require dynamic decisions
if !should_ignore_user_profile_service && user_profile_tracker && !experiment.key?('cmab')
saved_variation_id, reasons_received = get_saved_variation_id(project_config, experiment_id, user_profile_tracker.user_profile)
decide_reasons.push(*reasons_received)
if saved_variation_id
Expand All @@ -109,6 +110,10 @@ def get_variation(project_config, experiment_id, user_context, user_profile_trac
decide_reasons.push(message)
return VariationResult.new(nil, false, decide_reasons, saved_variation_id)
end
elsif experiment.key?('cmab')
message = "Skipping User Profile Service for CMAB experiment '#{experiment_key}'."
@logger.log(Logger::DEBUG, message)
decide_reasons.push(message)
end

# Check audience conditions
Expand Down Expand Up @@ -155,7 +160,8 @@ def get_variation(project_config, experiment_id, user_context, user_profile_trac
decide_reasons.push(message) if message

# Persist bucketing decision
user_profile_tracker.update_user_profile(experiment_id, variation_id) unless should_ignore_user_profile_service && user_profile_tracker
# Skip UPS for CMAB experiments as they require dynamic decisions
user_profile_tracker.update_user_profile(experiment_id, variation_id) if !should_ignore_user_profile_service && user_profile_tracker && !experiment.key?('cmab')
VariationResult.new(cmab_uuid, false, decide_reasons, variation_id)
end

Expand Down
Loading