Skip to content

Commit 4145fc0

Browse files
committed
GH-49661: [CI][C++] Suppress deprecated warnings with gRPC 1.80.0
1 parent f51a70f commit 4145fc0

File tree

3 files changed

+71
-3
lines changed

3 files changed

+71
-3
lines changed

cpp/src/arrow/flight/transport/grpc/grpc_client.cc

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,19 +732,31 @@ class GrpcClientImpl : public internal::ClientTransport {
732732
# endif // defined(GRPC_USE_CERTIFICATE_VERIFIER)
733733

734734
# if defined(GRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS)
735+
# if GRPC_CPP_VERSION_CHECK(1, 80, 0)
736+
auto certificate_provider =
737+
std::make_shared<::grpc::experimental::InMemoryCertificateProvider>();
738+
RETURN_NOT_OK(FromAbslStatus(certificate_provider->UpdateRoot(kDummyRootCert)));
739+
# else
735740
auto certificate_provider =
736741
std::make_shared<::grpc::experimental::StaticDataCertificateProvider>(
737742
kDummyRootCert);
743+
# endif
738744
# if defined(GRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS_ROOT_CERTS)
739745
::grpc::experimental::TlsChannelCredentialsOptions tls_options(
740746
certificate_provider);
741-
# else // defined(GRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS_ROOT_CERTS)
742-
// While gRPC >= 1.36 does not require a root cert (it has a default)
743-
// in practice the path it hardcodes is broken. See grpc/grpc#21655.
747+
# else // defined(GRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS_ROOT_CERTS)
748+
// While gRPC >= 1.36 does not require a root cert (it has a default)
749+
// in practice the path it hardcodes is broken. See grpc/grpc#21655.
744750
::grpc::experimental::TlsChannelCredentialsOptions tls_options;
751+
# if GRPC_CPP_VERSION_CHECK(1, 80, 0)
752+
tls_options.set_root_certificate_provider(certificate_provider);
753+
# else
745754
tls_options.set_certificate_provider(certificate_provider);
755+
# endif
746756
# endif // defined(GRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS_ROOT_CERTS)
757+
# if !GRPC_CPP_VERSION_CHECK(1, 80, 0)
747758
tls_options.watch_root_certs();
759+
# endif
748760
tls_options.set_root_cert_name("dummy");
749761
# if defined(GRPC_USE_CERTIFICATE_VERIFIER)
750762
tls_options.set_certificate_verifier(std::move(cert_verifier));

cpp/src/arrow/flight/transport/grpc/util_internal.cc

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,50 @@ ::grpc::Status ToGrpcStatus(const Status& arrow_status, ::grpc::ServerContext* c
331331
return status;
332332
}
333333

334+
// Abseil is included.
335+
#ifdef ABSL_NAMESPACE_BEGIN
336+
Status FromAbslStatus(const ::absl::Status& absl_status) {
337+
switch (absl_status.code()) {
338+
case ::absl::StatusCode::kOk:
339+
return Status::OK();
340+
case ::absl::StatusCode::kCancelled:
341+
return Status::Cancelled(absl_status.ToString());
342+
case ::absl::StatusCode::kUnknown:
343+
return Status::UnknownError(absl_status.ToString());
344+
case ::absl::StatusCode::kInvalidArgument:
345+
return Status::Invalid(absl_status.ToString());
346+
case ::absl::StatusCode::kDeadlineExceeded:
347+
return Status::IOError(absl_status.ToString());
348+
case ::absl::StatusCode::kNotFound:
349+
return Status::KeyError(absl_status.ToString());
350+
case ::absl::StatusCode::kAlreadyExists:
351+
return Status::AlreadyExists(absl_status.ToString());
352+
case ::absl::StatusCode::kPermissionDenied:
353+
return Status::IOError(absl_status.ToString());
354+
case ::absl::StatusCode::kResourceExhausted:
355+
return Status::IOError(absl_status.ToString());
356+
case ::absl::StatusCode::kFailedPrecondition:
357+
return Status::IOError(absl_status.ToString());
358+
case ::absl::StatusCode::kAborted:
359+
return Status::IOError(absl_status.ToString());
360+
case ::absl::StatusCode::kOutOfRange:
361+
return Status::Invalid(absl_status.ToString());
362+
case ::absl::StatusCode::kUnimplemented:
363+
return Status::NotImplemented(absl_status.ToString());
364+
case ::absl::StatusCode::kInternal:
365+
return Status::IOError(absl_status.ToString());
366+
case ::absl::StatusCode::kUnavailable:
367+
return Status::IOError(absl_status.ToString());
368+
case ::absl::StatusCode::kDataLoss:
369+
return Status::IOError(absl_status.ToString());
370+
case ::absl::StatusCode::kUnauthenticated:
371+
return Status::IOError(absl_status.ToString());
372+
default:
373+
return Status::UnknownError(absl_status.ToString());
374+
}
375+
}
376+
#endif
377+
334378
} // namespace grpc
335379
} // namespace transport
336380
} // namespace flight

cpp/src/arrow/flight/transport/grpc/util_internal.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ class Status;
3434

3535
namespace flight {
3636

37+
#define GRPC_CPP_VERSION_CHECK(major, minor, patch) \
38+
((GRPC_CPP_VERSION_MAJOR > (major) || \
39+
(GRPC_CPP_VERSION_MAJOR == (major) && GRPC_CPP_VERSION_MINOR > (minor)) || \
40+
((GRPC_CPP_VERSION_MAJOR == (major) && GRPC_CPP_VERSION_MINOR == (minor) && \
41+
GRPC_CPP_VERSION_PATCH >= (patch)))))
42+
3743
#define GRPC_RETURN_NOT_OK(expr) \
3844
do { \
3945
::arrow::Status _s = (expr); \
@@ -90,6 +96,12 @@ ARROW_FLIGHT_EXPORT
9096
::grpc::Status ToGrpcStatus(const Status& arrow_status,
9197
::grpc::ServerContext* ctx = nullptr);
9298

99+
// Abseil is included.
100+
#ifdef ABSL_NAMESPACE_BEGIN
101+
/// Convert a Abseil status to an Arrow status.
102+
ARROW_FLIGHT_EXPORT
103+
Status FromAbslStatus(const ::absl::Status& absl_status);
104+
#endif
93105
} // namespace grpc
94106
} // namespace transport
95107
} // namespace flight

0 commit comments

Comments
 (0)