Commit Graph

58021 Commits

Author SHA1 Message Date
edX cache uploader bot
9bfa56e27b Updating Bokchoy testing database cache (#26929) 2021-03-10 13:13:37 +05:00
David Ormsbee
4c3fd76904 fix: add index to courseware_studentmodule for report performance.
= IMPORTANT WARNING =

This can be a VERY EXPENSIVE MIGRATION which may take hours or
days to run depending on the size of the courseware_studentmodule
table on your site. Depending on your database, it may also lock
this table, causing courseware to be non-functional during that
time.

If you want to run this migration manually in a more controlled
way (separate from your release pipeline), the SQL needed is:

  CREATE INDEX `courseware_stats` ON `courseware_studentmodule`
     (`module_id`, `grade`, `student_id`);

You can then fake the migration:
  https://docs.djangoproject.com/en/2.2/ref/django-admin/#cmdoption-migrate-fake

= Motivation and Background =

TLDR: This adds an index that will speed up reports like the
Problem Grade Report. This fixes a performance regression that
was unintentionally introduced in 25da206c.

I'm capturing the entire saga below, in case Open edX operators
need to dig into it.

The tale begins in November of 2012 (yes, seriously). We had an
inline analytics feature that would display a histogram to course
staff by each problem in the LMS, detailing how students did on
that problem (e.g. 80% got 2 points, 10% got 1 point, 10% got 0
points). The courseware_studentmodule table already had an index
on the module_id (a.k.a. module_state_key), but because there
were 100K+ students that had student state for some problems,
the generation of those histograms was still extremely expensive.
During U.S. Thanksgiving weekend in late November of 2012, that
load started causing operational failures on edx.org.

As an emergency measure, I manually added a composite index for
(module_id, grade, student_id) on courseware_studentmodule in
order to stabilize the courseware on edx.org. I did _not_ follow
up properly and add it in a migration file. Later on, the inline
analytics feature was removed entirely, so the index was considered
redundant (but again, it was not properly cleaned up).

Various reports were created over the years, some of which
relied on having an index for module_id. These ran fine because
there had long been an index for that field specifically.

In 2018, the courseware_studentmodule table for edx.org ran into
the 2 TB size limit that our old RDS instance had. We had a fair
amount of monitoring for various limits that we thought we might
run into, but the per-table limit took us by surprise. The Devops/
SRE person fielding that issue needed to free up space in a hurry
in order to make the courseware functional again. Examining the
database itself, he noticed that we had a module_id index that was
technically redundant because the composite index of (module_id,
grade, student_id) would cover queries that would otherwise use it.
Again, as an emergency measure, he dropped the index on module_id
in order to free up a little space and buy enough time to do a
proper move of the database to Aurora.

Devops-of-2018 being more disciplined than me-of-2012, the index
on module_id was removed in 25da206c. The intention was to make it
so that the state of the code would match what was live on edx.org.
But because the composite index was added in an ad hoc way, what
that really meant was that now queries involving module_id were
_only_ indexed by the (module_id, grade, student_id) composite
index that existed only on edx.org and no other Open edX instances.

We didn't realize this issue until months later. @blarghmatey
created an index to re-add the index for module_id:

  https://github.com/edx/edx-platform/pull/20885

The reason why we didn't accept this immediately is because
migrations for this table are very operationally risky and take
days to run. Faking this migration would have put edx.org even
more out of sync with the Open edX repo. Complicating this
somewhat was the fact that some folks still seem to be running a
variant of the inline analytics on their fork.

So in the end, we're going forward with this migration that brings
the code fully into sync with indexes on edx.org and covers the
obscure inline analytics histogram use case, while still covering
the module_id index needed for the fast generation of certain
reports that focus on a single problem.

Sorry folks.
2021-03-09 17:28:12 -05:00
adeel khan
a3d5d7415b Merge pull request #26924 from edx/adeel/van_272_forward_fix
Fix button/title text
2021-03-10 01:25:35 +05:00
Adeel Khan
725cd3f083 Fix button/title text for;
1) Account activation email.
2) Password reset email.
3) Password reset success.

