improve performance of wp mentionable users filter #17872
Merged
+20
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ticket
https://community.openproject.org/wp/61365
What are you trying to accomplish?
Improve the performance of the
Queries::Principals::Filters::MentionableOnWorkPackageFilter
which is central for returning the users available when trying to mention somebody in a work package comment. On some SaaS instances, theapi/v3/principals
endpoint using this filter currently has an impact of 50%.This is caused in part by the filter, when checking for the allowed values fetching the ids of all work packages the requesting user can see.
This is done to validate that the filter is not used for probing for information. While this is necessary to be done, it can be done in a more performant way. Instead of fetching all the ids and then comparing those to the filter's values, the filter can check within the DB that the values are within the visible scope using ARs
exists?
functionality.This mechanism should be applied to other
HugeList
filters as well but this is out of scope for this drive by fix.