File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -45,6 +45,9 @@ namespace paimon {
4545// / execution.
4646// /
4747// / @note If `func` returns `void`, the returned future is of type `std::future<void>`.
48+ // /
49+ // / TODO: Since paimon-cpp uses `Status`/`Result` for error handling throughout, the exception
50+ // / capture logic (try/catch + set_exception) in `Via()` will be removed in the future.
4851template <typename Func>
4952auto Via (Executor* executor, Func&& func) -> std::future<decltype(func())> {
5053 using ResultType = decltype (func ());
Original file line number Diff line number Diff line change @@ -97,11 +97,14 @@ Result<std::set<std::string>> OrphanFilesCleanerImpl::Clean() {
9797 }
9898 PAIMON_ASSIGN_OR_RAISE (std::set<std::string> all_dirs, ListPaimonFileDirs ());
9999 std::vector<std::future<std::vector<std::unique_ptr<FileStatus>>>> file_statuses_futures;
100+ ScopeGuard file_statuses_guard (
101+ [&file_statuses_futures]() { CollectAll (file_statuses_futures); });
100102 for (const auto & dir : all_dirs) {
101103 file_statuses_futures.push_back (
102104 Via (executor_.get (), [this , dir] { return TryBestListingDirs (dir); }));
103105 }
104106 PAIMON_ASSIGN_OR_RAISE (std::set<std::string> used_file_names, GetUsedFiles ());
107+ file_statuses_guard.Release ();
105108
106109 Duration duration;
107110 std::set<std::string> need_to_deletes;
You can’t perform that action at this time.
0 commit comments