VAN-272
2021-03-10 00:47:49 +05:00
Nadeem Shahzad
afd3c60d9a Merge pull request #26914 from edx/nadeem/packer_ami_ubuntu_20.04
Pin diff-cover to fix tests on Ubuntu 20.04
2021-03-09 21:51:29 +05:00
Christie Rice
d14cc21395 MICROBA-923 Add ADR on course certificate allowlist (#26923) 2021-03-09 11:34:12 -05:00
nadeemshahzad
15d32811e5 pin diff-cover to fix tests on ubuntu 20.04 2021-03-09 16:22:28 +00:00
Christie Rice
4aff07ad82 MICROBA-923 Add method to generate V2 course certificates (#26898) 2021-03-09 11:02:19 -05:00
Kyle McCormick
05dbd83290 fix: streak celebration feature should require progress milestones (#26922)
In commit 9b37e7d0, the logic of
`streak_celebration_is_active` was accidentally
changed such that it no longer checks the
Progress Milestones waffle flag.
This commit fixes that.

Note: This also adds in a transitive check to
`courseware_mfe_is_active`,
which makes sense for Streak Celebration
and should not have any functional impact.
2021-03-09 10:23:13 -05:00
Usman Khalid
e624a8f4ac Convert CustomTagModule to CustomTagBlock. 2021-03-09 09:27:43 -05:00
Usman Khalid
48290cf837 Convert PollModule to PollBlock. 2021-03-09 09:27:43 -05:00
Ahtisham Shahid
60ef705944 Updated drag and drop version (#26919)
Updated drag and drop version
2021-03-09 19:23:00 +05:00
David Ormsbee
f5b74fcf31 feat: Backfill and Django Admin for Learning Sequence Outline
* Adds the backfill_course_outlines management command to contentstore
* Adds a read-only Django admin interface to learning_sequences for the
  support team and debugging.
* Adds two new functions to the learning_sequences public API:
  key_supports_outlines and get_course_keys_with_outlines

The learning_sequences app isn't supposed to know about contentstore or
modulestore, as it's intended to be extracted out of edx-platform in the
long term. Therefore, the backfill_course_outlines command is in
contentstore, and not learning_sequences.

This work was tracked in TNL-7983, but it also fixes a bug where we were
trying to generate course outlines for libraries (TNL-7981).

All Open edX instances upgrading to Lilac should run the
backfill_course_outlines command as part of their upgrade process.
2021-03-09 09:05:57 -05:00
David Ormsbee
6a00878f59 fix: learning_sequences missing courses now return 404 (not 500)
We weren't properly catching the CourseOutlineData.DoesNotExist error
before this commit. TNL-7979
2021-03-09 09:05:57 -05:00
Jawayria
1a2245cd19 Merge pull request #26560 from edx/jawayria/bom-2352-6
BOM-2352: Removed unused imports from lms/djangoapps/{grades, instruc…
2021-03-09 19:04:03 +05:00
Awais Qureshi
1ab5d4dfed Merge pull request #26671 from edx/BOM-2374-edxmako
Run Pyupgrade on edxmako.
2021-03-09 18:35:14 +05:00
M. Zulqarnain
a664067323 refactor: pyupgrade in common/tests (#26725) 2021-03-09 18:03:34 +05:00
Awais Qureshi
f0cac0c09d Merge pull request #26893 from edx/BOM-2375-student-1
BOM-2375-student-part1
2021-03-09 17:52:30 +05:00
Jawayria
b31c18d6db BOM-2352: Removed unused imports from lms/djangoapps/{grades, instructor} 2021-03-09 17:25:54 +05:00
Jawayria
0c33d80ac0 Merge pull request #26580 from edx/jawayria/bom-2352-7
BOM-2352: Removed unused imports from lms/djangoapps/{instructor_anal…
2021-03-09 17:04:06 +05:00
M. Zulqarnain
42eacaf8de refactor: pyupgrade in common/util + xblock_django (#26724) 2021-03-09 16:49:51 +05:00
Ali Akbar
6259a82059 Merge pull request #26866 from edx/aakbar/PROD-2293
fix override error message
2021-03-09 14:55:35 +05:00
Usama Sadiq
2adf8b759e refactor: ran pyupgrade on lms/djangoapps/commerce (#26734) 2021-03-09 14:21:08 +05:00
edX cache uploader bot
1310f9ed70 Updating Bokchoy testing database cache (#26906) 2021-03-09 14:19:10 +05:00
Usama Sadiq
afa102e125 refactor: ran pyupgrade on lms/djangoapps/course_api (#26735) 2021-03-09 12:54:42 +05:00
Usama Sadiq
7e275ec3ca refactor: ran pyupgrade on lms/djangoapps (#26523)
ran pyupgrade on course_Wiki, coursewarehistoryextended
2021-03-09 12:49:44 +05:00
edX requirements bot
b648b0ad43 Updating Python Requirements (#26907) 2021-03-09 12:14:50 +05:00
Matthew Piatetsky
38ee797cfe Merge pull request #26899 from edx/AA-461
[AA-461] Change course metadata export to be a celery task
2021-03-08 16:54:19 -05:00
Kyle McCormick
9b37e7d0fe refactor: centralize checks for canonical courseware experience & URL (#26815)
Centralize the logic for choosing between
MFE and Legacy-frontend courseware within
three new functions:
* courseware_mfe_is_active
* courseware_mfe_is_visible
* courseware_legacy_is_visible

This allows us to create another new function:
* get_courseware_url
which can be called anywhere in LMS/Studio
to get the canonical URL to courseware
content (whether it be MFE or Legacy).

In future commits we we begin using
get_courseware_url throughout the platform.

TNL-7796
2021-03-08 15:24:16 -05:00
Felipe Montoya
72fba562f8 Merge pull request #26477 from eduNEXT/MJG/Change_max_uername_len
feat: Changed username max_length to the specified by django
2021-03-08 15:15:49 -05:00
Matthew Piatetsky
b1581882e7 fix: Change course metadata export to be a celery task
The terraform policy for the export is already attached to the worker role
AA-461
2021-03-08 15:08:32 -05:00
Alex Dusenbery
1a0bfc2a07 feat: Upgrade edx-enterprise to 3.17.48 | Adds a mgmt command to update all SystemWideEnterpriseUserRoleAssignment records in a way that makes them more explicitly defined. ENT-4099. 2021-03-08 15:05:18 -05:00
Kyle McCormick
bcb48525ac refactor: clean up unused ERROR_ON_DEPRECATED_EDX_PLATFORM_IMPORTS (#26900)
The setting overrides should've been cleaned up in a previous
commit, but I missed them. This change is a no-op.
2021-03-08 15:01:12 -05:00
Bianca Severino
9af6c2727a Merge pull request #26903 from edx/bseverino/proctoring-3.7.8
Upgrade edx-proctoring to 3.7.8
2021-03-08 14:44:23 -05:00
Bianca Severino
171d933778 Upgrade edx-proctoring to 3.7.8 2021-03-08 13:39:57 -05:00
Awais Qureshi
b907c3d289 BOM-2375-student-part1
pyupgrade in student app.
2021-03-08 23:16:11 +05:00
Kyle McCormick
37650c1009 build: fix+simplify docs config now that sys.paths hacks are gone
The docs configuration files previously had to account
for the fact that lms/djangoapps, cms/djangoapps, and
common/djangoapps were hacked into sys.path. As of ~Lilac,
this is no longer the case.

Unrelated cleanup: devstack_docker and devstack
are now aliases, so we can simplify a conditional import
in docs_settings.py
2021-03-08 12:49:31 -05:00
Kyle McCormick
dfa60a5e92 docs: update sys.path hacks ADR & add upgrade guide
The timeline of the import_shims removal has evolved
over time; notably, we are keeping the import_shims
in Lilac in order to make any lingering old-style
import paths obvious to operators.

Update the ADR to reflect this. Also, add a table
mapping old import paths to new ones.
2021-03-08 12:49:31 -05:00
Kyle McCormick
2b5d916512 refactor!: deprecated import paths now always raise
Previously, deprecated [lms|cms|common]/djangoapps
import paths would only raise errors if the
ERROR_ON_DEPRECATED_EDX_PLATFORM_IMPORTS
flag, which defaulted to False (but is overriden
to True for Devstack and *.edx.org), was enabled.

This change removes that setting and always raises
on use those deprecated import paths.
2021-03-08 12:49:31 -05:00
Raul Gallegos
e1614b5324 fix: revert back the bundle_draft_files cache key (#26897)
Changes the LMS/Studio bundle cache key,
thus invalidating all 47hr-TTL entries
in favor of new 50min-TTL entries.

TNL-7771
2021-03-08 12:34:51 -05:00
Awais Qureshi
a980145164 BOM-2375-student-part1
pyupgrade in student app.
2021-03-08 22:21:37 +05:00
edX cache uploader bot
aecf6f1d51 Updating Bokchoy testing database cache (#26896) 2021-03-08 21:04:33 +05:00
Sarina Canelake
3cbf7d80f1 Merge pull request #26106 from open-craft/mavidser/se-3685-hide-help-link
Add option to disable the help link in the navbar
2021-03-08 10:24:30 -05:00
Jeremy Bowman
1692081dd0 Fix diff-cover with recent git versions on shallow repositories (#26879)
When we tried upgrading Jenkins workers from Ubuntu 16.04 to 20.04, `diff-cover` started silently failing with a return code of `1`.  We suspect this is due to https://github.com/Bachmann1234/diff_cover/issues/153 , so we're adding the workaround described in that ticket.
2021-03-08 10:23:50 -05:00
Adeel Ehsan
5fcf88f31e Merge pull request #26869 from edx/aehsan/van-390/datetimestamp_added_for_account_activation_event
datetimestamp added for account activation event
2021-03-08 19:59:43 +05:00
alangsto
e3099bc486 Update edx-proctoring version (#26895) 2021-03-08 09:22:37 -05:00
Jason Myatt
6e743bc41a Merge pull request #25941 from open-craft/mtyaka/SE-2888-forum-notification-url
Fix URL in forum notification post.
2021-03-08 09:13:20 -05:00
Kyle McCormick
f54e3752fa fix: lower bundle cache timeout from 47hrs to 50mins (#26863)
S3 URLs served by Blockstore have a max TTL of
1hr, since the temporary credentials the Blockstore
uses to sign the URLs themselves have a TTL of
1hr. Thus, we must cache Blockstore bundles for
less than 1hr.

TNL-7771
2021-03-08 08:47:30 -05:00
Awais Qureshi
8168a3a322 Merge pull request #26673 from edx/BOM-2374-pipelinemako
Run Pyupgrade on pipeline mako.
2021-03-08 18:39:32 +05:00
Awais Qureshi
6832c95d8e Merge pull request #26706 from edx/BOM-2376-terrain
Run Pyupgrade on terrain
2021-03-08 18:38:19 +05:00