diff --git a/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/custom_ops.py b/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/custom_ops.py index eab66fa6..17763615 100644 --- a/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/custom_ops.py +++ b/providers/openfeature-provider-flagd/src/openfeature/contrib/provider/flagd/resolvers/process/custom_ops.py @@ -20,14 +20,18 @@ def fractional(data: dict, *args: JsonLogicArg) -> typing.Optional[str]: bucket_by = args[0] args = args[1:] else: - bucket_by = data.get("targetingKey") + seed = data.get("$flagd", {}).get("flagKey", "") + targeting_key = data.get("targetingKey") + if not targeting_key: + logger.error("No targetingKey provided for fractional shorthand syntax.") + return None + bucket_by = seed + targeting_key if not bucket_by: + logger.error("No hashKey value resolved") return None - seed = data.get("$flagd", {}).get("flagKey", "") - hash_key = seed + bucket_by - hash_ratio = abs(mmh3.hash(hash_key)) / (2**31 - 1) + hash_ratio = abs(mmh3.hash(bucket_by)) / (2**31 - 1) bucket = int(hash_ratio * 100) for arg in args: diff --git a/providers/openfeature-provider-flagd/test-harness b/providers/openfeature-provider-flagd/test-harness index 3d2c5ea6..6197b3d9 160000 --- a/providers/openfeature-provider-flagd/test-harness +++ b/providers/openfeature-provider-flagd/test-harness @@ -1 +1 @@ -Subproject commit 3d2c5ea60de260d800b12a2d9447a25e8a995ac0 +Subproject commit 6197b3d956d358bf662e5b8e0aebdc4800480f6b