From 801f34d3258032c39d09d7bd4297bead3f9707b2 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sun, 16 Jun 2019 22:42:05 +0300 Subject: [PATCH] Reduce number of "stat" syscalls for MergeTree data parts --- dbms/src/Common/ErrorCodes.cpp | 1 + dbms/src/Storages/MergeTree/MergeTreeDataPart.cpp | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dbms/src/Common/ErrorCodes.cpp b/dbms/src/Common/ErrorCodes.cpp index f15d066f8c..5881f6bc50 100644 --- a/dbms/src/Common/ErrorCodes.cpp +++ b/dbms/src/Common/ErrorCodes.cpp @@ -430,6 +430,7 @@ namespace ErrorCodes extern const int MYSQL_CLIENT_INSUFFICIENT_CAPABILITIES = 453; extern const int OPENSSL_ERROR = 454; extern const int SUSPICIOUS_TYPE_FOR_LOW_CARDINALITY = 455; + extern const int CANNOT_UNLINK = 458; extern const int KEEPER_EXCEPTION = 999; extern const int POCO_EXCEPTION = 1000; diff --git a/dbms/src/Storages/MergeTree/MergeTreeDataPart.cpp b/dbms/src/Storages/MergeTree/MergeTreeDataPart.cpp index 0ff198398c..fb18d381d3 100644 --- a/dbms/src/Storages/MergeTree/MergeTreeDataPart.cpp +++ b/dbms/src/Storages/MergeTree/MergeTreeDataPart.cpp @@ -402,15 +402,19 @@ void MergeTreeDataPart::remove() const for (const auto & [file, _] : checksums.files) { - if (0 != unlink((to + "/" + file).c_str())) - throwFromErrno("Cannot unlink file", ErrorCodes::CANNOT_UNLINK); + String path_to_remove = to + "/" + file; + if (0 != unlink(path_to_remove.c_str())) + throwFromErrno("Cannot unlink file " + path_to_remove, ErrorCodes::CANNOT_UNLINK); } - if (0 != unlink((to + "/checksums.txt").c_str())) - throwFromErrno("Cannot unlink file", ErrorCodes::CANNOT_UNLINK); + { + String path_to_remove = to + "/checksums.txt"; + if (0 != unlink(path_to_remove.c_str())) + throwFromErrno("Cannot unlink file", ErrorCodes::CANNOT_UNLINK); + } if (0 != rmdir(to.c_str())) - throwFromErrno("Cannot rmdir file", ErrorCodes::CANNOT_UNLINK); + throwFromErrno("Cannot rmdir file " + to, ErrorCodes::CANNOT_UNLINK); } catch (...) { -- GitLab