From e33a446cc7ef7e47c977e9abafdf47526b8629ff Mon Sep 17 00:00:00 2001 From: Kevin Falcone Date: Tue, 24 Nov 2015 13:44:16 -0500 Subject: [PATCH 1/5] Ugrade to 1.8.7 --- requirements/edx/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index cbd0eee51f..a8219f0932 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -31,7 +31,7 @@ django-method-override==0.1.0 # We need a fix to DRF 3.2.x, for now use it from our own cherry-picked repo #djangorestframework>=3.1,<3.2 git+https://github.com/edx/django-rest-framework.git@3c72cb5ee5baebc4328947371195eae2077197b0#egg=djangorestframework==3.2.3 -django==1.8.5 +django==1.8.7 edx-rest-api-client==1.2.1 elasticsearch==0.4.5 facebook-sdk==0.4.0 From dd1d680d4f52df824d1daa3cce3b737b6d0c2452 Mon Sep 17 00:00:00 2001 From: chrisndodge Date: Tue, 24 Nov 2015 13:55:51 -0500 Subject: [PATCH 2/5] Use edx-proctoring 0.11.6 --- requirements/edx/github.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index e48349a788..52f7ede068 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -58,7 +58,7 @@ git+https://github.com/edx/edx-lint.git@v0.3.2#egg=edx_lint==0.3.2 -e git+https://github.com/edx/edx-reverification-block.git@0.0.5#egg=edx-reverification-block==0.0.5 -e git+https://github.com/edx/edx-user-state-client.git@30c0ad4b9f57f8d48d6943eb585ec8a9205f4469#egg=edx-user-state-client git+https://github.com/edx/edx-organizations.git@release-2015-11-17-with-django-18#egg=edx-organizations==0.1.8 -git+https://github.com/edx/edx-proctoring.git@0.11.2#egg=edx-proctoring==0.11.2 +git+https://github.com/edx/edx-proctoring.git@0.11.6#egg=edx-proctoring==0.11.6 # Third Party XBlocks -e git+https://github.com/mitodl/edx-sga@172a90fd2738f8142c10478356b2d9ed3e55334a#egg=edx-sga From 464ce73ca588dcde02637a499fbe5d8c8b8e9969 Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Mon, 30 Nov 2015 10:11:22 -0500 Subject: [PATCH 3/5] Upgrade ORA version to fix staff tools styling --- requirements/edx/github.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index 52f7ede068..82792d9661 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -41,7 +41,7 @@ git+https://github.com/edx/lettuce.git@0.2.20.002#egg=lettuce==0.2.20.002 -e git+https://github.com/edx/event-tracking.git@0.2.1#egg=event-tracking==0.2.1 -e git+https://github.com/edx/django-splash.git@v0.2#egg=django-splash==0.2 -e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock --e git+https://github.com/edx/edx-ora2.git@0.2.3#egg=ora2==0.2.3 +-e git+https://github.com/edx/edx-ora2.git@0.2.4#egg=ora2==0.2.4 -e git+https://github.com/edx/edx-submissions.git@0.1.3#egg=edx-submissions==0.1.3 -e git+https://github.com/edx/opaque-keys.git@27dc382ea587483b1e3889a3d19cbd90b9023a06#egg=opaque-keys git+https://github.com/edx/ease.git@release-2015-07-14#egg=ease==0.1.3 From 12130c800663cd8419bf48937802e70e5ef143bd Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Mon, 30 Nov 2015 08:59:55 -0500 Subject: [PATCH 4/5] Fixing CohortMembership and ATOMIC_REQUESTS issue What had been happening was related to the fact that ATOMIC_REQUESTS is now on, preventing writing to the database until a request is completed. The problem with that was that CohortMemberships, with their explicit transaction handling, were breaking that rule and touching the database. The CohortMembership needs to also touch the database to update the underlying course_user_groups information, to prevent the database from getting into a strange state. After this commit, every time a CohortMembership is updated or created, the corresponding course_user_groups are also updated and explicitly written to the database. This occurs atomically with the CohortMembership, and does not wait for the end of the request. --- openedx/core/djangoapps/course_groups/models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/openedx/core/djangoapps/course_groups/models.py b/openedx/core/djangoapps/course_groups/models.py index 3fa34f0f47..7543666fb8 100644 --- a/openedx/core/djangoapps/course_groups/models.py +++ b/openedx/core/djangoapps/course_groups/models.py @@ -98,9 +98,12 @@ class CohortMembership(models.Model): success = False for __ in range(max_retries): + # This block will transactionally commit updates to CohortMembership and underlying course_user_groups. with transaction.atomic(): try: + # This block is atomic in order to make CohortMembership creation a small operation. + # It will commit the creation of the new CohortMembership, if needed. with transaction.atomic(): saved_membership, created = CohortMembership.objects.select_for_update().get_or_create( user__id=self.user.id, @@ -123,9 +126,11 @@ class CohortMembership(models.Model): self.previous_cohort_name = saved_membership.course_user_group.name self.previous_cohort_id = saved_membership.course_user_group.id self.previous_cohort.users.remove(self.user) + self.previous_cohort.save() saved_membership.course_user_group = self.course_user_group self.course_user_group.users.add(self.user) + self.course_user_group.save() super(CohortMembership, saved_membership).save(update_fields=['course_user_group']) From 9e902264e7b6fad41c4ffc27a6ce8caec2d0418c Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Mon, 30 Nov 2015 17:09:47 -0500 Subject: [PATCH 5/5] Revert "Fixing CohortMembership and ATOMIC_REQUESTS issue" This reverts commit 12130c800663cd8419bf48937802e70e5ef143bd. Manual testing found this to not fix the bug it claimed to fix. --- openedx/core/djangoapps/course_groups/models.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/openedx/core/djangoapps/course_groups/models.py b/openedx/core/djangoapps/course_groups/models.py index 7543666fb8..3fa34f0f47 100644 --- a/openedx/core/djangoapps/course_groups/models.py +++ b/openedx/core/djangoapps/course_groups/models.py @@ -98,12 +98,9 @@ class CohortMembership(models.Model): success = False for __ in range(max_retries): - # This block will transactionally commit updates to CohortMembership and underlying course_user_groups. with transaction.atomic(): try: - # This block is atomic in order to make CohortMembership creation a small operation. - # It will commit the creation of the new CohortMembership, if needed. with transaction.atomic(): saved_membership, created = CohortMembership.objects.select_for_update().get_or_create( user__id=self.user.id, @@ -126,11 +123,9 @@ class CohortMembership(models.Model): self.previous_cohort_name = saved_membership.course_user_group.name self.previous_cohort_id = saved_membership.course_user_group.id self.previous_cohort.users.remove(self.user) - self.previous_cohort.save() saved_membership.course_user_group = self.course_user_group self.course_user_group.users.add(self.user) - self.course_user_group.save() super(CohortMembership, saved_membership).save(update_fields=['course_user_group'])