View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0017577 | mantisbt | performance | public | 2014-08-07 19:46 | 2021-01-05 18:59 |
Reporter | dregad | Assigned To | dregad | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | assigned | Resolution | open | ||
Product Version | 1.2.17 | ||||
Target Version | 2.26.0 | ||||
Summary | 0017577: Improve print_user_option_list() performance | ||||
Description | On instances with large number of users, the function has very poor This is an issue e.g. when filtering issues by reporter or when using adm_config_report.php, especially when the current project is 'All Projects'. | ||||
Tags | No tags attached. | ||||
has duplicate | 0017737 | closed | atrol | adm_config_report.php is slow with larger number of users |
has duplicate | 0019942 | closed | atrol | Reporter list is loading way too long |
related to | 0017962 | closed | dregad | Implement auto-complete for reporter field in bug_update_page |
related to | 0017738 | new | return_dynamic_Filters.php performance with large number of users | |
related to | 0024124 | new | Editing the report of a bug crashes browser with large user base | |
related to | 0025666 | confirmed | Replace user selection list with an autocomplete widget progressive remote search |
PR https://github.com/mantisbt/mantisbt/pull/238 The proposed fix is for master, I plan to backport it to 1.2.x if accepted. |
|
Reminder sent to: dregad Should we target to 1.3.x or maybe even 2.0.x? |
|
The reason for targeting 1.2 was that our tracker was heavily affected by this issue. Now that we have upgraded it, a 1.3.x target is probably best (assuming I ever find the time to get to it :/). The impact is still major IMO, although not blocking for release since not so many instances are likely to be affected by this. |
|
for solving half of the problem: why not rewrite the user selector in filter section to fetch all users that appear in existing bugs? This would be a query (fine tuned to some degree by filter parameters), but surely less work on the server. And, for an improved resolution, change the select into an autocomplete widget (when available by js), with progressive remote search |
|
This is exactly where I want to go. I'm pretty sure I have a feature branch with initial research on this somehere, but I can't find it ATM. |
|
Maybe this one? Independet from AJAX some other optimizations that did not make their way into the product but might be worth to review them again. https://github.com/mantisbt/mantisbt/pull/238 |
|
^^^ regarding that: |
|
i have this branch with a rewrite of the affected functions this shows great improvement, as testing with 20k users, 0000054:0000100 projects |
|
Changing status to minor based on @dregad's 0017577:0051429 and offline discussion with @atrol since we are trying to identify blocking issues for v1.3. Though this may make it before the release, it is not blocking. |
|
cproensa's PR https://github.com/mantisbt/mantisbt/pull/769 (see related changeset below) greatly improves this performance issue. |
|
Independent from the AJAX approach and other optimizations, but will also enhance performance at least for some of the user lists, e.g. "Reporter" on "View Issues" page: Wouldn't it be better to list just the users that reported an issue for the current project (distinct reporter_id from bug table)? This will reduce the number of listed users and solve also the issue that we are not able to search for issues that have been reported by deactivated or deleted users, see 0010141. |
|
yes, that would be the simplest solution. For several filter fields this should be a valid approach.
but, irrc, then someone can complain that a reporter gets a hint of the existence of the deactivated users (i dont think this is an issue, just saying) Now that theres some will to change things it filter api, this is a thing that should be done |
|
We could add a new option for it, something like $g_show_deactivated_users_threshold = MANAGER; |
|
Unless someone objects, I'd like to mark this one as resolved, considering cproensa's commit MantisBT master b433e7e6 - on this tracker it takes about 3-5 seconds to load the reporters' list (about 35K users), which I think is acceptable. Other ideas for improvement should be tracked separately. |
|
This is still quite slow. |
|
@cproensa wrote in 0017577:0051728
Opened 0025666 to track this |
|
MantisBT: master b433e7e6 2016-04-29 13:13 Committer: dregad Details Diff |
Don't cache users in project_get_all_user_rows() Most of the callers of project_get_all_user_rows use the return array directly, and do not need to fetch the user rows. There's no need to always cache the calculated users. Especially when the user list is very large, eg: print users option list with public access. By not caching them, memory and time is saved (see issue 0017577) Of all the callers of this function, those that actually use the cached data are: - email_notify_new_account(): Adds an explicit call to cache - email_collect_recipients(): Was already calling to cache users Signed-off-by: Damien Regad <dregad@mantisbt.org> |
Affected Issues 0017577 |
|
mod - core/email_api.php | Diff File | ||
mod - core/project_api.php | Diff File |