From d0e9a77a57b5400b66f80e4e4d5891496168bdc8 Mon Sep 17 00:00:00 2001 From: Mateusz Mandera Date: Wed, 3 May 2023 12:55:11 +0200 Subject: [PATCH] migrations: Fix performance of migration 0436. This was doing bulk_create in a loop for each realm, which is too slow on very large servers. Just do a single bulk_create with a reasonable batch_size at the end. --- zerver/migrations/0436_realmauthenticationmethods.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/zerver/migrations/0436_realmauthenticationmethods.py b/zerver/migrations/0436_realmauthenticationmethods.py index 5c8b7b2e37..0716113e54 100644 --- a/zerver/migrations/0436_realmauthenticationmethods.py +++ b/zerver/migrations/0436_realmauthenticationmethods.py @@ -11,12 +11,13 @@ def fill_RealmAuthenticationMethod_data( ) -> None: Realm = apps.get_model("zerver", "Realm") RealmAuthenticationMethod = apps.get_model("zerver", "RealmAuthenticationMethod") + rows_to_create = [] for realm in Realm.objects.order_by("id"): - rows_to_create = [] for key, value in realm.authentication_methods.iteritems(): if value: rows_to_create.append(RealmAuthenticationMethod(name=key, realm_id=realm.id)) - RealmAuthenticationMethod.objects.bulk_create(rows_to_create) + + RealmAuthenticationMethod.objects.bulk_create(rows_to_create, batch_size=10000) class Migration(migrations.Migration):