Skip to content

Commit 321dba5

Browse files
committed
fix event disptach order
1 parent 437048c commit 321dba5

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

core-api/src/main/java/com/optimizely/ab/Optimizely.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -1318,13 +1318,17 @@ Map<String, OptimizelyDecision> decideForKeys(@Nonnull OptimizelyUserContext use
13181318

13191319
List<FeatureFlag> flagsWithoutForcedDecision = new ArrayList<>();
13201320

1321+
List<String> validKeys = new ArrayList<>();
1322+
13211323
for (String key : keys) {
13221324
FeatureFlag flag = projectConfig.getFeatureKeyMapping().get(key);
13231325
if (flag == null) {
13241326
decisionMap.put(key, OptimizelyDecision.newErrorDecision(key, user, DecisionMessage.FLAG_KEY_INVALID.reason(key)));
13251327
continue;
13261328
}
13271329

1330+
validKeys.add(key);
1331+
13281332
DecisionReasons decisionReasons = DefaultDecisionReasons.newInstance(allOptions);
13291333
Optional<FeatureDecision> forcedDecision = getForcedDecision(key, decisionReasons, projectConfig, user);
13301334
decisionReasonsMap.put(key, decisionReasons);
@@ -1346,9 +1350,8 @@ Map<String, OptimizelyDecision> decideForKeys(@Nonnull OptimizelyUserContext use
13461350
decisionReasonsMap.get(flagKey).merge(decision.getReasons());
13471351
}
13481352

1349-
for (Map.Entry<String, FeatureDecision> entry: flagDecisions.entrySet()) {
1350-
String key = entry.getKey();
1351-
FeatureDecision flagDecision = entry.getValue();
1353+
for (String key: validKeys) {
1354+
FeatureDecision flagDecision = flagDecisions.get(key);
13521355
DecisionReasons decisionReasons = decisionReasonsMap.get((key));
13531356

13541357
OptimizelyDecision optimizelyDecision = createOptimizelyDecision(

core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -408,17 +408,17 @@ public void decideAll_allFlags() {
408408
List<ImpressionEvent> sentEvents = argumentCaptor.getAllValues();
409409
assertEquals(sentEvents.size(), 3);
410410

411-
assertEquals(sentEvents.get(2).getExperimentKey(), "exp_with_audience");
412-
assertEquals(sentEvents.get(2).getVariationKey(), "a");
413-
assertEquals(sentEvents.get(2).getUserContext().getUserId(), userId);
411+
assertEquals(sentEvents.get(0).getExperimentKey(), "exp_with_audience");
412+
assertEquals(sentEvents.get(0).getVariationKey(), "a");
413+
assertEquals(sentEvents.get(0).getUserContext().getUserId(), userId);
414414

415415

416416
assertEquals(sentEvents.get(1).getExperimentKey(), "exp_no_audience");
417417
assertEquals(sentEvents.get(1).getVariationKey(), "variation_with_traffic");
418418
assertEquals(sentEvents.get(1).getUserContext().getUserId(), userId);
419419

420-
assertEquals(sentEvents.get(0).getExperimentKey(), "");
421-
assertEquals(sentEvents.get(0).getUserContext().getUserId(), userId);
420+
assertEquals(sentEvents.get(2).getExperimentKey(), "");
421+
assertEquals(sentEvents.get(2).getUserContext().getUserId(), userId);
422422
}
423423

424424
@Test

0 commit comments

Comments
 (0)