Skip to content

Commit 64f378f

Browse files
update: enhance error handling by specifying CMAB error messages in decision responses
1 parent 416bcbd commit 64f378f

File tree

2 files changed

+3
-12
lines changed

2 files changed

+3
-12
lines changed

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

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1451,10 +1451,11 @@ private Map<String, OptimizelyDecision> decideForKeys(@Nonnull OptimizelyUserCon
14511451
for (int i = 0; i < flagsWithoutForcedDecision.size(); i++) {
14521452
DecisionResponse<FeatureDecision> decision = decisionList.get(i);
14531453
boolean error = decision.isError();
1454+
String experimentKey = decision.getResult().experiment.getKey();
14541455
String flagKey = flagsWithoutForcedDecision.get(i).getKey();
14551456

14561457
if (error) {
1457-
OptimizelyDecision optimizelyDecision = OptimizelyDecision.newErrorDecision(flagKey, user, DecisionMessage.DECISION_ERROR.reason(flagKey));
1458+
OptimizelyDecision optimizelyDecision = OptimizelyDecision.newErrorDecision(flagKey, user, DecisionMessage.CMAB_ERROR.reason(experimentKey));
14581459
decisionMap.put(flagKey, optimizelyDecision);
14591460
if (validKeys.contains(flagKey)) {
14601461
validKeys.remove(flagKey);
@@ -1611,17 +1612,7 @@ private Map<String, OptimizelyDecision> decideForKeysSync(@Nonnull OptimizelyUse
16111612

16121613
for (int i = 0; i < flagsWithoutForcedDecision.size(); i++) {
16131614
DecisionResponse<FeatureDecision> decision = decisionList.get(i);
1614-
boolean error = decision.isError();
16151615
String flagKey = flagsWithoutForcedDecision.get(i).getKey();
1616-
1617-
if (error) {
1618-
OptimizelyDecision optimizelyDecision = OptimizelyDecision.newErrorDecision(flagKey, user, DecisionMessage.DECISION_ERROR.reason(flagKey));
1619-
decisionMap.put(flagKey, optimizelyDecision);
1620-
if (validKeys.contains(flagKey)) {
1621-
validKeys.remove(flagKey);
1622-
}
1623-
}
1624-
16251616
flagDecisions.put(flagKey, decision.getResult());
16261617
decisionReasonsMap.get(flagKey).merge(decision.getReasons());
16271618
}

core-api/src/main/java/com/optimizely/ab/optimizelydecision/DecisionMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public enum DecisionMessage {
2121
SDK_NOT_READY("Optimizely SDK not configured properly yet."),
2222
FLAG_KEY_INVALID("No flag was found for key \"%s\"."),
2323
VARIABLE_VALUE_INVALID("Variable value for key \"%s\" is invalid or wrong type."),
24-
DECISION_ERROR("Decision service error occured for key \"%s\".");
24+
CMAB_ERROR("Failed to fetch CMAB data for experiment %s.");
2525

2626
private String format;
2727

0 commit comments

Comments
 (0)