Skip to content

Commit d5e56b6

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

File tree

3 files changed

+70
-3
lines changed

3 files changed

+70
-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: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,49 @@ ::grpc::Status ToGrpcStatus(const Status& arrow_status, ::grpc::ServerContext* c
331331
return status;
332332
}
333333

334+
#if GRPC_CPP_VERSION_CHECK(1, 80, 0)
335+
Status FromAbslStatus(const ::absl::Status& absl_status) {
336+
switch (absl_status.code()) {
337+
case ::absl::StatusCode::kOk:
338+
return Status::OK();
339+
case ::absl::StatusCode::kCancelled:
340+
return Status::Cancelled(absl_status.ToString());
341+
case ::absl::StatusCode::kUnknown:
342+
return Status::UnknownError(absl_status.ToString());
343+
case ::absl::StatusCode::kInvalidArgument:
344+
return Status::Invalid(absl_status.ToString());
345+
case ::absl::StatusCode::kDeadlineExceeded:
346+
return Status::IOError(absl_status.ToString());
347+
case ::absl::StatusCode::kNotFound:
348+
return Status::KeyError(absl_status.ToString());
349+
case ::absl::StatusCode::kAlreadyExists:
350+
return Status::AlreadyExists(absl_status.ToString());
351+
case ::absl::StatusCode::kPermissionDenied:
352+
return Status::IOError(absl_status.ToString());
353+
case ::absl::StatusCode::kResourceExhausted:
354+
return Status::IOError(absl_status.ToString());
355+
case ::absl::StatusCode::kFailedPrecondition:
356+
return Status::IOError(absl_status.ToString());
357+
case ::absl::StatusCode::kAborted:
358+
return Status::IOError(absl_status.ToString());
359+
case ::absl::StatusCode::kOutOfRange:
360+
return Status::Invalid(absl_status.ToString());
361+
case ::absl::StatusCode::kUnimplemented:
362+
return Status::NotImplemented(absl_status.ToString());
363+
case ::absl::StatusCode::kInternal:
364+
return Status::IOError(absl_status.ToString());
365+
case ::absl::StatusCode::kUnavailable:
366+
return Status::IOError(absl_status.ToString());
367+
case ::absl::StatusCode::kDataLoss:
368+
return Status::IOError(absl_status.ToString());
369+
case ::absl::StatusCode::kUnauthenticated:
370+
return Status::IOError(absl_status.ToString());
371+
default:
372+
return Status::UnknownError(absl_status.ToString());
373+
}
374+
}
375+
#endif
376+
334377
} // namespace grpc
335378
} // namespace transport
336379
} // 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+
// gRPC 1.80.0 or later use absl::Status.
100+
#if GRPC_CPP_VERSION_CHECK(1, 80, 0)
101+
/// Convert an 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)