diff --git a/.clang-tidy b/.clang-tidy index c6fcc6c56..8977deae9 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -38,5 +38,7 @@ CheckOptions: value: '_' - key: readability-identifier-naming.ProtectedMemberSuffix value: '_' + - key: modernize-use-scoped-lock.WarnOnSingleLocks + value: 'false' HeaderFilterRegex: 'src/iceberg|example' diff --git a/src/iceberg/catalog/memory/in_memory_catalog.cc b/src/iceberg/catalog/memory/in_memory_catalog.cc index ebc490103..d644c44fe 100644 --- a/src/iceberg/catalog/memory/in_memory_catalog.cc +++ b/src/iceberg/catalog/memory/in_memory_catalog.cc @@ -20,9 +20,9 @@ #include "iceberg/catalog/memory/in_memory_catalog.h" #include -#include // IWYU pragma: keep +#include +#include -#include "iceberg/exception.h" #include "iceberg/table.h" #include "iceberg/table_metadata.h" #include "iceberg/util/macros.h" @@ -337,42 +337,42 @@ std::string_view InMemoryCatalog::name() const { return catalog_name_; } Status InMemoryCatalog::CreateNamespace( const Namespace& ns, const std::unordered_map& properties) { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); return root_namespace_->CreateNamespace(ns, properties); } Result> InMemoryCatalog::GetNamespaceProperties(const Namespace& ns) const { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); return root_namespace_->GetProperties(ns); } Result> InMemoryCatalog::ListNamespaces( const Namespace& ns) const { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); return root_namespace_->ListNamespaces(ns); } Status InMemoryCatalog::DropNamespace(const Namespace& ns) { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); return root_namespace_->DropNamespace(ns); } Result InMemoryCatalog::NamespaceExists(const Namespace& ns) const { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); return root_namespace_->NamespaceExists(ns); } Status InMemoryCatalog::UpdateNamespaceProperties( const Namespace& ns, const std::unordered_map& updates, const std::unordered_set& removals) { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); return root_namespace_->UpdateNamespaceProperties(ns, updates, removals); } Result> InMemoryCatalog::ListTables( const Namespace& ns) const { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); const auto& table_names = root_namespace_->ListTables(ns); ICEBERG_RETURN_UNEXPECTED(table_names); std::vector table_idents; @@ -405,12 +405,12 @@ Result> InMemoryCatalog::StageCreateTable( } Result InMemoryCatalog::TableExists(const TableIdentifier& identifier) const { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); return root_namespace_->TableExists(identifier); } Status InMemoryCatalog::DropTable(const TableIdentifier& identifier, bool purge) { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); // TODO(Guotao): Delete all metadata files if purge is true. return root_namespace_->UnregisterTable(identifier); } @@ -428,7 +428,7 @@ Result> InMemoryCatalog::LoadTable( Result metadata_location; { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); ICEBERG_ASSIGN_OR_RAISE(metadata_location, root_namespace_->GetTableMetadataLocation(identifier)); } @@ -443,7 +443,7 @@ Result> InMemoryCatalog::LoadTable( Result> InMemoryCatalog::RegisterTable( const TableIdentifier& identifier, const std::string& metadata_file_location) { - std::unique_lock lock(mutex_); + std::lock_guard guard(mutex_); if (!root_namespace_->NamespaceExists(identifier.ns)) { return NoSuchNamespace("table namespace does not exist."); } diff --git a/src/iceberg/catalog/rest/http_client.cc b/src/iceberg/catalog/rest/http_client.cc index 1e4fc1ee4..3e70b9d94 100644 --- a/src/iceberg/catalog/rest/http_client.cc +++ b/src/iceberg/catalog/rest/http_client.cc @@ -139,7 +139,7 @@ Result HttpClient::Get( const ErrorHandler& error_handler) { cpr::Response response; { - std::scoped_lock lock(session_mutex_); + std::lock_guard guard(session_mutex_); PrepareSession(path, headers, params); response = session_->Get(); } @@ -156,7 +156,7 @@ Result HttpClient::Post( const ErrorHandler& error_handler) { cpr::Response response; { - std::scoped_lock lock(session_mutex_); + std::lock_guard guard(session_mutex_); PrepareSession(path, headers); session_->SetBody(cpr::Body{body}); response = session_->Post(); @@ -176,7 +176,7 @@ Result HttpClient::PostForm( cpr::Response response; { - std::scoped_lock lock(session_mutex_); + std::lock_guard guard(session_mutex_); // Override default Content-Type (application/json) with form-urlencoded auto form_headers = headers; @@ -204,7 +204,7 @@ Result HttpClient::Head( const ErrorHandler& error_handler) { cpr::Response response; { - std::scoped_lock lock(session_mutex_); + std::lock_guard guard(session_mutex_); PrepareSession(path, headers); response = session_->Head(); } @@ -220,7 +220,7 @@ Result HttpClient::Delete( const ErrorHandler& error_handler) { cpr::Response response; { - std::scoped_lock lock(session_mutex_); + std::lock_guard guard(session_mutex_); PrepareSession(path, headers); response = session_->Delete(); } diff --git a/src/iceberg/table_metadata.h b/src/iceberg/table_metadata.h index 2d53fcb08..c00bd5e84 100644 --- a/src/iceberg/table_metadata.h +++ b/src/iceberg/table_metadata.h @@ -419,7 +419,7 @@ class ICEBERG_EXPORT TableMetadataBuilder : public ErrorCollector { Result> Build(); /// \brief Destructor - ~TableMetadataBuilder(); + ~TableMetadataBuilder() override; // Delete copy operations (use BuildFrom to create a new builder) TableMetadataBuilder(const TableMetadataBuilder&) = delete;