Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion treeherder/etl/artifact.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def store_job_artifacts(artifact_data):
continue

try:
job = Job.objects.get(guid=job_guid)
job = Job.objects.select_related("repository").get(guid=job_guid)
except Job.DoesNotExist:
logger.error("load_job_artifacts: No job_id for guid %s", job_guid)
continue
Expand Down
6 changes: 4 additions & 2 deletions treeherder/etl/classification_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ def get_push(self, task_route):
revision_field = "revision__startswith" if len(revision) < 40 else "revision"
filter_kwargs = {"repository": repository, revision_field: revision}

push = Push.objects.get(**filter_kwargs)
push = Push.objects.select_related("repository").get(**filter_kwargs)
except Push.DoesNotExist:
logger.info("Job with unsupported revision: %s", revision)
raise
Expand Down Expand Up @@ -154,7 +154,9 @@ def autoclassify_failures(self, failures, classification):

# Retrieving the relevant Job
try:
job = Job.objects.get(taskcluster_metadata__task_id=task["task_id"])
job = Job.objects.select_related("repository").get(
taskcluster_metadata__task_id=task["task_id"]
)
except Job.DoesNotExist:
logger.error(
"Job associated to the TC task %s does not exist and could not be autoclassified.",
Expand Down
2 changes: 1 addition & 1 deletion treeherder/log_parser/intermittents.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def _check_and_mark_infra(current_job, job_ids, push_ids):


def check_and_mark_intermittent(job_id):
current_job = Job.objects.get(id=job_id)
current_job = Job.objects.select_related("repository", "job_type", "push").get(id=job_id)
jtname = current_job.job_type.name.strip("-cf")
ids = [current_job.push.id]

Expand Down
7 changes: 6 additions & 1 deletion treeherder/log_parser/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,12 @@ def parse_logs(job_id, job_log_ids, priority):
# Attach task_id/run_id/job_id as GCP log labels to every line emitted while
# parsing this job's logs (including deeper failure-line processing).
with log_context(**job_log_labels(job), component="log_parser"):
job_logs = JobLog.objects.filter(id__in=job_log_ids, job=job)
# select_related the job/repository chain: the parsers below access
# job_log.job.repository lazily, and by then the log downloads may have
# outlived the task's original DB connection.
job_logs = JobLog.objects.filter(id__in=job_log_ids, job=job).select_related(
"job__repository"
)

if len(job_log_ids) != len(job_logs):
logger.warning(
Expand Down
8 changes: 6 additions & 2 deletions treeherder/perf/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
@retryable_task(name="generate-alerts", max_retries=10)
def generate_alerts(signature_id):
newrelic.agent.add_custom_attribute("signature_id", str(signature_id))
signature = PerformanceSignature.objects.get(id=signature_id)
signature = PerformanceSignature.objects.select_related("repository", "framework").get(
id=signature_id
)
generate_new_alerts_in_series(signature)
# Test alert generation is temporarily disabled.
# try:
Expand Down Expand Up @@ -45,7 +47,9 @@ def ingest_perfherder_data(job_id, job_log_ids):
newrelic.agent.add_custom_attribute("job_id", str(job_id))

job = Job.objects.get(id=job_id)
job_artifacts = JobLog.objects.filter(id__in=job_log_ids, job=job)
job_artifacts = JobLog.objects.filter(id__in=job_log_ids, job=job).select_related(
"job__repository"
)

if len(job_log_ids) != len(job_artifacts):
logger.warning(
Expand Down
2 changes: 1 addition & 1 deletion treeherder/webapp/api/push.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ def health_summary(self, request, project):
try:
pushes = Push.objects.filter(
revision__in=revision.split(","), repository__name=project
)
).select_related("repository")
except Push.DoesNotExist:
return Response(f"No push with revision: {revision}", status=HTTP_404_NOT_FOUND)
else:
Expand Down