@@ -166,33 +166,32 @@ public virtual Result<Variation> GetVariation(Experiment experiment,
166
166
167
167
var userId = user . GetUserId ( ) ;
168
168
169
- var decisionVariationResult = GetForcedVariation ( experiment . Key , userId , config ) ;
170
- reasons += decisionVariationResult . DecisionReasons ;
171
- var variation = decisionVariationResult . ResultObject ;
169
+ var decisionVariation = GetForcedVariation ( experiment . Key , userId , config ) ;
170
+ reasons += decisionVariation . DecisionReasons ;
171
+ var variation = decisionVariation . ResultObject ;
172
172
173
173
if ( variation == null )
174
174
{
175
- decisionVariationResult = GetWhitelistedVariation ( experiment , user . GetUserId ( ) ) ;
176
- reasons += decisionVariationResult . DecisionReasons ;
177
-
178
- variation = decisionVariationResult . ResultObject ;
175
+ decisionVariation = GetWhitelistedVariation ( experiment , user . GetUserId ( ) ) ;
176
+ reasons += decisionVariation . DecisionReasons ;
177
+ variation = decisionVariation . ResultObject ;
179
178
}
180
179
181
180
if ( variation != null )
182
181
{
183
- decisionVariationResult . SetReasons ( reasons ) ;
184
- return decisionVariationResult ;
182
+ decisionVariation . SetReasons ( reasons ) ;
183
+ return decisionVariation ;
185
184
}
186
185
187
186
if ( userProfileTracker != null )
188
187
{
189
- decisionVariationResult =
188
+ decisionVariation =
190
189
GetStoredVariation ( experiment , userProfileTracker . UserProfile , config ) ;
191
- reasons += decisionVariationResult . DecisionReasons ;
192
- variation = decisionVariationResult . ResultObject ;
190
+ reasons += decisionVariation . DecisionReasons ;
191
+ variation = decisionVariation . ResultObject ;
193
192
if ( variation != null )
194
193
{
195
- return decisionVariationResult ;
194
+ return decisionVariation ;
196
195
}
197
196
}
198
197
@@ -202,13 +201,11 @@ public virtual Result<Variation> GetVariation(Experiment experiment,
202
201
reasons += decisionMeetAudience . DecisionReasons ;
203
202
if ( decisionMeetAudience . ResultObject )
204
203
{
205
- var bucketingIdResult = GetBucketingId ( userId , user . GetAttributes ( ) ) ;
206
- reasons += bucketingIdResult . DecisionReasons ;
204
+ var bucketingId = GetBucketingId ( userId , user . GetAttributes ( ) ) . ResultObject ;
207
205
208
- decisionVariationResult = Bucketer . Bucket ( config , experiment ,
209
- bucketingIdResult . ResultObject , userId ) ;
210
- reasons += decisionVariationResult . DecisionReasons ;
211
- variation = decisionVariationResult . ResultObject ;
206
+ decisionVariation = Bucketer . Bucket ( config , experiment , bucketingId , userId ) ;
207
+ reasons += decisionVariation . DecisionReasons ;
208
+ variation = decisionVariation . ResultObject ;
212
209
213
210
if ( variation != null )
214
211
{
@@ -218,12 +215,12 @@ public virtual Result<Variation> GetVariation(Experiment experiment,
218
215
}
219
216
else
220
217
{
221
- Logger . Log ( LogLevel . DEBUG ,
218
+ Logger . Log ( LogLevel . INFO ,
222
219
"This decision will not be saved since the UserProfileService is null." ) ;
223
220
}
224
221
}
225
222
226
- return decisionVariationResult . SetReasons ( reasons ) ;
223
+ return decisionVariation . SetReasons ( reasons ) ;
227
224
}
228
225
229
226
Logger . Log ( LogLevel . INFO ,
@@ -651,7 +648,8 @@ public virtual Result<FeatureDecision> GetVariationForFeatureExperiment(
651
648
OptimizelyUserContext user ,
652
649
UserAttributes filteredAttributes ,
653
650
ProjectConfig config ,
654
- OptimizelyDecideOption [ ] options
651
+ OptimizelyDecideOption [ ] options ,
652
+ UserProfileTracker userProfileTracker = null
655
653
)
656
654
{
657
655
var reasons = new DecisionReasons ( ) ;
@@ -692,7 +690,7 @@ OptimizelyDecideOption[] options
692
690
}
693
691
else
694
692
{
695
- var decisionResponse = GetVariation ( experiment , user , config , options ) ;
693
+ var decisionResponse = GetVariation ( experiment , user , config , options , userProfileTracker ) ;
696
694
697
695
reasons += decisionResponse ? . DecisionReasons ;
698
696
decisionVariation = decisionResponse . ResultObject ;
@@ -736,7 +734,7 @@ public class UserProfileTracker
736
734
{
737
735
public UserProfile UserProfile { get ; private set ; }
738
736
public bool ProfileUpdated { get ; private set ; }
739
- private string UserId { get ; set ; }
737
+ private string UserId { get ; }
740
738
741
739
public UserProfileTracker ( string userId )
742
740
{
@@ -798,7 +796,7 @@ public void UpdateUserProfile(Experiment experiment, Variation variation)
798
796
ProfileUpdated = true ;
799
797
800
798
Logger . Log ( LogLevel . INFO ,
801
- $ "Updated variation \" { variationId } \" of experiment \" { experimentId } \" for user \" { UserProfile . UserId } \" .") ;
799
+ $ "Saved variation \" { variationId } \" of experiment \" { experimentId } \" for user \" { UserProfile . UserId } \" .") ;
802
800
}
803
801
804
802
public void SaveUserProfile ( )
@@ -852,7 +850,7 @@ OptimizelyDecideOption[] options
852
850
853
851
// Check if the feature flag has an experiment and the user is bucketed into that experiment.
854
852
var decisionResult = GetVariationForFeatureExperiment ( featureFlag , user ,
855
- filteredAttributes , projectConfig , options ) ;
853
+ filteredAttributes , projectConfig , options , userProfileTracker ) ;
856
854
reasons += decisionResult . DecisionReasons ;
857
855
858
856
if ( decisionResult . ResultObject != null )
0 commit comments