PERF: Optimize uploads:disable_secure_uploads to load in batches (#31030)

This commit updates the `uploads:disable_secure_uploads` to be more
memory efficient by loading records in batches instead.
This commit is contained in:
Alan Guo Xiang Tan 2025-01-28 15:31:00 +08:00 committed by GitHub
parent ed316b40a4
commit c0fdb2f33d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -574,11 +574,15 @@ task "uploads:disable_secure_uploads" => :environment do
.joins(:upload_references)
.where(upload_references: { target_type: "Post" })
.where(secure: true)
secure_upload_count = secure_uploads.count
secure_upload_ids = secure_uploads.pluck(:id)
puts "", "Marking #{secure_upload_count} uploads as not secure.", ""
secure_uploads.update_all(
secure_uploads.in_batches do |relation|
secure_upload_ids = relation.pluck(:id)
relation.update_all(
secure: false,
security_last_changed_at: Time.zone.now,
security_last_changed_reason: "marked as not secure by disable_secure_uploads task",
@ -589,8 +593,10 @@ task "uploads:disable_secure_uploads" => :environment do
"SELECT DISTINCT target_id FROM upload_references WHERE upload_id IN (?) AND target_type = 'Post'",
secure_upload_ids,
)
adjust_acls(secure_upload_ids)
mark_upload_posts_for_rebake(post_ids_to_rebake)
end
puts "", "Rebaking and uploading complete!", ""
end