wyxxxcat commented on code in PR #69290:
URL: https://github.com/apache/doris/pull/69290#discussion_r4520439866
##########
cloud/src/recycler/checker.cpp:
##########
@@ -1049,20 +1063,54 @@ int InstanceChecker::do_inverted_check() {
// so we choose to skip here.
TEST_SYNC_POINT_RETURN_WITH_VALUE("InstanceChecker::do_inverted_check",
(int)0);
- for (auto& [_, accessor] : accessor_map_) {
+ // List each storage location once, resources sharing one would count its
leaks repeatedly.
+ // Compare `location()`, not the normalized `uri()` ("a/b" and "a//b" hold
different objects).
+ std::unordered_set<std::string> checked_locations;
+ for (auto& [resource_id, accessor] : accessor_map_) {
+ if (!checked_locations.insert(accessor->location()).second) {
+ LOG(INFO) << "skip inverted check of a storage location already
checked, instance_id="
+ << instance_id_ << " resource_id=" << resource_id
+ << " uri=" << accessor->uri();
+ continue;
+ }
+ const StorageRoot& root = accessor->root();
+ // Another vault root may be nested in the listed data, e.g. prefix
"root/data" in "root"
+ // is listed here as data/data/...: skip it, it is checked when its
own vault is listed
+ std::string listed_dir = root.prefix.empty() ? "data/" : root.prefix +
"/data/";
+ std::vector<std::string> nested_dirs;
+ for (auto& [_, other] : accessor_map_) {
+ const StorageRoot& other_root = other->root();
+ std::string other_dir = other_root.prefix + "/data/";
+ if (other_root.container == root.container && other_root.prefix !=
root.prefix &&
+ other_dir.starts_with(listed_dir)) {
+ nested_dirs.push_back("data/" +
other_dir.substr(listed_dir.size()));
+ }
+ }
Review Comment:
Could we omit this nested-vault handling? In our expected storage layout,
the prefix comes before `data/`, which is followed directly by a tablet ID or
`packed_file`. We don't expect nested vault prefixes after `data/`, so this
additional check may not be necessary.
--
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]