-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bulk Evaluation Design and Goals #31
Comments
I see the problem and why a solution is desirable. I think a better place for the data you describe would be a query param though... either as a repeated array, or as some kind of identifier for a flags set, or as a filter expression. My reasoning:
|
👋🏻 I think from the Flipt side (ha) we would like more clarification as to the expected behavior if a user does not provide a Sorry if this is too provider (Flipt) specific, but I think to @erka 's point, the current spec is a bit too open to interpretation. Currently we return an error, which I think is what @lukas-reining ran into when testing Flipt OFREP with the ofrep web provider. I think because of this error Flipt bulk eval is not technically compliant. From our side we could do one of a few things:
From the OFREP side, I can also think of an option that would potentially also help the clients: Perhaps we could use the existing This would at least allow the |
Sorry for the delay @erka @markphelps.
Yes, this is why it is not compliant to "our idea" of this endpoint.
I totally see the problem of observability and metrics gathering here.
@markphelps I think this option could only be paired with some kind of specified The greatest leaver to service compliance could be an endpoint that returns the rule set instead of the evaluated flags. I would like to discuss the pros and cons of |
The discussion has been initiated here[1].
It would be helpful to have more detailed documentation for the bulk evaluation endpoint, as the current documentation may be open to different interpretations.
From the original discussion, it seems the design primarily focuses on
static context evaluation
only. However, this concept isn’t thoroughly explained in the documentation[2] or the OpenAPI specification, which can cause confusion - especially for those working with highly dynamic evaluation contexts in backend services, cron jobs, or batch processing. They may viewbulk
evaluation as a way to reduce network costs compared to multiple single evaluation calls and could end up using OFREP incorrectly due to this lack of clarity.Additionally, the ADRS 0004-no-flag-filter-in-bulk-evaluation-request.md[3] mentions that systems
that rely on a list of flags
may use an evaluation context with aflags
attribute, but it doesn’t clarify how the system should behave ifflags
attribute is missing in the evaluation context. In our case, Flipt initially assumed that an error should be returned, since we want a list of flags to be provided. However, the original issue[1] suggests that theflags
attribute should be treated as an optional filter. It would be beneficial to address this in the specification as well.Lastly, it would be valuable to understand the design for insights with bulk evaluation. The evaluation of everything at once introduces additional complexities for both the provider and client in managing the lifecycle of flags. If all flags are evaluated each time on the provider’s side, there’s no indication of which flags are active or stale. Similarly, the protocol does not provide any endpoint where client could share how many times each flag has been evaluated. As a result, both the provider and client are left to make assumptions about what's happening within the system. This is one of aspects why Flipt would like to have
flags
in evaluation context for bulk evaluation.[1] flipt-io/flipt#3412
[2] https://github.com/open-feature/protocol/blob/main/service/adrs/0002-two-evaluation-endpoints.md
[3] https://github.com/open-feature/protocol/blob/main/service/adrs/0004-no-flag-filter-in-bulk-evaluation-request.md
The text was updated successfully, but these errors were encountered: