From 79cf89472038d381a436f12662410e68204e6526 Mon Sep 17 00:00:00 2001 From: Tim McCormack Date: Thu, 13 Nov 2025 18:42:06 -0500 Subject: [PATCH 1/2] chore: Consistent rST headings in changelog, readme Use heading bars that are consistent internally and with the rest of the codebase. --- CHANGELOG.rst | 134 +++++++++++++++++++++++++------------------------- README.rst | 20 ++++---- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7bdfc04..9c026c3 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,5 +1,5 @@ Change Log ----------- +########## .. All enhancements and patches to edx_arch_experiments will be documented @@ -12,20 +12,20 @@ Change Log .. There should always be an "Unreleased" section for changes pending release. Unreleased -~~~~~~~~~~ +********** [7.0.0] - 2025-01-30 -~~~~~~~~~~~~~~~~~~~~ +******************** Removed -_______ +======= * Removed ``codejail_service`` plugin app (unused experiment) * Removed temporary rollout span tag ``code_owner_plugin`` used for the code owner monitoring move from edx-django-utils. Now that edx-django-utils monitoring has been disabled, this span tag serves no purpose. [6.1.0] - 2024-12-10 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -_______ +======= * Completes code owner monitoring updates, which drops owner theme and finalizes the code owner span tags. See doc and ADR updates for more details. * The code_owner_theme_2 tag was dropped altogether. @@ -36,19 +36,19 @@ _______ * Updates the generate_code_owner_mappings.py script accordingly. [6.0.0] - 2024-12-05 -~~~~~~~~~~~~~~~~~~~~ +******************** Removed -------- +======= - Removes CodeOwnerMonitoringMiddleware, in favor of using new signals sent from edx-django-utils's MonitoringSupportMiddleware. Added ------ +===== * Adds search script datadog_search.py, for searching Datadog monitors and dashboards. [5.1.0] - 2024-11-21 -~~~~~~~~~~~~~~~~~~~~ +******************** Added ------ +===== * Added Datadog monitoring app which adds code owner monitoring. This is the first step in moving code owner code from edx-django-utils to this plugin. * Adds near duplicate of code owner middleware from edx-django-utils. @@ -57,214 +57,214 @@ Added * Span tag code_owner_2_module includes the task name, where the original code_owner_module does not. In both cases, the code owner is computed the same, because it is based on a prefix match. [5.0.0] - 2024-10-22 -~~~~~~~~~~~~~~~~~~~~ +******************** Removed -------- +======= * Deleted Datadog diagnostics plugin app and middleware, which are no longer in use in edxapp. [4.5.0] - 2024-09-19 -~~~~~~~~~~~~~~~~~~~~ +******************** Added ------ +===== * Datadog diagnostics middleware can now attempt to close anomalous spans. Can be enabled via Waffle flag ``datadog.diagnostics.close_anomalous_spans`` (controlled separately from logging feature). [4.4.0] - 2024-09-10 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -------- +======= * Datadog diagnostics now logs ancestor spans when an anomaly is encountered, up to a limit of 10 (controlled by new Django setting ``DATADOG_DIAGNOSTICS_LOG_SPAN_DEPTH``). Spans are logged in full and on separate lines, so this logging is now much more verbose; consider only enabling this logging for short periods. Log format of first line has also changed slightly. [4.3.0] - 2024-08-22 -~~~~~~~~~~~~~~~~~~~~ +******************** Added ------ +===== * Added celery lifecycle logging for Datadog diagnostics, to be enabled using ``DATADOG_DIAGNOSTICS_CELERY_LOG_SIGNALS``. [4.2.0] - 2024-08-13 -~~~~~~~~~~~~~~~~~~~~ +******************** Fixed ------ +===== * Fixed loading of ``DATADOG_DIAGNOSTICS_ENABLE``, which was previously not loaded properly and therefore was always True. Also fixed loading of ``DATADOG_DIAGNOSTICS_MAX_SPANS``, which was presumably broken as well. Removed -------- +======= * Removed early span-start logging. It never worked properly, possibly because workers are continually being destroyed and created, leading to high log volume. [4.1.0] - 2024-08-09 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -------- +======= * Datadog diagnostics will now log all span-starts for the first minute after server startup * **WARNING**: Do not use this version; see 4.2.0 release notes. [4.0.0] - 2024-08-05 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -------- +======= * Dropped support for Python 3.8; only testing with 3.11 and above now. Added ------ +===== * ``DatadogDiagnosticMiddleware`` can now detect and log anomalous traces, enabled by Waffle flag ``datadog.diagnostics.detect_anomalous_trace`` [3.6.0] - 2024-07-24 -~~~~~~~~~~~~~~~~~~~~ +******************** Added ------ +===== * New middleware ``edx_arch_experiments.datadog_diagnostics.middleware.DatadogDiagnosticMiddleware`` for logging diagnostics on traces in Datadog. [3.5.1] - 2024-07-15 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -------- +======= * Added ``federated-content-connector`` to the generate_code_owners script. [3.5.0] - 2024-07-11 -~~~~~~~~~~~~~~~~~~~~ +******************** Added ------ +===== * Toggle ``DATADOG_DIAGNOSTICS_ENABLE`` for disabling that plugin quickly if needed. (Feature remains enabled by default.) Fixed ------ +===== * Limit the number of spans collected via new setting ``DATADOG_DIAGNOSTICS_MAX_SPANS``, defaulting to 100. This may help avoid memory leaks. * Make accidental class variables into member variables in ``datadog_diagnostics`` [3.4.0] - 2024-07-10 -~~~~~~~~~~~~~~~~~~~~ +******************** Added ------ +===== * Added ``datadog_diagnostics`` plugin app [3.3.2] - 2024-04-19 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -------- +======= * Added ``translatable-xblocks`` to the generate_code_owners script. [3.3.1] - 2024-02-26 -~~~~~~~~~~~~~~~~~~~~ +******************** Added -_______ +===== * Added support for ``Python 3.12`` [3.3.0] - 2024-01-23 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -_______ +======= * Updated ``ConfigWatcher`` to include the IDA's name in change messages if ``CONFIG_WATCHER_SERVICE_NAME`` is set * Enabled ``ConfigWatcher`` as a plugin for CMS [3.2.0] - 2024-01-11 -~~~~~~~~~~~~~~~~~~~~ +******************** Added -_____ +===== * Add ``codejail_service`` app for transition to containerized codejail [3.1.1] - 2023-11-06 -~~~~~~~~~~~~~~~~~~~~ +******************** Fixed -_____ +===== * ConfigWatcher should now respond to model events properly now that it registers receivers with strong references. (Tested in sandbox.) [3.1.0] - 2023-10-31 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -_______ +======= * Add log message for each model the ConfigWatcher is listening to * Ensure that ConfigWatcher only attaches receivers once [3.0.0] - 2023-10-30 -~~~~~~~~~~~~~~~~~~~~ +******************** Changed -_______ +======= * Renamed ``ConfigWatcherApp`` to ``ConfigWatcher`` to be less redundant. This is technically a breaking change but the app was not in use yet. * Enabled ``ConfigWatcher`` as a plugin for LMS [2.2.0] - 2023-10-27 -~~~~~~~~~~~~~~~~~~~~ +******************** Added -_____ +===== * Add ``edx_arch_experiments.config_watcher`` Django app for monitoring Waffle changes * Add script to get github action errors * Add script to republish failed events [2.1.0] - 2023-10-10 -~~~~~~~~~~~~~~~~~~~~ +******************** * Add ORA2 to our code owner mapping script. [2.0.0] - 2023-06-01 -~~~~~~~~~~~~~~~~~~~~ +******************** * Removes summary hook aside, now in the ai-aside repo [1.2.0] - 2023-05-08 -~~~~~~~~~~~~~~~~~~~~ +******************** * Update summary hook to trigger on videos * Remove text selection data key from summary hook html [1.1.4] - 2023-04-14 -~~~~~~~~~~~~~~~~~~~~ +******************** * Add course and block ID to summary hook html [1.1.3] - 2023-04-05 -~~~~~~~~~~~~~~~~~~~~ +******************** Fixed -_____ +===== * Removed ``default_app_config`` (deprecated in Django 3) [1.1.2] - 2023-03-14 -~~~~~~~~~~~~~~~~~~~~ +******************** * Add "staff only" summary hook flag [1.1.1] - 2023-03-09 -~~~~~~~~~~~~~~~~~~~~ +******************** * Revise summary hook HTML [1.1.0] - 2023-03-08 -~~~~~~~~~~~~~~~~~~~~ +******************** * Add summary hook xblock aside [1.0.0] - 2022-10-06 -~~~~~~~~~~~~~~~~~~~~ +******************** * **Breaking change**: Remove ``kafka_consumer`` package and plugin (migrated to ``edx-event-bus-kafka``) [0.2.1] - 2022-06-14 -~~~~~~~~~~~~~~~~~~~~ +******************** * Add new target to Makefile * Update openedx-events [0.2.0] - 2022-03-16 -~~~~~~~~~~~~~~~~~~~~ +******************** * Update consumer to use bridge and signals [0.1.1] - 2022-03-16 -~~~~~~~~~~~~~~~~~~~~ +******************** * Fix GitHub actions [0.1.0] - 2022-02-22 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +******************** Added -_____ +===== * First release on PyPI. diff --git a/README.rst b/README.rst index 45b4395..36acb26 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ edx-arch-experiments -==================== +#################### |pypi-badge| |ci-badge| |codecov-badge| |pyversions-badge| |license-badge| @@ -7,16 +7,16 @@ edx-arch-experiments A plugin to include applications under development by and useful utility scripts for the architecture team at 2U. Overview ------------------------- +******** This plugin is meant to house experimental and in-development applications from the edX architecture team at 2U that are either not appropriate (i.e. 2U-specific) or not yet ready for community consumption. It also includes some one-off scripts meant to reduce toil for the team. Development Workflow --------------------- +******************** One Time Setup -~~~~~~~~~~~~~~ +============== .. code-block:: # Clone the repository @@ -27,7 +27,7 @@ One Time Setup mkvirtualenv -p python3.11 edx-arch-experiments Local testing -~~~~~~~~~~~~~ +============= Two options are available for testing changes locally: First, via `make test-shell` a dockerized development envrionment can be launched to run `pytest` and do basic migration work. @@ -36,7 +36,7 @@ Second, a local copy of the package can be installed into edx-platform. For exam Every time you develop something in this repo -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +============================================= .. code-block:: # Activate the virtualenv @@ -71,7 +71,7 @@ Every time you develop something in this repo # Open a PR and ask for review. License -------- +******* The code in this repository is licensed under the AGPL 3.0 unless otherwise noted. @@ -79,7 +79,7 @@ otherwise noted. Please see `LICENSE.txt `_ for details. How To Contribute ------------------ +***************** Contributions are very welcome. Please read `How To Contribute `_ for details. @@ -93,12 +93,12 @@ The issue report template should be automatically applied if you are creating an can find it at `ISSUE_TEMPLATE.md <.github/ISSUE_TEMPLATE.md>`_. Reporting Security Issues -------------------------- +************************* Please do not report security issues in public. Please email security@edx.org. Getting Help ------------- +************ If you're having trouble, we have discussion forums at https://discuss.openedx.org where you can connect with others in the community. From 5f0351efa53a329a71f676b132a6141a49a2e405 Mon Sep 17 00:00:00 2001 From: Tim McCormack Date: Thu, 13 Nov 2025 18:48:04 -0500 Subject: [PATCH 2/2] temp: Add dummy model for testing migrations This will be followed later by a revert of the model and addition of a corresponding second migration. Output of `sqlmigrate edx_arch_experiments 0001_initial`: ``` CREATE TABLE "edx_arch_experiments_boms227" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "dummy_field" varchar(50) NOT NULL); ``` With `--backwards`: ``` DROP TABLE "edx_arch_experiments_boms227"; ``` BOMS-227 --- CHANGELOG.rst | 6 ++++++ edx_arch_experiments/__init__.py | 2 +- .../migrations/0001_initial.py | 21 +++++++++++++++++++ edx_arch_experiments/migrations/__init__.py | 0 edx_arch_experiments/models.py | 18 ++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 edx_arch_experiments/migrations/0001_initial.py create mode 100644 edx_arch_experiments/migrations/__init__.py create mode 100644 edx_arch_experiments/models.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 9c026c3..8ab783b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,12 @@ Change Log Unreleased ********** +[7.1.0] - 2025-11-17 +******************** +Added +===== +* Dummy model for testing migrations and rollback. + [7.0.0] - 2025-01-30 ******************** diff --git a/edx_arch_experiments/__init__.py b/edx_arch_experiments/__init__.py index 862fadb..19407d4 100644 --- a/edx_arch_experiments/__init__.py +++ b/edx_arch_experiments/__init__.py @@ -2,4 +2,4 @@ A plugin to include applications under development by the architecture team at 2U. """ -__version__ = '7.0.0' +__version__ = '7.1.0' diff --git a/edx_arch_experiments/migrations/0001_initial.py b/edx_arch_experiments/migrations/0001_initial.py new file mode 100644 index 0000000..c01c2dc --- /dev/null +++ b/edx_arch_experiments/migrations/0001_initial.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.25 on 2025-11-13 17:21 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Boms227', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('dummy_field', models.CharField(max_length=50)), + ], + ), + ] diff --git a/edx_arch_experiments/migrations/__init__.py b/edx_arch_experiments/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/edx_arch_experiments/models.py b/edx_arch_experiments/models.py new file mode 100644 index 0000000..ef8bcd8 --- /dev/null +++ b/edx_arch_experiments/models.py @@ -0,0 +1,18 @@ +""" +Models for testing migrations. + +We don't actually store any data in this Django app. The models here are purely +for pipeline and deployment testing purposes. +""" + +from django.db import models + + +class Boms227(models.Model): + """ + Model for testing migrations and rollbacks. See BOMS-227. + + .. no_pii: No data should actually be stored in this table. + """ + + dummy_field = models.CharField(max_length=50)