Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Avoid duplicate host load in allowed_hosts_obj
MiqRequestWorkflow#allowed_hosts_obj originally would collect the known host ids from the ems tree it has already built up and combine those with any hosts associated to the storage it had, and then do a query against the `src[:ems]`'s hosts and select only the ones that match the original set of host ids. From there, it would take that list of host objects, throw it through, Rbac which would also make another query to find the hosts that match that list AND filter it based on the user (throwing out the previously instantiated hosts that were used as the intermediate list from `src[:ems]`). This change simply avoids creating that intermediate list by replacing the `.find_all` with a `.where`, meaning we pass a scoped query to Rbac that hasn't been executed until it has the user filter applied to it. Metrics ------- When selecting the `"Lifecycle" -> "Publish this VM to a Template"` button: **Before** | ms | queries | query (ms) | rows | | ---: | ---: | ---: | ---: | | 18613 | 2062 | 1463.7 | 70017 | | 17695 | 2062 | 1475.5 | 70017 | | 17774 | 2062 | 1578.4 | 70017 | **After** | ms | queries | query (ms) | rows | | ---: | ---: | ---: | ---: | | 18553 | 2061 | 1560.7 | 61866 | | 17385 | 2061 | 1564.6 | 61866 | | 17468 | 2061 | 1437.5 | 61866 |
- Loading branch information