From 2a58a272dee1b27e21bbc035808d6ab9d3184935 Mon Sep 17 00:00:00 2001 From: Jamie Sinn Date: Mon, 17 Jun 2024 14:47:27 -0400 Subject: [PATCH] call event --- .../managers/EnvironmentConfigManager.java | 5 +++ .../local/managers/EventQueueManager.java | 37 +++++++++++-------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/devcycle/sdk/server/local/managers/EnvironmentConfigManager.java b/src/main/java/com/devcycle/sdk/server/local/managers/EnvironmentConfigManager.java index ad68554..929dde0 100644 --- a/src/main/java/com/devcycle/sdk/server/local/managers/EnvironmentConfigManager.java +++ b/src/main/java/com/devcycle/sdk/server/local/managers/EnvironmentConfigManager.java @@ -149,6 +149,11 @@ private ProjectConfig getConfigResponse(Call call) throws DevCycl } this.configETag = currentETag; this.configLastModified = lastModified; + try { + this.eventQueueManager.queueSDKConfigEvent(call.request(), response); + } catch (Exception e) { + // Explicitly ignore - best effort. + } return response.body(); } else if (httpResponseCode == HttpResponseCode.NOT_MODIFIED) { DevCycleLogger.debug("Config not modified, using cache, etag: " + this.configETag); diff --git a/src/main/java/com/devcycle/sdk/server/local/managers/EventQueueManager.java b/src/main/java/com/devcycle/sdk/server/local/managers/EventQueueManager.java index 15ab6f8..59b7796 100644 --- a/src/main/java/com/devcycle/sdk/server/local/managers/EventQueueManager.java +++ b/src/main/java/com/devcycle/sdk/server/local/managers/EventQueueManager.java @@ -5,6 +5,7 @@ import com.devcycle.sdk.server.common.model.DevCycleEvent; import com.devcycle.sdk.server.common.model.DevCycleResponse; import com.devcycle.sdk.server.common.model.DevCycleUser; +import com.devcycle.sdk.server.common.model.ProjectConfig; import com.devcycle.sdk.server.local.api.DevCycleLocalEventsApiClient; import com.devcycle.sdk.server.local.bucketing.LocalBucketing; import com.devcycle.sdk.server.local.model.BucketedUserConfig; @@ -109,29 +110,33 @@ public void queueEvent(DevCycleUser user, DevCycleEvent event) throws Exception this.localBucketing.queueEvent(this.sdkKey, OBJECT_MAPPER.writeValueAsString(user), OBJECT_MAPPER.writeValueAsString(event)); } - public void queueSDKConfigEvent(Request req, okhttp3.Response response) throws Exception { + public void queueSDKConfigEvent(Request req, Response response) throws Exception { DevCycleUser user = new DevCycleUser(); user.setUserId(localBucketing.getClientUUID() + "@" + InetAddress.getLocalHost().getHostName()); DevCycleEvent event = new DevCycleEvent(); event.setType("sdkConfig"); event.setTarget(req.url().toString()); - if (response.networkResponse() != null) - event.setValue(BigDecimal.valueOf(response.networkResponse().receivedResponseAtMillis() - response.networkResponse().sentRequestAtMillis())); - else - event.setValue(BigDecimal.valueOf(-1)); - - event.setMetaData(Map.of( - "clientUUID", localBucketing.getClientUUID(), - "reqEtag", req.header("If-None-Match"), - "reqLastModified", req.header("If-Modified-Since"), - "resEtag", response.header("etag"), - "resLastModified", response.header("Last-Modified"), - "resRayId", response.header("cf-ray"), - "resStatus", response.code(), - "errMsg", response.code() != 200 && response.code() != 304 ? response.message() : null, - "sseConnected", null)); + try(okhttp3.Response res = response.raw()) { + if (res.isSuccessful()) { + event.setValue(BigDecimal.valueOf(res.networkResponse().receivedResponseAtMillis() - res.networkResponse().sentRequestAtMillis())); + } else { + event.setValue(BigDecimal.valueOf(-1)); + } + event.setMetaData(Map.of( + "clientUUID", localBucketing.getClientUUID(), + "reqEtag", req.header("If-None-Match"), + "reqLastModified", req.header("If-Modified-Since"), + "resEtag", res.header("etag"), + "resLastModified", res.header("Last-Modified"), + "resRayId", res.header("cf-ray"), + "resStatus", response.code(), + "errMsg", response.code() != 200 && response.code() != 304 ? response.message() : null, + "sseConnected", null)); + } catch (Exception e) { + event.setValue(BigDecimal.valueOf(-1)); + } queueEvent(user, event); }