Ginkgo
The seventh Open edX release. Please add information here that will be useful when it comes time to package the release. Please include your name when you add an item, so that we can get back to you with questions.
New Services & Major Upgrades Planned for This Release
What new products, applications, services, etc have we built since Ginkgo?
- Catalog service
- Django is in the process of being upgraded to 1.11.X
- Credentials Service
- Django has been upgraded to 1.11.X
- E-Commerce Service
- Django has been upgraded to 1.10.X
- Django Oscar has been upgraded to 1.4. (See deployment issues note below.)
- ElasticSearch 1.5 Upgrade is done.(Contact: Feanil)
- Runbooks we used for the deployments can be found under here: Elasticsearch 1.x.y Upgrade
- Webpack is now supported in edx-platform
Installation changes
- Node was upgraded from 0.10 to 6.9
- ESLint is now used for JavaScript linting
- edX rules are defined in: https://github.com/edx/eslint-config-edx
- Packages are provided for ES5 and ES2015+
- See ESLint for more details
Something something docker- Docker work is underway, but will not be ready for Ginkgo.
Things you'd like to complete before Ginkgo
- - LEARNER-24Getting issue details... STATUS
- - OPS-2220Getting issue details... STATUS
- - LEARNER-1112Getting issue details... STATUS
- - LEARNER-1341Getting issue details... STATUS
- - LEARNER-1604Getting issue details... STATUS
- - OPEN-2046Getting issue details... STATUS
- https://github.com/edx/configuration/pull/3704 MERGED
- https://github.com/edx/edx-ora2/pull/1012 MERGED
- https://github.com/edx/configuration/pull/3522 (Feanil Patel (Deactivated) indicated this won't make it in time).
- Release a new version of Django Waffle (ClintonB (Deactivated) is a maintainer, but needs help determine what functionality, if any, is preventing Django 1.11.x compatibility)
- https://github.com/edx/edx-platform/pull/15392 MERGED
- https://github.com/edx/edx-platform/pull/15478 MERGED
- https://github.com/edx/configuration/pull/3988 MERGED
- - LEARNER-2112Getting issue details... STATUS
Things to cherry-pick onto Ginkgo
The open-release/ginkgo.master branch has been created in each repo. Changes for Ginkgo will now have to be cherry-picked onto that branch. This raises the bar for changes: they must be important, and they must not be unduly disruptive.
- https://github.com/edx/edx-platform/pull/15360 PICKED
- https://github.com/edx/edx-platform/pull/15343 (Picking with https://github.com/edx/edx-platform/pull/15517) PICKED
- https://github.com/edx/course-discovery/pull/1029 DEFERRED
- https://github.com/edx/edx-ora2/pull/1018 + https://github.com/edx/edx-platform/pull/15446 PICKED
- https://github.com/edx/edx-platform/pull/15614 (cherry-picking with https://github.com/edx/edx-platform/pull/15625) DONE
- https://github.com/edx/configuration/pull/4001 (cherry-picked from configuration#3988) PICKED
- https://github.com/edx/edx-platform/pull/15727 DONE
Cherry-picks for Ginkgo.2
- - LEARNER-2620Getting issue details... STATUS NOT NEEDED
- https://github.com/edx/configuration/pull/4101#issuecomment-330567467 (also for Ficus!) DONE
- Ginkgo got this in https://github.com/edx/configuration/pull/4126
- - SEC-314Getting issue details... STATUS
- https://github.com/edx/edx-platform/pull/15992 DONE
- https://github.com/edx/cs_comments_service/pull/249 DONE
- https://github.com/edx/edx-platform/pull/16213 DONE
Future cherry-picks
Deployment Issues to Keep in Mind
What has changed in the devops/configuration world? Are there manual steps needed to move from Ficus to Ginkgo?
- ElasticSearch will be upgraded, probably to 1.5 which is what we use in production. This will coincide with changes to the forums service to support the newer version.
- Robert Raposa: In addition to migration documentation, we should remind about "rake search:initialize" and "rake search:validate_index".
- Credentials Service
- The service now requires Python 3.5
- The service has been upgraded to Django 1.11.x
- E-Commerce Service
- Receipt Page Updates
- We now only support the receipt page integrated into Otto. Redirecting to the LMS/shopping_cart receipt page is no longer enabled.
- CyberSource Updates
- Secure Acceptance Silent Order POST is now the only supported integration. This integration will require creating a new profile in the business center.
- The merchant notifications endpoint has been removed.
- The service has been upgraded to Django 1.10.x.
- This change includes a migration that affects the user table. If your users table is large, consider faking migration
core 0032
. (ClintonB (Deactivated))
- This change includes a migration that affects the user table. If your users table is large, consider faking migration
- Django Oscar has been upgraded to 1.4. (The steps below only apply to existing installations, and can be ignored for new installations.)
- This upgrade requires faking migrations for the
thumbnail
app:./manage.py migrate thumbnail --fake
Site maintainers should be aware that one of the migrations includes a change on the guest_email column in the orders table. If your orders table is large 1M+ rows, this migration may lock the table for an extended amount of time. The E-Commerce Service does not normally use the guest_email column. If you have not modified your system to use this column, and wish to avoid the table lock, it is recommended that you fake this migration:
./manage.py migrate orders 0012
./manage.py migrate orders 0013 --fake
- Robert Raposa A "fake thumbnails" Ansible task was added to resolve this issue in devstack and on sandboxes. I cannot speak about Production or other environments, and whether or not this task could be used in those cases.
- This upgrade requires faking migrations for the
- The Course Administration Tool (CAT) has been updated to use the user account associated with the OAuth credentials rather than individual users' accounts. The user associated with the OAuth credentials—we at edx.org use the username ecommerce_worker—should have full CRUD permissions for the following models on LMS:
- commerce.CommerceConfiguration
- course_modes.CourseMode
- credit.CreditCourse
- credit.CreditRequest
- Additionally, ecommerce_worker should have the student:userprofile:can_deactivate_users permission if you are using SDN verification.
- Receipt Page Updates
- Catalog Service
- The service is in the process of been upgraded to Django 1.11.X
- Waffle is used by many repositories to control feature rollout (Andy Armstrong (Deactivated))
- Will catalog service be required?
- Are there required upgrades for Django, pip, ...
- Will there be a significant change to the asset pipeline in time for Ginkgo? (Probably not but something to keep an eye on)
- Upgrade to RabbitMQ https://github.com/edx/configuration/pull/3297 (Kevin Falcone (Deactivated))
- 3.2.1 → 3.6.9
- Upgrading in place on devstacks may be fine (it appears rabbit will upgrade structures on disk when it starts back up)
- Upgrading a cluster is more fun depending on downtime options https://www.rabbitmq.com/clustering.html
- We're using https://www.rabbitmq.com/shovel.html
- Insights (Tyler Hallada (Deactivated))
We're planning on upgrading Insights to Django 1.11. As part of this upgrade, we need to follow a delicate procedure to update python-social-auth from the old version in Eucalyptus. Essentially, what we think needs to be scripted in the upgrade is a sequence of migrations documented in python-social-auth/MIGRATING_TO_SOCIAL:
- upgrade to python-social-auth==0.2.21
- run migrations
- upgrade edx-auth-backends, which in turn upgrades a bunch of social-auth-* packages
- run migrations
- In other words, upgrade Insights to version 0.33.0, run migrations, then upgrade Insights to the Ginkgo release, and run migrations again.
- python-social-auth has been upgraded to social-auth-app-django 1.2.0 and social-auth-core 1.4.0.
- In some cases, this may cause migration issues.
- For the initial release of Ficus, we were at python-social-auth 0.2.12.
- This is not true:
- For a later version of Ficus, we moved to python-social-auth 0.2.21 as a preliminary step to migrating to the split social architecture.
- For a later version of Ficus, we moved to python-social-auth 0.2.21 as a preliminary step to migrating to the split social architecture.
- The upgrade to 0.2.21 included a number of database migrations that essentially brought our database into the same state as would be required by social-auth-app-django. Once that was performed, we were able to move to social-auth-app-django without additional database migrations.
- In cases where the Open edX host has not first moved to a version of Ficus that includes python-social-auth 0.2.21, an intermediate step will be necessary to perform those database migrations, as a direct database migration from PSA 0.2.12 to social-app-django is not possible.
- https://github.com/python-social-auth/social-app-django/issues/28#issuecomment-292282295
- https://github.com/edx/edx-platform/tree/release-2017-06-21-12.22 is a good intermediate migration step for both python-social-auth and django-celery, noted below.
- https://github.com/python-social-auth/social-app-django/issues/28#issuecomment-292282295
- In some cases, this may cause migration issues.
- django-celery was updated from a version that used South migrations to a version that used django migrations, and the structure changed in the process so --fake-initial doesn't help.
- Please run the drop_djcelery_tables management command (from edx-celeryutils) after you update code, but before running migrations. If not, djcelery_0001 will yield a "table already exists" error.
./manage.py lms drop_djcelery_tables --settings=aws
- This command assumes the tables are empty, as no code in edx-platform was using them previously. If there is data in your tables, the management command will exit without making any changes and you'll need to fix up the relevant tables manually.
- The edx-platform heartbeat (courses(LMS)/studio) format has changed, it is now:
{ "modulestore": { "status": true, "message": "OK" }, "sql": { "status": true, "message": "OK" } }
We recommend automated checks relying on this endpoint focus on the HTTP status code, and that this output be used primarily for diagnostics
Monthly product notes
Any unusual things changed in the product that adopters or developers should know about?
Deprecated Features
- Programs was deprecated in Ficus and will be replaced by the Catalog service in Ginkgo
- Credentials API V1 is replaced by V2 (V1 has been removed)
- The waffle flag "unified_course_view" is deprecated in Ginkgo, which can be used for the new view of the course outline on a separate page. The old sidebar navigation and this waffle flag will be fully removed in the next release. (Robert Raposa)
- This is currently defaulted off, but we'd like to get it defaulted on for Ginkgo.