diff --git a/CMakeLists.txt b/CMakeLists.txt index c1d09f793..76c12ae2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2021-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -118,8 +118,10 @@ endif() # platform if (WIN32) set(_FINDPACKAGE_PROTOBUF_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/cmake") + set(_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/cmake/utf8_range") else() set(_FINDPACKAGE_PROTOBUF_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/${LIB_DIR}/cmake/protobuf") + set(_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf/${LIB_DIR}/cmake/utf8_range") endif() if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC) @@ -142,6 +144,7 @@ if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC) ${_CMAKE_ARGS_VCPKG_TARGET_TRIPLET} -DCURL_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/curl/${LIB_DIR}/cmake/CURL -DProtobuf_DIR:PATH=${_FINDPACKAGE_PROTOBUF_CONFIG_DIR} + -Dutf8_range_DIR:PATH=${_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR} -DgRPC_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/grpc/lib/cmake/grpc -Dabsl_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/absl/${LIB_DIR}/cmake/absl -Dre2_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/re2/${LIB_DIR}/cmake/re2 @@ -179,6 +182,7 @@ if(TRITON_ENABLE_PYTHON_HTTP OR TRITON_ENABLE_PYTHON_GRPC) ${_CMAKE_ARGS_CMAKE_TOOLCHAIN_FILE} ${_CMAKE_ARGS_VCPKG_TARGET_TRIPLET} -DProtobuf_DIR:PATH=${_FINDPACKAGE_PROTOBUF_CONFIG_DIR} + -Dutf8_range_DIR:PATH=${_FINDPACKAGE_UTF8_RANGE_CONFIG_DIR} -DgRPC_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/grpc/lib/cmake/grpc -Dabsl_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/absl/${LIB_DIR}/cmake/absl -Dc-ares_DIR:PATH=${TRITON_THIRD_PARTY_INSTALL_PREFIX}/c-ares/${LIB_DIR}/cmake/c-ares diff --git a/src/c++/CMakeLists.txt b/src/c++/CMakeLists.txt index dcd87c10e..bd529c1b4 100644 --- a/src/c++/CMakeLists.txt +++ b/src/c++/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright (c) 2021-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -113,7 +113,9 @@ if(TRITON_ENABLE_CC_GRPC) set(protobuf_MODULE_COMPATIBLE TRUE CACHE BOOL "protobuf_MODULE_COMPATIBLE" FORCE) find_package(Protobuf CONFIG REQUIRED) message(STATUS "Using protobuf ${Protobuf_VERSION}") - include_directories(${Protobuf_INCLUDE_DIRS}) + # SYSTEM so header-internal deprecation warnings in protobuf do not + # fail the -Werror build. + include_directories(SYSTEM ${Protobuf_INCLUDE_DIRS}) endif() # TRITON_ENABLE_CC_GRPC # @@ -122,7 +124,10 @@ endif() # TRITON_ENABLE_CC_GRPC if(TRITON_ENABLE_CC_GRPC) find_package(gRPC CONFIG REQUIRED) message(STATUS "Using gRPC ${gRPC_VERSION}") - include_directories($) + # SYSTEM so header-internal deprecation warnings in gRPC do not fail + # the -Werror build. + include_directories( + SYSTEM $) endif() # TRITON_ENABLE_CC_GRPC if(TRITON_ENABLE_CC_HTTP OR TRITON_ENABLE_CC_GRPC) diff --git a/src/c++/library/libgrpcclient.ldscript b/src/c++/library/libgrpcclient.ldscript index 0efe94d17..47a46cd57 100644 --- a/src/c++/library/libgrpcclient.ldscript +++ b/src/c++/library/libgrpcclient.ldscript @@ -28,6 +28,14 @@ extern "C++" { triton::client*; inference*; + # protobuf v33's public message headers (exposed to consumers via the + # exported 'inference*' generated types) inline abseil CHECK/LOG(FATAL) + # calls. On aarch64 the inlined fast-path parser + # google::protobuf::internal::VarintParseSlowArm pulls these into the + # consumer translation unit, so a program linking only -lgrpcclient + # against this .so must be able to resolve the abseil log_internal + # symbols. Export them (glob keeps it version-string agnostic). + absl::*log_internal*; }; local: *; }; diff --git a/src/c++/tests/cc_client_test.cc b/src/c++/tests/cc_client_test.cc index f302ebaa6..89718cae7 100644 --- a/src/c++/tests/cc_client_test.cc +++ b/src/c++/tests/cc_client_test.cc @@ -1,4 +1,4 @@ -// Copyright 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -24,6 +24,9 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include + +#include #include #define TRITON_INFERENCE_SERVER_CLIENT_CLASS InferenceServerHttpClient @@ -234,7 +237,11 @@ class GRPCTraceTest : public ::testing::Test { void ConvertResponse( const inference::TraceSettingResponse& response, std::string* str) { - *str = response.DebugString(); + // Use TextFormat::PrintToString rather than DebugString(): protobuf v33 + // deliberately makes DebugString() output unstable (it injects a + // "goo.gle/debugstr" marker) to discourage parsing, which breaks the + // string comparisons below. PrintToString gives stable text format. + google::protobuf::TextFormat::PrintToString(response, str); str->erase(std::remove(str->begin(), str->end(), ' '), str->end()); str->erase(std::remove(str->begin(), str->end(), '\n'), str->end()); } diff --git a/src/grpc_generated/javascript/package-lock.json b/src/grpc_generated/javascript/package-lock.json index db58e4280..b220716ec 100644 --- a/src/grpc_generated/javascript/package-lock.json +++ b/src/grpc_generated/javascript/package-lock.json @@ -8,14 +8,14 @@ "name": "simple-grpc-tritonclient", "version": "1.0.0", "dependencies": { - "@grpc/grpc-js": "^1.8.20", + "@grpc/grpc-js": "^1.14.4", "@grpc/proto-loader": "^0.8.1" } }, "node_modules/@grpc/grpc-js": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", - "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.8.0", diff --git a/src/grpc_generated/javascript/package.json b/src/grpc_generated/javascript/package.json index ddcd490b0..cd3edf890 100644 --- a/src/grpc_generated/javascript/package.json +++ b/src/grpc_generated/javascript/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "Simple gRPC client for NVIDIA Triton in Node.js", "dependencies": { - "@grpc/grpc-js": "^1.8.20", + "@grpc/grpc-js": "^1.14.4", "@grpc/proto-loader": "^0.8.1" }, "overrides": { diff --git a/src/java/pom.xml b/src/java/pom.xml index ea4f745e1..b56267b4e 100644 --- a/src/java/pom.xml +++ b/src/java/pom.xml @@ -31,7 +31,7 @@ com.fasterxml.jackson.core jackson-databind - 2.21.2 + 2.21.4 com.google.guava