mirror of
https://github.com/discourse/discourse.git
synced 2025-02-06 23:00:46 +08:00
FIX: refactor calling of timed backup deletion
refactor calling of timed backup deletion so it runs regardless of SiteSetting.automatic_backups_enabled value
This commit is contained in:
parent
c62d1197b9
commit
3837657449
|
@ -529,6 +529,7 @@ PLATFORMS
|
||||||
x86_64-darwin-18
|
x86_64-darwin-18
|
||||||
x86_64-darwin-19
|
x86_64-darwin-19
|
||||||
x86_64-darwin-20
|
x86_64-darwin-20
|
||||||
|
x86_64-darwin-22
|
||||||
x86_64-linux
|
x86_64-linux
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
|
|
|
@ -6,6 +6,7 @@ module Jobs
|
||||||
sidekiq_options retry: false
|
sidekiq_options retry: false
|
||||||
|
|
||||||
def execute(args)
|
def execute(args)
|
||||||
|
delete_prior_to_n_days
|
||||||
return unless SiteSetting.enable_backups? && SiteSetting.automatic_backups_enabled?
|
return unless SiteSetting.enable_backups? && SiteSetting.automatic_backups_enabled?
|
||||||
|
|
||||||
store = BackupRestore::BackupStore.create
|
store = BackupRestore::BackupStore.create
|
||||||
|
@ -25,6 +26,10 @@ module Jobs
|
||||||
raise
|
raise
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_prior_to_n_days
|
||||||
|
BackupRestore::Backuper.new(Discourse.system_user.id).delete_prior_to_n_days
|
||||||
|
end
|
||||||
|
|
||||||
def notify_user(ex)
|
def notify_user(ex)
|
||||||
SystemMessage.create_from_system_user(
|
SystemMessage.create_from_system_user(
|
||||||
Discourse.system_user,
|
Discourse.system_user,
|
||||||
|
|
|
@ -51,13 +51,19 @@ module BackupRestore
|
||||||
@backup_filename
|
@backup_filename
|
||||||
ensure
|
ensure
|
||||||
delete_old
|
delete_old
|
||||||
delete_prior_to_n_days
|
|
||||||
clean_up
|
clean_up
|
||||||
notify_user
|
notify_user
|
||||||
log "Finished!"
|
log "Finished!"
|
||||||
publish_completion
|
publish_completion
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_prior_to_n_days
|
||||||
|
return if Rails.env.development?
|
||||||
|
store.delete_prior_to_n_days
|
||||||
|
rescue => ex
|
||||||
|
log "Something went wrong while deleting backups prior to n days....", ex
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def ensure_no_operation_is_running
|
def ensure_no_operation_is_running
|
||||||
|
@ -359,15 +365,6 @@ module BackupRestore
|
||||||
log "Something went wrong while deleting old backups.", ex
|
log "Something went wrong while deleting old backups.", ex
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_prior_to_n_days
|
|
||||||
return if Rails.env.development?
|
|
||||||
|
|
||||||
log "Deleting backups prior to n days..."
|
|
||||||
store.delete_prior_to_n_days
|
|
||||||
rescue => ex
|
|
||||||
log "Something went wrong while deleting backups prior to n days....", ex
|
|
||||||
end
|
|
||||||
|
|
||||||
def notify_user
|
def notify_user
|
||||||
return if success && @user.id == Discourse::SYSTEM_USER_ID
|
return if success && @user.id == Discourse::SYSTEM_USER_ID
|
||||||
|
|
||||||
|
|
|
@ -131,9 +131,13 @@ module BackupRestore
|
||||||
def unsorted_files
|
def unsorted_files
|
||||||
objects = []
|
objects = []
|
||||||
|
|
||||||
s3_helper.list.each do |obj|
|
begin
|
||||||
objects << create_file_from_object(obj) if obj.key.match?(file_regex)
|
s3_helper.list.each do |obj|
|
||||||
end
|
objects << create_file_from_object(obj) if obj.key.match?(file_regex)
|
||||||
|
end
|
||||||
|
rescue StandardError
|
||||||
|
NoMethodError
|
||||||
|
end #fired when s3_helper.list is nil - wont respond to .nil?
|
||||||
|
|
||||||
objects
|
objects
|
||||||
rescue Aws::Errors::ServiceError => e
|
rescue Aws::Errors::ServiceError => e
|
||||||
|
|
|
@ -87,10 +87,6 @@ RSpec.describe BackupRestore::Backuper do
|
||||||
store.expects(:reset_cache).at_least_once
|
store.expects(:reset_cache).at_least_once
|
||||||
run
|
run
|
||||||
end
|
end
|
||||||
it "deletes any old backups" do
|
|
||||||
store.expects(:delete_prior_to_n_days)
|
|
||||||
run
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -169,6 +169,24 @@ RSpec.shared_examples "backup store" do
|
||||||
store.delete_prior_to_n_days
|
store.delete_prior_to_n_days
|
||||||
expect(store.files).to eq([backup1])
|
expect(store.files).to eq([backup1])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "runs if SiteSetting.automatic_backups_enabled? is true" do
|
||||||
|
stub_request(
|
||||||
|
:get,
|
||||||
|
"https://s3-backup-bucket.s3.amazonaws.com/?list-type=2&prefix=default/",
|
||||||
|
).to_return(status: 200, body: "", headers: {})
|
||||||
|
stub_request(:head, "https://s3-backup-bucket.s3.amazonaws.com/").to_return(
|
||||||
|
status: 200,
|
||||||
|
body: "",
|
||||||
|
headers: {
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
SiteSetting.automatic_backups_enabled = true
|
||||||
|
scheduleBackup = Jobs::ScheduleBackup.new
|
||||||
|
scheduleBackup.expects(:delete_prior_to_n_days)
|
||||||
|
scheduleBackup.perform
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#file" do
|
describe "#file" do
|
||||||
|
|
Loading…
Reference in New Issue
Block a user