Browse Source

ref: add migrations for sentry GzippedDict tables (#49707)

<!-- Describe your PR here. -->
anthony sottile 1 year ago
parent
commit
d80a3c968f

+ 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: 0459_remove_user_actorid
+sentry: 0465_pickle_to_json_sentry_activity
 social_auth: 0001_initial

+ 34 - 0
src/sentry/migrations/0460_pickle_to_json_sentry_auditlogentry.py

@@ -0,0 +1,34 @@
+# Generated by Django 2.2.28 on 2023-05-19 17:25
+
+from django.db import migrations
+
+from sentry.new_migrations.migrations import CheckedMigration
+from sentry.utils.query import RangeQuerySetWrapperWithProgressBar
+
+
+def _backfill(apps, schema_editor):
+    cls = apps.get_model("sentry", "AuditLogEntry")
+
+    for obj in RangeQuerySetWrapperWithProgressBar(cls.objects.all()):
+        # load pickle, save json
+        obj.save(update_fields=["data"])
+
+
+class Migration(CheckedMigration):
+    # data migration: must be run out of band
+    is_dangerous = True
+
+    # data migration: run outside of a transaction
+    atomic = False
+
+    dependencies = [
+        ("sentry", "0459_remove_user_actorid"),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            _backfill,
+            migrations.RunPython.noop,
+            hints={"tables": ["sentry_auditlogentry"]},
+        ),
+    ]

+ 34 - 0
src/sentry/migrations/0461_pickle_to_json_sentry_groupedmessage.py

@@ -0,0 +1,34 @@
+# Generated by Django 2.2.28 on 2023-05-19 17:25
+
+from django.db import migrations
+
+from sentry.new_migrations.migrations import CheckedMigration
+from sentry.utils.query import RangeQuerySetWrapperWithProgressBar
+
+
+def _backfill(apps, schema_editor):
+    cls = apps.get_model("sentry", "Group")
+
+    for obj in RangeQuerySetWrapperWithProgressBar(cls.objects.all()):
+        # load pickle, save json
+        obj.save(update_fields=["data"])
+
+
+class Migration(CheckedMigration):
+    # data migration: must be run out of band
+    is_dangerous = True
+
+    # data migration: run outside of a transaction
+    atomic = False
+
+    dependencies = [
+        ("sentry", "0460_pickle_to_json_sentry_auditlogentry"),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            _backfill,
+            migrations.RunPython.noop,
+            hints={"tables": ["sentry_groupedmessage"]},
+        ),
+    ]

+ 34 - 0
src/sentry/migrations/0462_pickle_to_json_sentry_grouptombstone.py

@@ -0,0 +1,34 @@
+# Generated by Django 2.2.28 on 2023-05-19 17:25
+
+from django.db import migrations
+
+from sentry.new_migrations.migrations import CheckedMigration
+from sentry.utils.query import RangeQuerySetWrapperWithProgressBar
+
+
+def _backfill(apps, schema_editor):
+    cls = apps.get_model("sentry", "GroupTombstone")
+
+    for obj in RangeQuerySetWrapperWithProgressBar(cls.objects.all()):
+        # load pickle, save json
+        obj.save(update_fields=["data"])
+
+
+class Migration(CheckedMigration):
+    # data migration: must be run out of band
+    is_dangerous = True
+
+    # data migration: run outside of a transaction
+    atomic = False
+
+    dependencies = [
+        ("sentry", "0461_pickle_to_json_sentry_groupedmessage"),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            _backfill,
+            migrations.RunPython.noop,
+            hints={"tables": ["sentry_grouptombstone"]},
+        ),
+    ]

+ 34 - 0
src/sentry/migrations/0463_pickle_to_json_sentry_processingissue.py

@@ -0,0 +1,34 @@
+# Generated by Django 2.2.28 on 2023-05-19 17:25
+
+from django.db import migrations
+
+from sentry.new_migrations.migrations import CheckedMigration
+from sentry.utils.query import RangeQuerySetWrapperWithProgressBar
+
+
+def _backfill(apps, schema_editor):
+    cls = apps.get_model("sentry", "ProcessingIssue")
+
+    for obj in RangeQuerySetWrapperWithProgressBar(cls.objects.all()):
+        # load pickle, save json
+        obj.save(update_fields=["data"])
+
+
+class Migration(CheckedMigration):
+    # data migration: must be run out of band
+    is_dangerous = True
+
+    # data migration: run outside of a transaction
+    atomic = False
+
+    dependencies = [
+        ("sentry", "0462_pickle_to_json_sentry_grouptombstone"),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            _backfill,
+            migrations.RunPython.noop,
+            hints={"tables": ["sentry_processingissue"]},
+        ),
+    ]

+ 34 - 0
src/sentry/migrations/0464_pickle_to_json_sentry_rule.py

@@ -0,0 +1,34 @@
+# Generated by Django 2.2.28 on 2023-05-19 17:25
+
+from django.db import migrations
+
+from sentry.new_migrations.migrations import CheckedMigration
+from sentry.utils.query import RangeQuerySetWrapperWithProgressBar
+
+
+def _backfill(apps, schema_editor):
+    cls = apps.get_model("sentry", "Rule")
+
+    for obj in RangeQuerySetWrapperWithProgressBar(cls.objects.all()):
+        # load pickle, save json
+        obj.save(update_fields=["data"])
+
+
+class Migration(CheckedMigration):
+    # data migration: must be run out of band
+    is_dangerous = True
+
+    # data migration: run outside of a transaction
+    atomic = False
+
+    dependencies = [
+        ("sentry", "0463_pickle_to_json_sentry_processingissue"),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            _backfill,
+            migrations.RunPython.noop,
+            hints={"tables": ["sentry_rule"]},
+        ),
+    ]

+ 34 - 0
src/sentry/migrations/0465_pickle_to_json_sentry_activity.py

@@ -0,0 +1,34 @@
+# Generated by Django 2.2.28 on 2023-05-19 17:25
+
+from django.db import migrations
+
+from sentry.new_migrations.migrations import CheckedMigration
+from sentry.utils.query import RangeQuerySetWrapperWithProgressBar
+
+
+def _backfill(apps, schema_editor):
+    cls = apps.get_model("sentry", "Activity")
+
+    for obj in RangeQuerySetWrapperWithProgressBar(cls.objects.all()):
+        # load pickle, save json
+        obj.save(update_fields=["data"])
+
+
+class Migration(CheckedMigration):
+    # data migration: must be run out of band
+    is_dangerous = True
+
+    # data migration: run outside of a transaction
+    atomic = False
+
+    dependencies = [
+        ("sentry", "0464_pickle_to_json_sentry_rule"),
+    ]
+
+    operations = [
+        migrations.RunPython(
+            _backfill,
+            migrations.RunPython.noop,
+            hints={"tables": ["sentry_activity"]},
+        ),
+    ]