diff --git a/core-api/src/main/java/com/optimizely/ab/Optimizely.java b/core-api/src/main/java/com/optimizely/ab/Optimizely.java index f06af8082..2f63ef535 100644 --- a/core-api/src/main/java/com/optimizely/ab/Optimizely.java +++ b/core-api/src/main/java/com/optimizely/ab/Optimizely.java @@ -252,10 +252,10 @@ private void sendImpression(@Nonnull ProjectConfig projectConfig, * @param ruleType It can either be experiment in case impression event is sent from activate or it's feature-test or rollout */ private void sendImpression(@Nonnull ProjectConfig projectConfig, - @Nonnull Experiment experiment, + @Nullable Experiment experiment, @Nonnull String userId, @Nonnull Map filteredAttributes, - @Nonnull Variation variation, + @Nullable Variation variation, @Nonnull String flagKey, @Nonnull String ruleType, @Nonnull boolean enabled) { @@ -425,15 +425,6 @@ private Boolean isFeatureEnabled(@Nonnull ProjectConfig projectConfig, if (featureDecision.decisionSource != null) { decisionSource = featureDecision.decisionSource; } - sendImpression( - projectConfig, - featureDecision.experiment, - userId, - copiedAttributes, - featureDecision.variation, - featureKey, - decisionSource.toString(), - featureEnabled); if (featureDecision.variation != null) { // This information is only necessary for feature tests. @@ -448,6 +439,15 @@ private Boolean isFeatureEnabled(@Nonnull ProjectConfig projectConfig, featureEnabled = true; } } + sendImpression( + projectConfig, + featureDecision.experiment, + userId, + copiedAttributes, + featureDecision.variation, + featureKey, + decisionSource.toString(), + featureEnabled); DecisionNotification decisionNotification = DecisionNotification.newFeatureDecisionNotificationBuilder() .withUserId(userId)