From 34ce2ba1ec2f3c5c0943b25a0011d2d3f68ee272 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 22 Aug 2024 09:20:27 -0300 Subject: [PATCH 1/3] chore: increase nginx proxy_read_timeout --- k8s/nginx-auth.conf | 4 ++++ k8s/nginx-datatracker.conf | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/k8s/nginx-auth.conf b/k8s/nginx-auth.conf index 6dd5d6ed562..a38b8f50c79 100644 --- a/k8s/nginx-auth.conf +++ b/k8s/nginx-auth.conf @@ -34,5 +34,9 @@ server { proxy_set_header X-Forwarded-For $${keepempty}proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $${keepempty}remote_addr; proxy_pass http://localhost:8000; + # Set timeouts longer than Cloudflare proxy limits + proxy_connect_timeout 60; # nginx default (Cf = 15) + proxy_read_timeout 120; # nginx default = 60 (Cf = 100) + proxy_send_timeout 60; # nginx default = 60 (Cf = 30) } } diff --git a/k8s/nginx-datatracker.conf b/k8s/nginx-datatracker.conf index 5cbc22e6c78..7c0dc85fd0e 100644 --- a/k8s/nginx-datatracker.conf +++ b/k8s/nginx-datatracker.conf @@ -23,6 +23,10 @@ server { proxy_set_header X-Forwarded-For $${keepempty}proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $${keepempty}remote_addr; proxy_pass http://localhost:8000; + # Set timeouts longer than Cloudflare proxy limits + proxy_connect_timeout 60; # nginx default (Cf = 15) + proxy_read_timeout 120; # nginx default = 60 (Cf = 100) + proxy_send_timeout 60; # nginx default = 60 (Cf = 30) client_max_body_size 0; # disable size check } } From 227e63a224d3683a7784a93d36a27dbdd83cd343 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 22 Aug 2024 11:00:39 -0300 Subject: [PATCH 2/3] refactor: speed up bluesheet_data The affiliation helper was extremely slow. Using queryset annotation speeds it up by almost an order of magnitude. --- ietf/meeting/utils.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index e3d8c830ee8..88c09fe2982 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -12,7 +12,8 @@ from django.conf import settings from django.contrib import messages -from django.db.models import Q +from django.db.models import OuterRef, Subquery, TextField, Q, Value +from django.db.models.functions import Coalesce from django.template.loader import render_to_string from django.utils import timezone from django.utils.encoding import smart_str @@ -149,19 +150,28 @@ def create_proceedings_templates(meeting): def bluesheet_data(session): - def affiliation(meeting, person): - # from OidcExtraScopeClaims.scope_registration() - email_list = person.email_set.values_list("address") - q = Q(person=person, meeting=meeting) | Q(email__in=email_list, meeting=meeting) - reg = MeetingRegistration.objects.filter(q).exclude(affiliation="").first() - return reg.affiliation if reg else "" - - attendance = Attended.objects.filter(session=session).order_by("time") + attendance = ( + Attended.objects.filter(session=session) + .annotate( + affiliation=Coalesce( + Subquery( + MeetingRegistration.objects.filter( + Q(meeting=session.meeting), + Q(person=OuterRef("person")) | Q(email=OuterRef("person__email")), + ).values("affiliation")[:1] + ), + Value(""), + output_field=TextField(), + ) + ).distinct() + .order_by("time") + ) + meeting = session.meeting return [ { "name": attended.person.plain_name(), - "affiliation": affiliation(meeting, attended.person), + "affiliation": attended.affiliation, } for attended in attendance ] From 6eb3935edbaa9a668fc674d790f0b342e7a728a1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 22 Aug 2024 11:49:57 -0300 Subject: [PATCH 3/3] chore: delint --- ietf/meeting/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index 88c09fe2982..b68a311f5da 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -167,7 +167,6 @@ def bluesheet_data(session): .order_by("time") ) - meeting = session.meeting return [ { "name": attended.person.plain_name(),