You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Limit the operators used to define contexts to only ==, making the resolution of overrides and experiments unabigious and not dependent on the time the override was created. This also enables some performance improvements in the resolution of context aware configs.
Why do this
Take an example
[city == london]
price = 10
units = pounds
[city IN [london, paris, delhi]]
price = 7.5
units = dollars
In the above cac defined, what will be the result for the query city = london?
Since cac resolves contexts by their weight and last_modified, the contexts in the example above are non-deterministic and can resolve to different configs based on which one was edited last. Imagine how much worse it will be when you have hundreds of contexts defined that overlap in this way.
Solution
Introduce a workspace config called strict mode. If this is enabled, overrides can be created only with contexts that use the operator == or is as we call from our frontend.
Exception
For the dimension variantIds, we will allow operators == and has to enable functionality we have defined in our experimentation clients which allow a entity to fall into multiple variants of experiments. Since we create and manage this dimension internally, there is no risk of non-deterministic resolution of this dimension
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Preface
Limit the operators used to define contexts to only
==
, making the resolution of overrides and experiments unabigious and not dependent on the time the override was created. This also enables some performance improvements in the resolution of context aware configs.Why do this
Take an example
In the above cac defined, what will be the result for the query
city = london
?Since cac resolves contexts by their weight and last_modified, the contexts in the example above are non-deterministic and can resolve to different configs based on which one was edited last. Imagine how much worse it will be when you have hundreds of contexts defined that overlap in this way.
Solution
Introduce a workspace config called strict mode. If this is enabled, overrides can be created only with contexts that use the operator
==
oris
as we call from our frontend.Exception
For the dimension
variantIds
, we will allow operators==
andhas
to enable functionality we have defined in our experimentation clients which allow a entity to fall into multiple variants of experiments. Since we create and manage this dimension internally, there is no risk of non-deterministic resolution of this dimensionBeta Was this translation helpful? Give feedback.
All reactions