Skip to content

Commit a4b6923

Browse files
committed
log live variable parsing error when Gson parsing feature flags
Signed-off-by: wangjoshuah <wangjoshuah@gmail.com>
1 parent 079b0d7 commit a4b6923

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

core-api/src/main/java/com/optimizely/ab/config/parser/GsonHelpers.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
import com.google.gson.JsonDeserializationContext;
2121
import com.google.gson.JsonElement;
2222
import com.google.gson.JsonObject;
23+
import com.google.gson.JsonParseException;
2324
import com.google.gson.reflect.TypeToken;
25+
import com.optimizely.ab.bucketing.DecisionService;
2426
import com.optimizely.ab.config.Experiment;
2527
import com.optimizely.ab.config.Experiment.ExperimentStatus;
2628
import com.optimizely.ab.config.FeatureFlag;
2729
import com.optimizely.ab.config.LiveVariable;
2830
import com.optimizely.ab.config.LiveVariableUsageInstance;
2931
import com.optimizely.ab.config.TrafficAllocation;
3032
import com.optimizely.ab.config.Variation;
33+
import org.slf4j.Logger;
34+
import org.slf4j.LoggerFactory;
3135

3236
import java.lang.reflect.Type;
3337
import java.util.ArrayList;
@@ -38,6 +42,8 @@
3842

3943
final class GsonHelpers {
4044

45+
private static final Logger logger = LoggerFactory.getLogger(DecisionService.class);
46+
4147
private static List<Variation> parseVariations(JsonArray variationJson, JsonDeserializationContext context) {
4248
List<Variation> variations = new ArrayList<Variation>(variationJson.size());
4349
for (Object obj : variationJson) {
@@ -127,9 +133,17 @@ static FeatureFlag parseFeatureFlag(JsonObject featureFlagJson, JsonDeserializat
127133
experimentIds.add(experimentIdObj.getAsString());
128134
}
129135

130-
Type liveVariableType = new TypeToken<List<LiveVariable>>() {}.getType();
131-
List<LiveVariable> liveVariables = context.deserialize(featureFlagJson.getAsJsonArray("variables"),
132-
liveVariableType);
136+
List<LiveVariable> liveVariables = new ArrayList<LiveVariable>();
137+
try {
138+
Type liveVariableType = new TypeToken<List<LiveVariable>>() {
139+
}.getType();
140+
liveVariables = context.deserialize(featureFlagJson.getAsJsonArray("variables"),
141+
liveVariableType);
142+
}
143+
catch (JsonParseException exception) {
144+
logger.warn("Unable to parse variables for feature \"" + key
145+
+ "\". JsonParseException: " + exception);
146+
}
133147

134148
return new FeatureFlag(
135149
id,

0 commit comments

Comments
 (0)