Skip to content

Commit 3d36bd8

Browse files
authored
Upstream 16530 - Optimize HostList API: conditional DISTINCT + composite index on JobHostSummary (#583)
1 parent 308b8bd commit 3d36bd8

3 files changed

Lines changed: 22 additions & 1 deletion

File tree

awx/api/views/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1664,7 +1664,8 @@ def get_queryset(self):
16641664
if filter_string:
16651665
filter_qs = SmartFilter.query_from_string(filter_string)
16661666
qs &= filter_qs
1667-
return qs.distinct().with_latest_summary_id()
1667+
qs = qs.distinct()
1668+
return qs.with_latest_summary_id()
16681669

16691670
def list(self, *args, **kwargs):
16701671
try:
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 5.2.15 on 2026-07-02 21:42
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('main', '0205_approval_context_template'),
10+
]
11+
12+
operations = [
13+
migrations.AddIndex(
14+
model_name='jobhostsummary',
15+
index=models.Index(fields=['host', '-id'], name='main_jobhostsumm_host_id_desc'),
16+
),
17+
]

awx/main/models/jobs.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,9 @@ class Meta:
11631163
unique_together = [('job', 'host_name')]
11641164
verbose_name_plural = _('job host summaries')
11651165
ordering = ('-pk',)
1166+
indexes = [
1167+
models.Index(fields=['host', '-id'], name='main_jobhostsumm_host_id_desc'),
1168+
]
11661169

11671170
job = models.ForeignKey(
11681171
'Job',

0 commit comments

Comments
 (0)