Add FileManager::delete_partial_remote_location_if_needed.

This commit is contained in:
levlam 2024-03-12 18:52:23 +03:00
parent 4a64803805
commit c46af3318d
7 changed files with 17 additions and 24 deletions

View File

@ -243,9 +243,7 @@ class UploadBackgroundQuery final : public Td::ResultHandler {
// TODO td_->background_manager_->on_upload_background_file_parts_missing(file_id_, std::move(bad_parts)); // TODO td_->background_manager_->on_upload_background_file_parts_missing(file_id_, std::move(bad_parts));
// return; // return;
} else { } else {
if (status.code() != 429 && status.code() < 500 && !G()->close_flag()) { td_->file_manager_->delete_partial_remote_location_if_needed(file_id_, status);
td_->file_manager_->delete_partial_remote_location(file_id_);
}
} }
td_->file_manager_->cancel_upload(file_id_); td_->file_manager_->cancel_upload(file_id_);
promise_.set_error(std::move(status)); promise_.set_error(std::move(status));

View File

@ -309,11 +309,7 @@ class BusinessConnectionManager::UploadBusinessMediaQuery final : public Td::Res
delete_thumbnail(); delete_thumbnail();
auto file_id = get_message_file_id(message_); auto file_id = get_message_file_id(message_);
if (status.code() != 429 && status.code() < 500) { td_->file_manager_->delete_partial_remote_location_if_needed(file_id, status);
td_->file_manager_->delete_partial_remote_location(file_id);
} else {
send_closure_later(G()->file_manager(), &FileManager::cancel_upload, file_id);
}
promise_.set_error(std::move(status)); promise_.set_error(std::move(status));
} }
}; };

View File

@ -562,10 +562,10 @@ class UploadProfilePhotoQuery final : public Td::ResultHandler {
} }
void on_error(Status status) final { void on_error(Status status) final {
promise_.set_error(std::move(status));
if (file_id_.is_valid()) { if (file_id_.is_valid()) {
td_->file_manager_->delete_partial_remote_location(file_id_); td_->file_manager_->delete_partial_remote_location(file_id_);
} }
promise_.set_error(std::move(status));
} }
}; };

View File

@ -3093,9 +3093,7 @@ class SendMediaQuery final : public Td::ResultHandler {
td_->messages_manager_->on_send_message_file_parts_missing(random_id_, std::move(bad_parts)); td_->messages_manager_->on_send_message_file_parts_missing(random_id_, std::move(bad_parts));
return; return;
} else { } else {
if (status.code() != 429 && status.code() < 500 && !G()->close_flag()) { td_->file_manager_->delete_partial_remote_location_if_needed(file_id_, status);
td_->file_manager_->delete_partial_remote_location(file_id_);
}
} }
} else if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(status)) { } else if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(status)) {
if (file_id_.is_valid() && !was_uploaded_) { if (file_id_.is_valid() && !was_uploaded_) {
@ -3184,9 +3182,7 @@ class UploadMediaQuery final : public Td::ResultHandler {
std::move(bad_parts)); std::move(bad_parts));
return; return;
} else { } else {
if (status.code() != 429 && status.code() < 500 && !G()->close_flag()) { td_->file_manager_->delete_partial_remote_location_if_needed(file_id_, status);
td_->file_manager_->delete_partial_remote_location(file_id_);
}
} }
} else if (FileReferenceManager::is_file_reference_error(status)) { } else if (FileReferenceManager::is_file_reference_error(status)) {
LOG(ERROR) << "Receive file reference error for UploadMediaQuery"; LOG(ERROR) << "Receive file reference error for UploadMediaQuery";
@ -12569,9 +12565,7 @@ void MessagesManager::on_send_secret_message_error(int64 random_id, Status error
return; return;
} }
if (error.code() != 429 && error.code() < 500 && !G()->close_flag()) { td_->file_manager_->delete_partial_remote_location_if_needed(file_id, error);
td_->file_manager_->delete_partial_remote_location(file_id);
}
} }
} }
} }
@ -25287,9 +25281,7 @@ void MessagesManager::on_message_media_edited(DialogId dialog_id, MessageId mess
return; return;
} }
if (result.error().code() != 429 && result.error().code() < 500 && !G()->close_flag()) { td_->file_manager_->delete_partial_remote_location_if_needed(file_id, result.error());
td_->file_manager_->delete_partial_remote_location(file_id);
}
} else if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(result.error())) { } else if (!td_->auth_manager_->is_bot() && FileReferenceManager::is_file_reference_error(result.error())) {
if (file_id.is_valid()) { if (file_id.is_valid()) {
VLOG(file_references) << "Receive " << result.error() << " for " << file_id; VLOG(file_references) << "Receive " << result.error() << " for " << file_id;

View File

@ -981,9 +981,7 @@ class UploadStickerFileQuery final : public Td::ResultHandler {
// TODO td_->stickers_manager_->on_upload_sticker_file_parts_missing(file_id_, std::move(bad_parts)); // TODO td_->stickers_manager_->on_upload_sticker_file_parts_missing(file_id_, std::move(bad_parts));
// return; // return;
} else { } else {
if (status.code() != 429 && status.code() < 500 && !G()->close_flag()) { td_->file_manager_->delete_partial_remote_location_if_needed(file_id_, status);
td_->file_manager_->delete_partial_remote_location(file_id_);
}
} }
} else if (FileReferenceManager::is_file_reference_error(status)) { } else if (FileReferenceManager::is_file_reference_error(status)) {
LOG(ERROR) << "Receive file reference error for UploadStickerFileQuery"; LOG(ERROR) << "Receive file reference error for UploadStickerFileQuery";

View File

@ -2857,6 +2857,14 @@ bool FileManager::delete_partial_remote_location(FileId file_id) {
return true; return true;
} }
void FileManager::delete_partial_remote_location_if_needed(FileId file_id, const Status &error) {
if (error.code() != 429 && error.code() < 500 && !G()->close_flag()) {
delete_partial_remote_location(file_id);
} else {
cancel_upload(file_id);
}
}
void FileManager::delete_file_reference(FileId file_id, Slice file_reference) { void FileManager::delete_file_reference(FileId file_id, Slice file_reference) {
VLOG(file_references) << "Delete file reference of file " << file_id << " " VLOG(file_references) << "Delete file reference of file " << file_id << " "
<< tag("reference_base64", base64_encode(file_reference)); << tag("reference_base64", base64_encode(file_reference));

View File

@ -495,6 +495,7 @@ class FileManager final : public FileLoadManager::Callback {
int32 new_priority, uint64 upload_order, bool force = false, bool prefer_small = false); int32 new_priority, uint64 upload_order, bool force = false, bool prefer_small = false);
void cancel_upload(FileId file_id); void cancel_upload(FileId file_id);
bool delete_partial_remote_location(FileId file_id); bool delete_partial_remote_location(FileId file_id);
void delete_partial_remote_location_if_needed(FileId file_id, const Status &error);
void delete_file_reference(FileId file_id, Slice file_reference); void delete_file_reference(FileId file_id, Slice file_reference);
void get_content(FileId file_id, Promise<BufferSlice> promise); void get_content(FileId file_id, Promise<BufferSlice> promise);