Skip to content

Commit c56e769

Browse files
committed
Set variable eval status
1 parent f4fc363 commit c56e769

File tree

2 files changed

+29
-25
lines changed

2 files changed

+29
-25
lines changed

src/main/java/com/devcycle/sdk/server/local/managers/EnvironmentConfigManager.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,11 @@ private ProjectConfig getResponseWithRetries(Call<ProjectConfig> call, int maxRe
113113

114114
private ProjectConfig getConfigResponse(Call<ProjectConfig> call) throws DevCycleException {
115115
ErrorResponse errorResponse = ErrorResponse.builder().build();
116-
Response<ProjectConfig> response;
116+
Response<ProjectConfig> response = null;
117117

118118
try {
119119
response = call.execute();
120+
120121
} catch (JsonParseException badJsonExc) {
121122
// Got a valid status code but the response body was not valid json,
122123
// need to ignore this attempt and let the polling retry
@@ -125,11 +126,16 @@ private ProjectConfig getConfigResponse(Call<ProjectConfig> call) throws DevCycl
125126
} catch (IOException e) {
126127
errorResponse.setMessage(e.getMessage());
127128
throw new DevCycleException(HttpResponseCode.byCode(500), errorResponse);
129+
} finally {
130+
try {
131+
this.eventQueueManager.queueSDKConfigEvent(call.request(), response, errorResponse);
132+
} catch (Exception e) {
133+
// Explicitly ignore - best effort.
134+
}
128135
}
129136

130137
HttpResponseCode httpResponseCode = HttpResponseCode.byCode(response.code());
131138
errorResponse.setMessage("Unknown error");
132-
133139
if (response.isSuccessful()) {
134140
String currentETag = response.headers().get("ETag");
135141
String lastModified = response.headers().get("Last-Modified");
@@ -149,21 +155,12 @@ private ProjectConfig getConfigResponse(Call<ProjectConfig> call) throws DevCycl
149155
}
150156
this.configETag = currentETag;
151157
this.configLastModified = lastModified;
152-
try {
153-
this.eventQueueManager.queueSDKConfigEvent(call.request(), response);
154-
} catch (Exception e) {
155-
// Explicitly ignore - best effort.
156-
}
158+
157159
return response.body();
158160
} else if (httpResponseCode == HttpResponseCode.NOT_MODIFIED) {
159161
DevCycleLogger.debug("Config not modified, using cache, etag: " + this.configETag);
160162
return this.config;
161163
} else {
162-
try {
163-
this.eventQueueManager.queueSDKConfigEvent(call.request(), response);
164-
} catch (Exception e) {
165-
// Explicitly ignore - best effort.
166-
}
167164
if (response.errorBody() != null) {
168165
try {
169166
errorResponse = OBJECT_MAPPER.readValue(response.errorBody().string(), ErrorResponse.class);

src/main/java/com/devcycle/sdk/server/local/managers/EventQueueManager.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import com.devcycle.sdk.server.common.api.IDevCycleApi;
44
import com.devcycle.sdk.server.common.logging.DevCycleLogger;
5-
import com.devcycle.sdk.server.common.model.DevCycleEvent;
6-
import com.devcycle.sdk.server.common.model.DevCycleResponse;
7-
import com.devcycle.sdk.server.common.model.DevCycleUser;
8-
import com.devcycle.sdk.server.common.model.ProjectConfig;
5+
import com.devcycle.sdk.server.common.model.*;
96
import com.devcycle.sdk.server.local.api.DevCycleLocalEventsApiClient;
107
import com.devcycle.sdk.server.local.bucketing.LocalBucketing;
118
import com.devcycle.sdk.server.local.model.BucketedUserConfig;
@@ -111,27 +108,37 @@ public void queueEvent(DevCycleUser user, DevCycleEvent event) throws Exception
111108
this.localBucketing.queueEvent(this.sdkKey, OBJECT_MAPPER.writeValueAsString(user), OBJECT_MAPPER.writeValueAsString(event));
112109
}
113110

114-
public void queueSDKConfigEvent(Request req, Response<ProjectConfig> response) throws Exception {
111+
public void queueSDKConfigEvent(Request req, Response<ProjectConfig> response, ErrorResponse errorResponse) throws Exception {
115112
DevCycleUser user = new DevCycleUser();
116113
user.setUserId(localBucketing.getClientUUID() + "@" + InetAddress.getLocalHost().getHostName());
117114
DevCycleEvent event = new DevCycleEvent();
118115
event.setType("sdkConfig");
119116
event.setTarget(req.url().toString());
120117

121-
try (okhttp3.Response res = response.raw().networkResponse()) {
122-
event.setValue(BigDecimal.valueOf(res.receivedResponseAtMillis() - res.sentRequestAtMillis()));
123-
} catch (Exception e) {
118+
if (response != null) {
119+
try (okhttp3.Response res = response.raw().networkResponse()) {
120+
event.setValue(BigDecimal.valueOf(res.receivedResponseAtMillis() - res.sentRequestAtMillis()));
121+
} catch (Exception e) {
122+
event.setValue(BigDecimal.valueOf(-1));
123+
}
124+
} else {
124125
event.setValue(BigDecimal.valueOf(-1));
125126
}
126127
HashMap<String, Object> metaData = new HashMap<>();
127128
metaData.put("clientUUID", localBucketing.getClientUUID());
128129
metaData.put("reqEtag", req.header("If-None-Match"));
129130
metaData.put("reqLastModified", req.header("If-Modified-Since"));
130-
metaData.put("resEtag", response.headers().get("etag"));
131-
metaData.put("resLastModified", response.headers().get("Last-Modified"));
132-
metaData.put("resRayId", response.headers().get("cf-ray"));
133-
metaData.put("resStatus", response.code());
134-
metaData.put("errMsg", response.code() != 200 && response.code() != 304 ? response.message() : null);
131+
if (response != null) {
132+
metaData.put("resEtag", response.headers().get("etag"));
133+
metaData.put("resLastModified", response.headers().get("Last-Modified"));
134+
metaData.put("resRayId", response.headers().get("cf-ray"));
135+
metaData.put("resStatus", response.code());
136+
metaData.put("errMsg", response.code() != 200 && response.code() != 304 ? response.message() : null);
137+
} else if (errorResponse != null) {
138+
metaData.put("resStatus", errorResponse.getStatusCode());
139+
metaData.put("errMsg", errorResponse.getMessage());
140+
}
141+
135142
metaData.put("sseConnected", null);
136143
event.setMetaData(metaData);
137144
queueEvent(user, event);

0 commit comments

Comments
 (0)