yiguolei commented on code in PR #66328:
URL: https://github.com/apache/doris/pull/66328#discussion_r3710102747
##########
be/src/exec/spill/spill_file_manager.cpp:
##########
@@ -162,6 +181,71 @@ void SpillFileManager::delete_spill_file(SpillFileSPtr
spill_file) {
spill_file->gc();
}
+void SpillFileManager::handoff_query_spill_directory(const std::string&
query_id,
+ SpillDataDir* data_dir) {
+ PendingQuerySpillDirectory pending_directory {
+ .query_dir = data_dir->get_spill_data_path(query_id),
+ .gc_dir = data_dir->get_spill_data_gc_path(
+ fmt::format("{}-{}", query_id,
UniqueId::gen_uid().to_string())),
+ };
+
+ auto status = Status::OK();
+
DBUG_EXECUTE_IF("fault_inject::spill_file_manager::handoff_query_spill_directory",
{
+ status = Status::Error<INTERNAL_ERROR>("injected query spill directory
handoff failure");
+ });
+ if (status.ok()) {
+ status = _try_handoff_query_spill_directory(pending_directory);
+ }
+ if (!status.ok()) {
+ {
+ std::lock_guard lock(_pending_query_spill_directories_mutex);
+
_pending_query_spill_directories.emplace_back(std::move(pending_directory));
+ }
+ LOG(WARNING) << fmt::format(
+ "failed to hand off spill query directory, dir {}, error: {}; "
+ "the spill GC will retry",
+ data_dir->get_spill_data_path(query_id), status.to_string());
+ }
+}
+
+Status SpillFileManager::_try_handoff_query_spill_directory(
+ const PendingQuerySpillDirectory& pending_directory) {
+ const auto& fs = io::global_local_filesystem();
+ auto status = fs->delete_empty_directory(pending_directory.query_dir);
+ if (status.ok()) {
+ return Status::OK();
+ }
+ if (!status.is<ErrorCode::DIRECTORY_NOT_EMPTY>()) {
+ return status;
+ }
+ return fs->rename(pending_directory.query_dir, pending_directory.gc_dir);
+}
+
+void SpillFileManager::_retry_pending_query_spill_directories() {
Review Comment:
这个函数名字起的。。。 retry 啥? 是delete 还是 create?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]