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

Commit a77e817

Browse files
authored
prepare 4.2.2 release (#133)
1 parent 8013efb commit a77e817

File tree

10 files changed

+49
-38
lines changed

10 files changed

+49
-38
lines changed

.circleci/config.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,3 @@ jobs:
2222
path: ~/junit
2323
- store_artifacts:
2424
path: ~/junit
25-
- run:
26-
name: Upload FOSSA analysis (from master only)
27-
command: |
28-
if [[ ( -n "$FOSSA_API_KEY" ) && ( "$CIRCLE_BRANCH" == "master" ) ]]; then
29-
curl -s -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash;
30-
fossa init;
31-
FOSSA_API_KEY=$FOSSA_API_KEY fossa;
32-
fi

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33

44
All notable changes to the LaunchDarkly Java SDK will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org).
55

6+
## [4.2.2] - 2018-08-17
7+
### Fixed:
8+
- When logging errors related to the evaluation of a specific flag, the log message now always includes the flag key.
9+
- Exception stacktraces are now logged only at DEBUG level. Previously, some were being logged at ERROR level.
10+
611
## [4.2.1] - 2018-07-16
712
### Fixed:
813
- Should not permanently give up on posting events if the server returns a 400 error.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
version=4.2.1
1+
version=4.2.2
22
ossrhUsername=
33
ossrhPassword=

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ boolean matchesUserNoSegments(LDUser user) {
3838
JsonArray array = userValue.getAsJsonArray();
3939
for (JsonElement jsonElement : array) {
4040
if (!jsonElement.isJsonPrimitive()) {
41-
logger.error("Invalid custom attribute value in user object: " + jsonElement);
41+
logger.error("Invalid custom attribute value in user object for user key \"{}\": {}", user.getKey(), jsonElement);
4242
return false;
4343
}
4444
if (matchAny(jsonElement.getAsJsonPrimitive())) {
@@ -49,8 +49,8 @@ boolean matchesUserNoSegments(LDUser user) {
4949
} else if (userValue.isJsonPrimitive()) {
5050
return maybeNegate(matchAny(userValue.getAsJsonPrimitive()));
5151
}
52-
logger.warn("Got unexpected user attribute type: " + userValue.getClass().getName() + " for user key: "
53-
+ user.getKey() + " and attribute: " + attribute);
52+
logger.warn("Got unexpected user attribute type \"{}\" for user key \"{}\" and attribute \"{}\"",
53+
userValue.getClass().getName(), user.getKey(), attribute);
5454
return false;
5555
}
5656

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@ private void runMainLoop(BlockingQueue<EventProcessorMessage> inputChannel,
255255
message.completed();
256256
} catch (InterruptedException e) {
257257
} catch (Exception e) {
258-
logger.error("Unexpected error in event processor: " + e);
259-
logger.debug(e.getMessage(), e);
258+
logger.error("Unexpected error in event processor: {}", e.toString());
259+
logger.debug(e.toString(), e);
260260
}
261261
}
262262
}
@@ -493,8 +493,8 @@ public void run() {
493493
postEvents(eventsOut);
494494
}
495495
} catch (Exception e) {
496-
logger.error("Unexpected error in event processor: " + e);
497-
logger.debug(e.getMessage(), e);
496+
logger.error("Unexpected error in event processor: {}", e.toString());
497+
logger.debug(e.toString(), e);
498498
}
499499
synchronized (activeFlushWorkersCount) {
500500
activeFlushWorkersCount.decrementAndGet();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ EvalResult evaluate(LDUser user, FeatureStore featureStore, EventFactory eventFa
6565
List<Event.FeatureRequest> prereqEvents = new ArrayList<>();
6666

6767
if (user == null || user.getKey() == null) {
68-
logger.warn("Null user or null user key when evaluating flag: " + key + "; returning null");
68+
logger.warn("Null user or null user key when evaluating flag \"{}\"; returning null", key);
6969
return new EvalResult(null, prereqEvents);
7070
}
7171

@@ -87,7 +87,7 @@ private VariationAndValue evaluate(LDUser user, FeatureStore featureStore, List<
8787
FeatureFlag prereqFeatureFlag = featureStore.get(FEATURES, prereq.getKey());
8888
VariationAndValue prereqEvalResult = null;
8989
if (prereqFeatureFlag == null) {
90-
logger.error("Could not retrieve prerequisite flag: " + prereq.getKey() + " when evaluating: " + key);
90+
logger.error("Could not retrieve prerequisite flag \"{}\" when evaluating \"{}\"", prereq.getKey(), key);
9191
return null;
9292
} else if (prereqFeatureFlag.isOn()) {
9393
prereqEvalResult = prereqFeatureFlag.evaluate(user, featureStore, events, eventFactory);

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

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ public LDClient(String sdkKey, LDConfig config) {
9595
} catch (TimeoutException e) {
9696
logger.error("Timeout encountered waiting for LaunchDarkly client initialization");
9797
} catch (Exception e) {
98-
logger.error("Exception encountered waiting for LaunchDarkly client initialization", e);
98+
logger.error("Exception encountered waiting for LaunchDarkly client initialization: {}", e.toString());
99+
logger.debug(e.toString(), e);
99100
}
100101
if (!updateProcessor.initialized()) {
101102
logger.warn("LaunchDarkly client was not successfully initialized");
@@ -169,7 +170,8 @@ public Map<String, JsonElement> allFlags(LDUser user) {
169170
result.put(entry.getKey(), evalResult);
170171

171172
} catch (EvaluationException e) {
172-
logger.error("Exception caught when evaluating all flags:", e);
173+
logger.error("Exception caught for feature flag \"{}\" when evaluating all flags: {}", entry.getKey(), e.toString());
174+
logger.debug(e.toString(), e);
173175
}
174176
}
175177
return result;
@@ -209,9 +211,9 @@ public JsonElement jsonVariation(String featureKey, LDUser user, JsonElement def
209211
public boolean isFlagKnown(String featureKey) {
210212
if (!initialized()) {
211213
if (featureStore.initialized()) {
212-
logger.warn("isFlagKnown called before client initialized for feature flag " + featureKey + "; using last known values from feature store");
214+
logger.warn("isFlagKnown called before client initialized for feature flag \"{}\"; using last known values from feature store", featureKey);
213215
} else {
214-
logger.warn("isFlagKnown called before client initialized for feature flag " + featureKey + "; feature store unavailable, returning false");
216+
logger.warn("isFlagKnown called before client initialized for feature flag \"{}\"; feature store unavailable, returning false", featureKey);
215217
return false;
216218
}
217219
}
@@ -221,7 +223,8 @@ public boolean isFlagKnown(String featureKey) {
221223
return true;
222224
}
223225
} catch (Exception e) {
224-
logger.error("Encountered exception in LaunchDarkly client", e);
226+
logger.error("Encountered exception while calling isFlagKnown for feature flag \"{}\": {}", e.toString());
227+
logger.debug(e.toString(), e);
225228
}
226229

227230
return false;
@@ -230,23 +233,24 @@ public boolean isFlagKnown(String featureKey) {
230233
private JsonElement evaluate(String featureKey, LDUser user, JsonElement defaultValue, VariationType expectedType) {
231234
if (!initialized()) {
232235
if (featureStore.initialized()) {
233-
logger.warn("Evaluation called before client initialized for feature flag " + featureKey + "; using last known values from feature store");
236+
logger.warn("Evaluation called before client initialized for feature flag \"{}\"; using last known values from feature store", featureKey);
234237
} else {
235-
logger.warn("Evaluation called before client initialized for feature flag " + featureKey + "; feature store unavailable, returning default value");
238+
logger.warn("Evaluation called before client initialized for feature flag \"{}\"; feature store unavailable, returning default value", featureKey);
236239
sendFlagRequestEvent(eventFactory.newUnknownFeatureRequestEvent(featureKey, user, defaultValue));
237240
return defaultValue;
238241
}
239242
}
240243

244+
FeatureFlag featureFlag = null;
241245
try {
242-
FeatureFlag featureFlag = featureStore.get(FEATURES, featureKey);
246+
featureFlag = featureStore.get(FEATURES, featureKey);
243247
if (featureFlag == null) {
244-
logger.info("Unknown feature flag " + featureKey + "; returning default value");
248+
logger.info("Unknown feature flag \"{}\"; returning default value", featureKey);
245249
sendFlagRequestEvent(eventFactory.newUnknownFeatureRequestEvent(featureKey, user, defaultValue));
246250
return defaultValue;
247251
}
248252
if (user == null || user.getKey() == null) {
249-
logger.warn("Null user or null user key when evaluating flag: " + featureKey + "; returning default value");
253+
logger.warn("Null user or null user key when evaluating flag \"{}\"; returning default value", featureKey);
250254
sendFlagRequestEvent(eventFactory.newDefaultFeatureRequestEvent(featureFlag, user, defaultValue));
251255
return defaultValue;
252256
}
@@ -266,10 +270,15 @@ private JsonElement evaluate(String featureKey, LDUser user, JsonElement default
266270
return defaultValue;
267271
}
268272
} catch (Exception e) {
269-
logger.error("Encountered exception in LaunchDarkly client", e);
273+
logger.error("Encountered exception while evaluating feature flag \"{}\": {}", featureKey, e.toString());
274+
logger.debug(e.toString(), e);
275+
if (featureFlag == null) {
276+
sendFlagRequestEvent(eventFactory.newUnknownFeatureRequestEvent(featureKey, user, defaultValue));
277+
} else {
278+
sendFlagRequestEvent(eventFactory.newDefaultFeatureRequestEvent(featureFlag, user, defaultValue));
279+
}
280+
return defaultValue;
270281
}
271-
sendFlagRequestEvent(eventFactory.newUnknownFeatureRequestEvent(featureKey, user, defaultValue));
272-
return defaultValue;
273282
}
274283

275284
@Override
@@ -314,7 +323,8 @@ public String secureModeHash(LDUser user) {
314323
mac.init(new SecretKeySpec(sdkKey.getBytes(), HMAC_ALGORITHM));
315324
return Hex.encodeHexString(mac.doFinal(user.getKeyAsString().getBytes("UTF8")));
316325
} catch (InvalidKeyException | UnsupportedEncodingException | NoSuchAlgorithmException e) {
317-
logger.error("Could not generate secure mode hash", e);
326+
logger.error("Could not generate secure mode hash: {}", e.toString());
327+
logger.debug(e.toString(), e);
318328
}
319329
return null;
320330
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ static void annotateTransaction(String featureKey, String value) {
2828
try {
2929
addCustomParameter.invoke(null, featureKey, value);
3030
} catch (Exception e) {
31-
logger.error("Unexpected error in LaunchDarkly NewRelic integration");
31+
logger.error("Unexpected error in LaunchDarkly NewRelic integration: {}", e.toString());
32+
logger.debug(e.toString(), e);
3233
}
3334
}
3435
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public void run() {
7070
initFuture.set(null); // if client is initializing, make it stop waiting; has no effect if already inited
7171
}
7272
} catch (IOException e) {
73-
logger.error("Encountered exception in LaunchDarkly client when retrieving update", e);
73+
logger.error("Encountered exception in LaunchDarkly client when retrieving update: {}", e.toString());
74+
logger.debug(e.toString(), e);
7475
}
7576
}
7677
}, 0L, config.pollingIntervalMillis, TimeUnit.MILLISECONDS);

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ public void onMessage(String name, MessageEvent event) throws Exception {
133133
logger.info("Initialized LaunchDarkly client.");
134134
}
135135
} catch (IOException e) {
136-
logger.error("Encountered exception in LaunchDarkly client", e);
136+
logger.error("Encountered exception in LaunchDarkly client: {}", e.toString());
137+
logger.debug(e.toString(), e);
137138
}
138139
break;
139140
case INDIRECT_PATCH:
@@ -151,7 +152,8 @@ public void onMessage(String name, MessageEvent event) throws Exception {
151152
}
152153
}
153154
} catch (IOException e) {
154-
logger.error("Encountered exception in LaunchDarkly client", e);
155+
logger.error("Encountered exception in LaunchDarkly client: {}", e.toString());
156+
logger.debug(e.toString(), e);
155157
}
156158
break;
157159
default:
@@ -167,8 +169,8 @@ public void onComment(String comment) {
167169

168170
@Override
169171
public void onError(Throwable throwable) {
170-
logger.error("Encountered EventSource error: " + throwable.getMessage());
171-
logger.debug("", throwable);
172+
logger.error("Encountered EventSource error: {}" + throwable.toString());
173+
logger.debug(throwable.toString(), throwable);
172174
}
173175
};
174176

0 commit comments

Comments
 (0)