From 228649b8915e9ed6b838ed8b0b0bfe54c5a657b8 Mon Sep 17 00:00:00 2001 From: Jordan Rupprecht Date: Fri, 19 Dec 2025 18:35:50 -0800 Subject: [PATCH 1/2] Migrate multimap::find --- .../flight/transport/grpc/grpc_client.cc | 11 +++-- .../flight/transport/grpc/grpc_server.cc | 5 ++- .../flight/transport/grpc/util_internal.cc | 41 +++++++++---------- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/cpp/src/arrow/flight/transport/grpc/grpc_client.cc b/cpp/src/arrow/flight/transport/grpc/grpc_client.cc index 6cf3242b070..355d590b34a 100644 --- a/cpp/src/arrow/flight/transport/grpc/grpc_client.cc +++ b/cpp/src/arrow/flight/transport/grpc/grpc_client.cc @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -448,10 +449,12 @@ arrow::Result> GetBearerTokenHeader( // Get the auth token if it exists, this can be in the initial or the trailing metadata. auto trailing_headers = context.GetServerTrailingMetadata(); auto initial_headers = context.GetServerInitialMetadata(); - auto bearer_iter = trailing_headers.find(internal::kAuthHeader); - if (bearer_iter == trailing_headers.end()) { - bearer_iter = initial_headers.find(internal::kAuthHeader); - if (bearer_iter == initial_headers.end()) { + auto [bearer_iter, bearer_end] = + trailing_headers.equal_range(internal::kAuthHeader); + if (bearer_iter == bearer_end) { + std::tie(bearer_iter, bearer_end) = + initial_headers.equal_range(internal::kAuthHeader); + if (bearer_iter == bearer_end) { return std::make_pair("", ""); } } diff --git a/cpp/src/arrow/flight/transport/grpc/grpc_server.cc b/cpp/src/arrow/flight/transport/grpc/grpc_server.cc index 3cc854b58fe..03f22f8864d 100644 --- a/cpp/src/arrow/flight/transport/grpc/grpc_server.cc +++ b/cpp/src/arrow/flight/transport/grpc/grpc_server.cc @@ -307,9 +307,10 @@ class GrpcServiceHandler final : public FlightService::Service { } } else { const auto client_metadata = context->client_metadata(); - const auto auth_header = client_metadata.find(kGrpcAuthHeader); + const auto [auth_header, auth_header_end] = + client_metadata.equal_range(kGrpcAuthHeader); std::string token; - if (auth_header == client_metadata.end()) { + if (auth_header == auth_header_end) { token = ""; } else { token = std::string(auth_header->second.data(), auth_header->second.length()); diff --git a/cpp/src/arrow/flight/transport/grpc/util_internal.cc b/cpp/src/arrow/flight/transport/grpc/util_internal.cc index d29f1ce4178..4acde5c6863 100644 --- a/cpp/src/arrow/flight/transport/grpc/util_internal.cc +++ b/cpp/src/arrow/flight/transport/grpc/util_internal.cc @@ -55,31 +55,30 @@ static bool FromGrpcContext(const ::grpc::ClientContext& ctx, const std::multimap<::grpc::string_ref, ::grpc::string_ref>& trailers = ctx.GetServerTrailingMetadata(); - const auto code_val = trailers.find(kGrpcStatusCodeHeader); - if (code_val == trailers.end()) return false; + const auto [code_val_begin, code_val_end] = + trailers.equal_range(kGrpcStatusCodeHeader); + if (code_val_begin == code_val_end) return false; - const auto message_val = trailers.find(kGrpcStatusMessageHeader); - const std::optional message = - message_val == trailers.end() - ? std::nullopt - : std::optional( - std::string(message_val->second.data(), message_val->second.size())); + std::optional message; + if (const auto [it, end] = trailers.equal_range(kGrpcStatusMessageHeader); + it != end) { + message = std::string(it->second.data(), it->second.size()); + } - const auto detail_val = trailers.find(kGrpcStatusDetailHeader); - const std::optional detail_message = - detail_val == trailers.end() - ? std::nullopt - : std::optional( - std::string(detail_val->second.data(), detail_val->second.size())); + std::optional detail_message; + if (const auto [it, end] = trailers.equal_range(kGrpcStatusDetailHeader); + it != end) { + detail_message = std::string(it->second.data(), it->second.size()); + } - const auto grpc_detail_val = trailers.find(kBinaryErrorDetailsKey); - const std::optional detail_bin = - grpc_detail_val == trailers.end() - ? std::nullopt - : std::optional(std::string(grpc_detail_val->second.data(), - grpc_detail_val->second.size())); + std::optional detail_bin; + if (const auto [it, end] = trailers.equal_range(kBinaryErrorDetailsKey); + it != end) { + detail_bin = std::string(it->second.data(), it->second.size()); + } - std::string code_str(code_val->second.data(), code_val->second.size()); + std::string code_str(code_val_begin->second.data(), + code_val_begin->second.size()); *status = internal::ReconstructStatus(code_str, current_status, std::move(message), std::move(detail_message), std::move(detail_bin), std::move(flight_status_detail)); From fcda8b9acc145624757f7b004bd9fff0fdc7ea09 Mon Sep 17 00:00:00 2001 From: Jordan Rupprecht Date: Mon, 22 Dec 2025 18:40:05 -0800 Subject: [PATCH 2/2] format --- .../arrow/flight/transport/grpc/grpc_client.cc | 3 +-- .../arrow/flight/transport/grpc/util_internal.cc | 15 +++++---------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/cpp/src/arrow/flight/transport/grpc/grpc_client.cc b/cpp/src/arrow/flight/transport/grpc/grpc_client.cc index 355d590b34a..a2af830db77 100644 --- a/cpp/src/arrow/flight/transport/grpc/grpc_client.cc +++ b/cpp/src/arrow/flight/transport/grpc/grpc_client.cc @@ -449,8 +449,7 @@ arrow::Result> GetBearerTokenHeader( // Get the auth token if it exists, this can be in the initial or the trailing metadata. auto trailing_headers = context.GetServerTrailingMetadata(); auto initial_headers = context.GetServerInitialMetadata(); - auto [bearer_iter, bearer_end] = - trailing_headers.equal_range(internal::kAuthHeader); + auto [bearer_iter, bearer_end] = trailing_headers.equal_range(internal::kAuthHeader); if (bearer_iter == bearer_end) { std::tie(bearer_iter, bearer_end) = initial_headers.equal_range(internal::kAuthHeader); diff --git a/cpp/src/arrow/flight/transport/grpc/util_internal.cc b/cpp/src/arrow/flight/transport/grpc/util_internal.cc index 4acde5c6863..ff8607778b9 100644 --- a/cpp/src/arrow/flight/transport/grpc/util_internal.cc +++ b/cpp/src/arrow/flight/transport/grpc/util_internal.cc @@ -55,30 +55,25 @@ static bool FromGrpcContext(const ::grpc::ClientContext& ctx, const std::multimap<::grpc::string_ref, ::grpc::string_ref>& trailers = ctx.GetServerTrailingMetadata(); - const auto [code_val_begin, code_val_end] = - trailers.equal_range(kGrpcStatusCodeHeader); + const auto [code_val_begin, code_val_end] = trailers.equal_range(kGrpcStatusCodeHeader); if (code_val_begin == code_val_end) return false; std::optional message; - if (const auto [it, end] = trailers.equal_range(kGrpcStatusMessageHeader); - it != end) { + if (const auto [it, end] = trailers.equal_range(kGrpcStatusMessageHeader); it != end) { message = std::string(it->second.data(), it->second.size()); } std::optional detail_message; - if (const auto [it, end] = trailers.equal_range(kGrpcStatusDetailHeader); - it != end) { + if (const auto [it, end] = trailers.equal_range(kGrpcStatusDetailHeader); it != end) { detail_message = std::string(it->second.data(), it->second.size()); } std::optional detail_bin; - if (const auto [it, end] = trailers.equal_range(kBinaryErrorDetailsKey); - it != end) { + if (const auto [it, end] = trailers.equal_range(kBinaryErrorDetailsKey); it != end) { detail_bin = std::string(it->second.data(), it->second.size()); } - std::string code_str(code_val_begin->second.data(), - code_val_begin->second.size()); + std::string code_str(code_val_begin->second.data(), code_val_begin->second.size()); *status = internal::ReconstructStatus(code_str, current_status, std::move(message), std::move(detail_message), std::move(detail_bin), std::move(flight_status_detail));