Skip to content
This repository was archived by the owner on May 30, 2024. It is now read-only.

Commit adceb4a

Browse files
committed
Merge pull request #47 from launchdarkly/dr/VariationNullCheck
Add support for debugStreaming config param. Add null check in Variation.equals()
2 parents 918a6e3 + 67375bb commit adceb4a

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/main/java/com/launchdarkly/client/LDClient.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,14 @@ private boolean evaluate(String featureKey, LDUser user, boolean defaultValue) {
200200

201201
try {
202202
FeatureRep<Boolean> result = (FeatureRep<Boolean>) config.featureStore.get(featureKey);
203-
if (result == null) {
203+
if (result != null) {
204+
if (config.stream && config.debugStreaming) {
205+
FeatureRep<Boolean> pollingResult = requestor.makeRequest(featureKey, true);
206+
if (!result.equals(pollingResult)) {
207+
logger.warn("Mismatch between streaming and polling feature! Streaming: {} Polling: {}", result, pollingResult);
208+
}
209+
}
210+
} else {
204211
logger.warn("Unknown feature flag " + featureKey + "; returning default value: ");
205212
return defaultValue;
206213
}

src/main/java/com/launchdarkly/client/Variation.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,17 @@ public boolean equals(Object o) {
3939
Variation<?> variation = (Variation<?>) o;
4040

4141
if (weight != variation.weight) return false;
42-
if (!value.equals(variation.value)) return false;
43-
if (!userTarget.equals(variation.userTarget)) return false;
44-
return targets.equals(variation.targets);
45-
42+
if (value != null ? !value.equals(variation.value) : variation.value != null) return false;
43+
if (userTarget != null ? !userTarget.equals(variation.userTarget) : variation.userTarget != null) return false;
44+
return targets != null ? targets.equals(variation.targets) : variation.targets == null;
4645
}
4746

4847
@Override
4948
public int hashCode() {
50-
int result = value.hashCode();
49+
int result = value != null ? value.hashCode() : 0;
5150
result = 31 * result + weight;
52-
result = 31 * result + userTarget.hashCode();
53-
result = 31 * result + targets.hashCode();
51+
result = 31 * result + (userTarget != null ? userTarget.hashCode() : 0);
52+
result = 31 * result + (targets != null ? targets.hashCode() : 0);
5453
return result;
5554
}
5655

0 commit comments

Comments
 (0)