Просмотр исходного кода

chore(logo-upload): Backfill popularity values for SentryApp tables (#30036)

See API-2259

This PR will migrate the SentryApp table to backfill popularities with a default of 1. This is the same value given to all unpublished/internal integrations that are created right now, so all entries (in the DB unless explicitly changed by us) will have an identical popularity of 1.
Leander Rodrigues 3 лет назад
Родитель
Сommit
6e18cee997
2 измененных файлов с 49 добавлено и 1 удалено
  1. 1 1
      migrations_lockfile.txt
  2. 48 0
      src/sentry/migrations/0250_backfill_popularity.py

+ 1 - 1
migrations_lockfile.txt

@@ -6,5 +6,5 @@ To resolve this, rebase against latest master and regenerate your migration. Thi
 will then be regenerated, and you should be able to merge without conflicts.
 
 nodestore: 0002_nodestore_no_dictfield
-sentry: 0249_add_avatar_type_back
+sentry: 0250_backfill_popularity
 social_auth: 0001_initial

+ 48 - 0
src/sentry/migrations/0250_backfill_popularity.py

@@ -0,0 +1,48 @@
+# Generated by Django 2.2.24 on 2021-11-15 22:47
+
+from django.db import migrations
+
+from sentry.utils.query import RangeQuerySetWrapperWithProgressBar
+
+
+def backfill_popularity(apps, schema_editor):
+    SentryApp = apps.get_model("sentry", "SentryApp")
+
+    for sentry_app in RangeQuerySetWrapperWithProgressBar(SentryApp.objects.all()):
+        if sentry_app.popularity is None:
+            sentry_app.popularity = 1
+            sentry_app.save()
+
+
+class Migration(migrations.Migration):
+    # This flag is used to mark that a migration shouldn't be automatically run in
+    # production. We set this to True for operations that we think are risky and want
+    # someone from ops to run manually and monitor.
+    # General advice is that if in doubt, mark your migration as `is_dangerous`.
+    # Some things you should always mark as dangerous:
+    # - Large data migrations. Typically we want these to be run manually by ops so that
+    #   they can be monitored. Since data migrations will now hold a transaction open
+    #   this is even more important.
+    # - Adding columns to highly active tables, even ones that are NULL.
+    is_dangerous = False
+
+    # This flag is used to decide whether to run this migration in a transaction or not.
+    # By default we prefer to run in a transaction, but for migrations where you want
+    # to `CREATE INDEX CONCURRENTLY` this needs to be set to False. Typically you'll
+    # want to create an index concurrently when adding one to an existing table.
+    # You'll also usually want to set this to `False` if you're writing a data
+    # migration, since we don't want the entire migration to run in one long-running
+    # transaction.
+    atomic = False
+
+    dependencies = [
+        ("sentry", "0249_add_avatar_type_back"),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            backfill_popularity,
+            migrations.RunPython.noop,
+            hints={"tables": ["sentry_sentryapp"]},
+        )
+    ]