Skip to content

Commit 1f24982

Browse files
committed
Reuse empty local evaluation results
1 parent b238089 commit 1f24982

1 file changed

Lines changed: 26 additions & 26 deletions

File tree

posthog-server/src/main/java/com/posthog/server/internal/PostHogFeatureFlags.kt

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ internal class PostHogFeatureFlags(
173173
if (flagDef != null) {
174174
try {
175175
config.logger.log("Attempting local evaluation for flag '$key' for distinctId: $distinctId")
176-
val props = (personProperties ?: emptyMap()).toMutableMap()
176+
val props = (personProperties ?: EMPTY_PROPERTIES).toMutableMap()
177177

178178
val result =
179179
computeFlagLocally(
@@ -248,7 +248,7 @@ internal class PostHogFeatureFlags(
248248

249249
config.logger.log("Attempting local evaluation for distinctId: $distinctId")
250250
val localFlags = mutableMapOf<String, FeatureFlag>()
251-
val props = (personProperties ?: emptyMap()).toMutableMap()
251+
val props = (personProperties ?: EMPTY_PROPERTIES).toMutableMap()
252252

253253
// Evaluate all flags locally
254254
for ((key, flagDef) in currentFlagDefinitions) {
@@ -408,7 +408,7 @@ internal class PostHogFeatureFlags(
408408
if (!localEvaluation) {
409409
return
410410
}
411-
if (personalApiKey.isNullOrBlank()) {
411+
if (personalApiKey == null) {
412412
logMissingPersonalApiKey()
413413
return
414414
}
@@ -539,7 +539,7 @@ internal class PostHogFeatureFlags(
539539
return
540540
}
541541

542-
if (personalApiKey.isNullOrBlank()) {
542+
if (personalApiKey == null) {
543543
logMissingPersonalApiKey()
544544
return
545545
}
@@ -615,15 +615,15 @@ internal class PostHogFeatureFlags(
615615
return evaluator.matchFeatureFlagProperties(
616616
flag = flag,
617617
distinctId = evaluationId,
618-
properties = evaluationProperties ?: emptyMap(),
619-
cohortProperties = cohorts ?: emptyMap(),
618+
properties = evaluationProperties ?: EMPTY_PROPERTIES,
619+
cohortProperties = cohorts ?: EMPTY_COHORT_PROPERTIES,
620620
flagsByKey = flags,
621621
evaluationCache = evaluationCache,
622622
)
623623
}
624624

625625
private fun localEvaluationEnabled(): Boolean {
626-
return localEvaluation && !personalApiKey.isNullOrBlank()
626+
return localEvaluation && personalApiKey != null
627627
}
628628

629629
private fun logMissingPersonalApiKey() {
@@ -723,16 +723,9 @@ internal class PostHogFeatureFlags(
723723
onlyEvaluateLocally: Boolean,
724724
disableGeoip: Boolean,
725725
): EvaluateFlagsResult {
726-
if (onlyEvaluateLocally && personalApiKey.isNullOrBlank()) {
726+
if (onlyEvaluateLocally && personalApiKey == null) {
727727
logMissingPersonalApiKey()
728-
return EvaluateFlagsResult(
729-
flags = emptyMap(),
730-
locallyEvaluated = emptyMap(),
731-
requestId = null,
732-
evaluatedAt = null,
733-
definitionsLoadedAt = definitionsLoadedAt,
734-
responseError = null,
735-
)
728+
return EMPTY_EVALUATE_FLAGS_RESULT
736729
}
737730

738731
val cacheKey =
@@ -745,7 +738,7 @@ internal class PostHogFeatureFlags(
745738
disableGeoip = disableGeoip,
746739
)
747740
cache.getEntry(cacheKey)?.let { entry ->
748-
val flags = entry.flags ?: emptyMap()
741+
val flags = entry.flags ?: EMPTY_FLAGS
749742
return EvaluateFlagsResult(
750743
flags = flags,
751744
locallyEvaluated = flags.mapValues { isLocallyEvaluated(it.value) },
@@ -787,14 +780,7 @@ internal class PostHogFeatureFlags(
787780
}
788781

789782
if (onlyEvaluateLocally) {
790-
return EvaluateFlagsResult(
791-
flags = emptyMap(),
792-
locallyEvaluated = emptyMap(),
793-
requestId = null,
794-
evaluatedAt = null,
795-
definitionsLoadedAt = definitionsLoadedAt,
796-
responseError = null,
797-
)
783+
return EMPTY_EVALUATE_FLAGS_RESULT
798784
}
799785

800786
val remoteFlags =
@@ -805,7 +791,7 @@ internal class PostHogFeatureFlags(
805791
groupProperties,
806792
flagKeys,
807793
disableGeoip,
808-
) ?: emptyMap()
794+
) ?: EMPTY_FLAGS
809795
val entry = cache.getEntry(cacheKey)
810796
return EvaluateFlagsResult(
811797
flags = remoteFlags,
@@ -861,5 +847,19 @@ internal class PostHogFeatureFlags(
861847
internal companion object {
862848
internal const val LOCAL_EVALUATION_REASON_CODE: String = "local_evaluation"
863849
internal const val LOCAL_EVALUATION_REASON_DESCRIPTION: String = "Evaluated locally"
850+
851+
private val EMPTY_PROPERTIES: Map<String, Any?> = emptyMap()
852+
private val EMPTY_COHORT_PROPERTIES: Map<String, PropertyGroup> = emptyMap()
853+
private val EMPTY_FLAGS: Map<String, FeatureFlag> = emptyMap()
854+
private val EMPTY_LOCALLY_EVALUATED: Map<String, Boolean> = emptyMap()
855+
private val EMPTY_EVALUATE_FLAGS_RESULT =
856+
EvaluateFlagsResult(
857+
flags = EMPTY_FLAGS,
858+
locallyEvaluated = EMPTY_LOCALLY_EVALUATED,
859+
requestId = null,
860+
evaluatedAt = null,
861+
definitionsLoadedAt = null,
862+
responseError = null,
863+
)
864864
}
865865
}

0 commit comments

Comments
 (0)