mirror of
https://github.com/discourse/discourse.git
synced 2025-05-25 19:29:34 +08:00
DEV: Restore missing_s3_uploads
stats count if site was restored (#27984)
This commit ensures that we reset the `missing_s3_uploads` status count if there are no inventory files which are at least 2 days older than the site's restored date. Otherwise, a site with missing uploads but was subsequntly restored will be continue to report missing uploads for 2 days.
This commit is contained in:

committed by
GitHub

parent
f5cbc3e3b8
commit
5038cad68e
@ -155,7 +155,7 @@ class S3Inventory
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Discourse.stats.set("missing_s3_#{table_name}", missing_count)
|
set_missing_s3_discourse_stats(missing_count)
|
||||||
ensure
|
ensure
|
||||||
connection.exec("DROP TABLE #{tmp_table_name}") unless connection.nil?
|
connection.exec("DROP TABLE #{tmp_table_name}") unless connection.nil?
|
||||||
end
|
end
|
||||||
@ -250,6 +250,7 @@ class S3Inventory
|
|||||||
if BackupMetadata.last_restore_date.present? &&
|
if BackupMetadata.last_restore_date.present? &&
|
||||||
(symlink_file.last_modified - WAIT_AFTER_RESTORE_DAYS.days) <
|
(symlink_file.last_modified - WAIT_AFTER_RESTORE_DAYS.days) <
|
||||||
BackupMetadata.last_restore_date
|
BackupMetadata.last_restore_date
|
||||||
|
set_missing_s3_discourse_stats(0)
|
||||||
return []
|
return []
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -317,4 +318,8 @@ class S3Inventory
|
|||||||
def error(message)
|
def error(message)
|
||||||
log(message, StandardError.new(message))
|
log(message, StandardError.new(message))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_missing_s3_discourse_stats(count)
|
||||||
|
Discourse.stats.set("missing_s3_#{@model.table_name}", count)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -169,7 +169,9 @@ RSpec.describe S3Inventory do
|
|||||||
capture_stdout { inventory.backfill_etags_and_list_missing }
|
capture_stdout { inventory.backfill_etags_and_list_missing }
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not run if inventory files are not at least #{described_class::WAIT_AFTER_RESTORE_DAYS.days} days older than the last restore date" do
|
it "should not run if inventory files are not at least #{described_class::WAIT_AFTER_RESTORE_DAYS.days} days older than the last restore date and reset stats count" do
|
||||||
|
Discourse.stats.set("missing_s3_uploads", 2)
|
||||||
|
|
||||||
inventory.s3_client.stub_responses(
|
inventory.s3_client.stub_responses(
|
||||||
:list_objects_v2,
|
:list_objects_v2,
|
||||||
{
|
{
|
||||||
@ -186,6 +188,8 @@ RSpec.describe S3Inventory do
|
|||||||
inventory.s3_client.expects(:get_object).never
|
inventory.s3_client.expects(:get_object).never
|
||||||
|
|
||||||
capture_stdout { inventory.backfill_etags_and_list_missing }
|
capture_stdout { inventory.backfill_etags_and_list_missing }
|
||||||
|
|
||||||
|
expect(Discourse.stats.get("missing_s3_uploads")).to eq(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user