mirror of
https://github.com/ansible/awx.git
synced 2026-03-20 02:17:37 -02:30
Ditch some expensive prefetching for Hosts
This prefetching gets really expensive when we have a large number of hosts, it's far less expensive to just go out and do subsequent queries to pull this data in. (dropped aggregate query time down from ~2400ms to ~180ms)
This commit is contained in:
@@ -365,10 +365,11 @@ class HostAccess(BaseAccess):
|
|||||||
inv_qs = Inventory.accessible_objects(self.user, 'read_role')
|
inv_qs = Inventory.accessible_objects(self.user, 'read_role')
|
||||||
group_qs = Group.accessible_objects(self.user, 'read_role')
|
group_qs = Group.accessible_objects(self.user, 'read_role')
|
||||||
qs = (self.model.objects.filter(inventory=inv_qs) | self.model.objects.filter(groups=group_qs)).distinct()
|
qs = (self.model.objects.filter(inventory=inv_qs) | self.model.objects.filter(groups=group_qs)).distinct()
|
||||||
qs = qs.select_related('created_by', 'modified_by', 'inventory',
|
#qs = qs.select_related('created_by', 'modified_by', 'inventory',
|
||||||
'last_job__job_template',
|
# 'last_job__job_template',
|
||||||
'last_job_host_summary__job')
|
# 'last_job_host_summary__job')
|
||||||
return qs.prefetch_related('groups').all()
|
#return qs.prefetch_related('groups').all()
|
||||||
|
return qs
|
||||||
|
|
||||||
def can_read(self, obj):
|
def can_read(self, obj):
|
||||||
return obj and any(self.user in grp.read_role for grp in obj.groups.all()) or self.user in obj.inventory.read_role
|
return obj and any(self.user in grp.read_role for grp in obj.groups.all()) or self.user in obj.inventory.read_role
|
||||||
|
|||||||
Reference in New Issue
Block a user