mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 11:11:13 +08:00
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:

committed by
GitHub

parent
ed316b40a4
commit
c0fdb2f33d
@ -574,23 +574,29 @@ task "uploads:disable_secure_uploads" => :environment do
|
|||||||
.joins(:upload_references)
|
.joins(:upload_references)
|
||||||
.where(upload_references: { target_type: "Post" })
|
.where(upload_references: { target_type: "Post" })
|
||||||
.where(secure: true)
|
.where(secure: true)
|
||||||
|
|
||||||
secure_upload_count = secure_uploads.count
|
secure_upload_count = secure_uploads.count
|
||||||
secure_upload_ids = secure_uploads.pluck(:id)
|
|
||||||
|
|
||||||
puts "", "Marking #{secure_upload_count} uploads as not secure.", ""
|
puts "", "Marking #{secure_upload_count} uploads as not secure.", ""
|
||||||
secure_uploads.update_all(
|
|
||||||
secure: false,
|
|
||||||
security_last_changed_at: Time.zone.now,
|
|
||||||
security_last_changed_reason: "marked as not secure by disable_secure_uploads task",
|
|
||||||
)
|
|
||||||
|
|
||||||
post_ids_to_rebake =
|
secure_uploads.in_batches do |relation|
|
||||||
DB.query_single(
|
secure_upload_ids = relation.pluck(:id)
|
||||||
"SELECT DISTINCT target_id FROM upload_references WHERE upload_id IN (?) AND target_type = 'Post'",
|
|
||||||
secure_upload_ids,
|
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",
|
||||||
)
|
)
|
||||||
adjust_acls(secure_upload_ids)
|
|
||||||
mark_upload_posts_for_rebake(post_ids_to_rebake)
|
post_ids_to_rebake =
|
||||||
|
DB.query_single(
|
||||||
|
"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!", ""
|
puts "", "Rebaking and uploading complete!", ""
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user