diff --git a/0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch b/0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch deleted file mode 100644 index b1e5cc1e093de4bc331ecf39a6fef437488e0f8c..0000000000000000000000000000000000000000 --- a/0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch +++ /dev/null @@ -1,695 +0,0 @@ -From 9f01fd62c356c05d14abbaebfcedf0b387d1cb96 Mon Sep 17 00:00:00 2001 -From: Craig Tiller -Date: Tue, 7 Feb 2023 08:27:04 -0800 -Subject: [PATCH] [http2] Dont drop connections on metadata limit exceeded - (#32309) - -* [http] Dont drop connections on metadata limit exceeded - -* remove bad test - -* Automated change: Fix sanity tests - ---------- - -Co-authored-by: ctiller ---- - CMakeLists.txt | 38 --- - build_autogenerated.yaml | 13 - - .../chttp2/transport/hpack_parser.cc | 11 +- - .../ext/transport/chttp2/transport/internal.h | 2 - - .../ext/transport/chttp2/transport/parsing.cc | 6 +- - test/core/bad_client/generate_tests.bzl | 1 - - test/core/bad_client/tests/large_metadata.cc | 108 --------- - .../bad_client/tests/large_metadata.headers | 106 -------- - test/core/end2end/tests/large_metadata.cc | 226 +++++++++--------- - tools/run_tests/generated/tests.json | 24 -- - 10 files changed, 126 insertions(+), 409 deletions(-) - delete mode 100644 test/core/bad_client/tests/large_metadata.cc - delete mode 100644 test/core/bad_client/tests/large_metadata.headers - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1ecaea8eb7..661ce2c511 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1078,7 +1078,6 @@ if(gRPC_BUILD_TESTS) - add_dependencies(buildtests_cxx istio_echo_server_test) - add_dependencies(buildtests_cxx join_test) - add_dependencies(buildtests_cxx json_test) -- add_dependencies(buildtests_cxx large_metadata_bad_client_test) - add_dependencies(buildtests_cxx latch_test) - add_dependencies(buildtests_cxx lb_get_cpu_stats_test) - add_dependencies(buildtests_cxx lb_load_data_store_test) -@@ -12796,43 +12795,6 @@ target_link_libraries(json_test - ) - - --endif() --if(gRPC_BUILD_TESTS) -- --add_executable(large_metadata_bad_client_test -- test/core/bad_client/bad_client.cc -- test/core/bad_client/tests/large_metadata.cc -- test/core/end2end/cq_verifier.cc -- third_party/googletest/googletest/src/gtest-all.cc -- third_party/googletest/googlemock/src/gmock-all.cc --) -- --target_include_directories(large_metadata_bad_client_test -- PRIVATE -- ${CMAKE_CURRENT_SOURCE_DIR} -- ${CMAKE_CURRENT_SOURCE_DIR}/include -- ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} -- ${_gRPC_RE2_INCLUDE_DIR} -- ${_gRPC_SSL_INCLUDE_DIR} -- ${_gRPC_UPB_GENERATED_DIR} -- ${_gRPC_UPB_GRPC_GENERATED_DIR} -- ${_gRPC_UPB_INCLUDE_DIR} -- ${_gRPC_XXHASH_INCLUDE_DIR} -- ${_gRPC_ZLIB_INCLUDE_DIR} -- third_party/googletest/googletest/include -- third_party/googletest/googletest -- third_party/googletest/googlemock/include -- third_party/googletest/googlemock -- ${_gRPC_PROTO_GENS_DIR} --) -- --target_link_libraries(large_metadata_bad_client_test -- ${_gRPC_PROTOBUF_LIBRARIES} -- ${_gRPC_ALLTARGETS_LIBRARIES} -- grpc_test_util --) -- -- - endif() - if(gRPC_BUILD_TESTS) - -diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml -index 941a095cd1..9c2fbaf2b8 100644 ---- a/build_autogenerated.yaml -+++ b/build_autogenerated.yaml -@@ -6683,19 +6683,6 @@ targets: - deps: - - grpc_test_util - uses_polling: false --- name: large_metadata_bad_client_test -- gtest: true -- build: test -- language: c++ -- headers: -- - test/core/bad_client/bad_client.h -- - test/core/end2end/cq_verifier.h -- src: -- - test/core/bad_client/bad_client.cc -- - test/core/bad_client/tests/large_metadata.cc -- - test/core/end2end/cq_verifier.cc -- deps: -- - grpc_test_util - - name: latch_test - gtest: true - build: test -diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc -index 5354338cba..314707b59e 100644 ---- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc -+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc -@@ -1218,12 +1218,17 @@ class HPackParser::Parser { - "). GRPC_ARG_MAX_METADATA_SIZE can be set to increase this limit.", - *frame_length_, metadata_size_limit_); - if (metadata_buffer_ != nullptr) metadata_buffer_->Clear(); -+ // StreamId is used as a signal to skip this stream but keep the connection -+ // alive - return input_->MaybeSetErrorAndReturn( - [] { - return grpc_error_set_int( -- GRPC_ERROR_CREATE_FROM_STATIC_STRING( -- "received initial metadata size exceeds limit"), -- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED); -+ grpc_error_set_int( -+ GRPC_ERROR_CREATE_FROM_STATIC_STRING( -+ "received initial metadata size exceeds limit"), -+ GRPC_ERROR_INT_GRPC_STATUS, -+ GRPC_STATUS_RESOURCE_EXHAUSTED), -+ GRPC_ERROR_INT_STREAM_ID, 0); - }, - false); - } -diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h -index 4af3c4ec9d..e01cff72c1 100644 ---- a/src/core/ext/transport/chttp2/transport/internal.h -+++ b/src/core/ext/transport/chttp2/transport/internal.h -@@ -541,8 +541,6 @@ struct grpc_chttp2_stream { - - grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture(); - -- /** saw some stream level error */ -- grpc_error_handle forced_close_error = GRPC_ERROR_NONE; - /** how many header frames have we received? */ - uint8_t header_frames_received = 0; - /** number of bytes received - reset at end of parse thread execution */ -diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc -index 6a45381e54..48dddc9313 100644 ---- a/src/core/ext/transport/chttp2/transport/parsing.cc -+++ b/src/core/ext/transport/chttp2/transport/parsing.cc -@@ -22,6 +22,7 @@ - #include - - #include -+#include - - #include "absl/base/attributes.h" - #include "absl/status/status.h" -@@ -675,10 +676,7 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t, - } - grpc_chttp2_parsing_become_skip_parser(t); - if (s) { -- s->forced_close_error = err; -- grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id, -- GRPC_HTTP2_PROTOCOL_ERROR, -- &s->stats.outgoing); -+ grpc_chttp2_cancel_stream(t, s, std::exchange(err, absl::OkStatus())); - } else { - GRPC_ERROR_UNREF(err); - } -diff --git a/test/core/bad_client/generate_tests.bzl b/test/core/bad_client/generate_tests.bzl -index 85aafed655..6100d142d6 100755 ---- a/test/core/bad_client/generate_tests.bzl -+++ b/test/core/bad_client/generate_tests.bzl -@@ -29,7 +29,6 @@ BAD_CLIENT_TESTS = { - "headers": test_options(), - "initial_settings_frame": test_options(), - "head_of_line_blocking": test_options(), -- "large_metadata": test_options(), - "out_of_bounds": test_options(), - "server_registered_method": test_options(), - "simple_request": test_options(), -diff --git a/test/core/bad_client/tests/large_metadata.cc b/test/core/bad_client/tests/large_metadata.cc -deleted file mode 100644 -index 9423dc3f6d..0000000000 ---- a/test/core/bad_client/tests/large_metadata.cc -+++ /dev/null -@@ -1,108 +0,0 @@ --/* -- * -- * Copyright 2015 gRPC authors. -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- * -- */ -- --#include -- --#include "absl/strings/str_format.h" --#include "absl/strings/str_join.h" -- --#include --#include -- --#include "src/core/lib/gpr/string.h" --#include "src/core/lib/surface/server.h" --#include "test/core/bad_client/bad_client.h" --#include "test/core/end2end/cq_verifier.h" -- --// The large-metadata headers that we're adding for this test are not --// actually appended to this in a single string, since the string would --// be longer than the C99 string literal limit. Instead, we dynamically --// construct it by adding the large headers one at a time. -- --/* headers: generated from large_metadata.headers in this directory */ --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST \ -- "\x00\x00\x00\x04\x01\x00\x00\x00\x00" \ -- "\x00" \ -- "5{\x01\x05\x00\x00\x00\x01" \ -- "\x10\x05:path\x08/foo/bar" \ -- "\x10\x07:scheme\x04http" \ -- "\x10\x07:method\x04POST" \ -- "\x10\x0a:authority\x09localhost" \ -- "\x10\x0c" \ -- "content-type\x10" \ -- "application/grpc" \ -- "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \ -- "\x10\x02te\x08trailers" \ -- "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)" -- --// Each large-metadata header is constructed from these start and end --// strings, with a two-digit number in between. --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR "\x10\x0duser-header" --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR \ -- "~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \ -- "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -- --// The size of each large-metadata header string. --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE \ -- ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR) - 1) + 2 + \ -- (sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR) - 1)) -- --// The number of headers we're adding and the total size of the client --// payload. --#define NUM_HEADERS 46 --#define TOO_MUCH_METADATA_FROM_CLIENT_REQUEST_SIZE \ -- ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST) - 1) + \ -- (NUM_HEADERS * PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE) + 1) -- --static void verifier_fails(grpc_server* server, grpc_completion_queue* cq, -- void* /*registered_method*/) { -- while (grpc_core::Server::FromC(server)->HasOpenConnections()) { -- GPR_ASSERT(grpc_completion_queue_next( -- cq, grpc_timeout_milliseconds_to_deadline(20), nullptr) -- .type == GRPC_QUEUE_TIMEOUT); -- } --} -- --int main(int argc, char** argv) { -- int i; -- grpc_init(); -- grpc::testing::TestEnvironment env(&argc, argv); -- -- // Test sending more metadata than the server will accept. -- std::vector headers; -- for (i = 0; i < NUM_HEADERS; ++i) { -- headers.push_back(absl::StrFormat( -- "%s%02d%s", PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR, i, -- PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR)); -- } -- std::string client_headers = absl::StrJoin(headers, ""); -- char client_payload[TOO_MUCH_METADATA_FROM_CLIENT_REQUEST_SIZE] = -- PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST; -- memcpy(client_payload + sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST) - 1, -- client_headers.data(), client_headers.size()); -- grpc_bad_client_arg args[2]; -- args[0] = connection_preface_arg; -- args[1].client_validator = rst_stream_client_validator; -- args[1].client_payload = client_payload; -- args[1].client_payload_length = sizeof(client_payload) - 1; -- -- grpc_run_bad_client_test(verifier_fails, args, 2, 0); -- -- grpc_shutdown(); -- return 0; --} -diff --git a/test/core/bad_client/tests/large_metadata.headers b/test/core/bad_client/tests/large_metadata.headers -deleted file mode 100644 -index 75de3ef100..0000000000 ---- a/test/core/bad_client/tests/large_metadata.headers -+++ /dev/null -@@ -1,106 +0,0 @@ --# headers used in simple_request.c --# use tools/codegen/core/gen_header_frame.py --set_end_stream to generate --# the binary strings contained in the source code --:path: /foo/bar --:scheme: http --:method: POST --:authority: localhost --content-type: application/grpc --grpc-accept-encoding: identity,deflate,gzip --te: trailers --user-agent: bad-client grpc-c/0.12.0.0 (linux) --user-header00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header01: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header02: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header03: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header04: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header05: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header06: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header07: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header08: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header09: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header22: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header23: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header24: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header25: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header26: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header27: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header28: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header29: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header30: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header31: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header32: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header33: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header34: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header35: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header36: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header37: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header39: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header41: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header42: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header43: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header44: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header45: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header46: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header47: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header48: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header49: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header50: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header51: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header52: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header53: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header54: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header55: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header56: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header57: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header58: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header60: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header61: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header62: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header63: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header64: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header65: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header66: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header67: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header68: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header69: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header70: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header71: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header72: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header73: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header74: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header75: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header76: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header77: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header79: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header81: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header82: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header83: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header84: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header85: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header86: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header87: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header88: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header89: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header90: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header91: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header92: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header93: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header94: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -diff --git a/test/core/end2end/tests/large_metadata.cc b/test/core/end2end/tests/large_metadata.cc -index 72cf519899..08cd20cb4f 100644 ---- a/test/core/end2end/tests/large_metadata.cc -+++ b/test/core/end2end/tests/large_metadata.cc -@@ -247,10 +247,6 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) { - // Server responds with metadata larger than what the client accepts. - static void test_request_with_bad_large_metadata_response( - grpc_end2end_test_config config) { -- grpc_call* c; -- grpc_call* s; -- grpc_metadata meta; -- const size_t large_size = 64 * 1024; - grpc_arg arg; - arg.type = GRPC_ARG_INTEGER; - arg.key = const_cast(GRPC_ARG_MAX_METADATA_SIZE); -@@ -259,115 +255,125 @@ static void test_request_with_bad_large_metadata_response( - grpc_end2end_test_fixture f = begin_test( - config, "test_request_with_bad_large_metadata_response", &args, &args); - cq_verifier* cqv = cq_verifier_create(f.cq); -- grpc_op ops[6]; -- grpc_op* op; -- grpc_metadata_array initial_metadata_recv; -- grpc_metadata_array trailing_metadata_recv; -- grpc_metadata_array request_metadata_recv; -- grpc_call_details call_details; -- grpc_status_code status; -- grpc_call_error error; -- grpc_slice details; -- int was_cancelled = 2; -- -- gpr_timespec deadline = five_seconds_from_now(); -- c = grpc_channel_create_call(f.client, nullptr, GRPC_PROPAGATE_DEFAULTS, f.cq, -- grpc_slice_from_static_string("/foo"), nullptr, -- deadline, nullptr); -- GPR_ASSERT(c); -- -- meta.key = grpc_slice_from_static_string("key"); -- meta.value = grpc_slice_malloc(large_size); -- memset(GRPC_SLICE_START_PTR(meta.value), 'a', large_size); -- -- grpc_metadata_array_init(&initial_metadata_recv); -- grpc_metadata_array_init(&trailing_metadata_recv); -- grpc_metadata_array_init(&request_metadata_recv); -- grpc_call_details_init(&call_details); -- -- memset(ops, 0, sizeof(ops)); -- // Client: send request. -- op = ops; -- op->op = GRPC_OP_SEND_INITIAL_METADATA; -- op->data.send_initial_metadata.count = 0; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_RECV_INITIAL_METADATA; -- op->data.recv_initial_metadata.recv_initial_metadata = &initial_metadata_recv; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; -- op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; -- op->data.recv_status_on_client.status = &status; -- op->data.recv_status_on_client.status_details = &details; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- error = grpc_call_start_batch(c, ops, static_cast(op - ops), tag(1), -- nullptr); -- GPR_ASSERT(GRPC_CALL_OK == error); -- -- error = -- grpc_server_request_call(f.server, &s, &call_details, -- &request_metadata_recv, f.cq, f.cq, tag(101)); -- GPR_ASSERT(GRPC_CALL_OK == error); -- -- CQ_EXPECT_COMPLETION(cqv, tag(101), 1); -- cq_verify(cqv); -- -- memset(ops, 0, sizeof(ops)); -- // Server: send large initial metadata -- op = ops; -- op->op = GRPC_OP_SEND_INITIAL_METADATA; -- op->data.send_initial_metadata.count = 1; -- op->data.send_initial_metadata.metadata = &meta; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_RECV_CLOSE_ON_SERVER; -- op->data.recv_close_on_server.cancelled = &was_cancelled; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; -- op->data.send_status_from_server.trailing_metadata_count = 0; -- op->data.send_status_from_server.status = GRPC_STATUS_OK; -- grpc_slice status_details = grpc_slice_from_static_string("xyz"); -- op->data.send_status_from_server.status_details = &status_details; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- error = grpc_call_start_batch(s, ops, static_cast(op - ops), tag(102), -- nullptr); -- GPR_ASSERT(GRPC_CALL_OK == error); -- CQ_EXPECT_COMPLETION(cqv, tag(102), 1); -- CQ_EXPECT_COMPLETION(cqv, tag(1), 1); -- cq_verify(cqv); -- -- GPR_ASSERT(status == GRPC_STATUS_RESOURCE_EXHAUSTED); -- GPR_ASSERT(0 == grpc_slice_str_cmp( -- details, "received initial metadata size exceeds limit")); -- GPR_ASSERT(0 == grpc_slice_str_cmp(call_details.method, "/foo")); -- -- grpc_slice_unref(details); -- grpc_metadata_array_destroy(&initial_metadata_recv); -- grpc_metadata_array_destroy(&trailing_metadata_recv); -- grpc_metadata_array_destroy(&request_metadata_recv); -- grpc_call_details_destroy(&call_details); -- -- grpc_call_unref(c); -- grpc_call_unref(s); - -+ for (int i = 0; i < 10; i++) { -+ grpc_call* c; -+ grpc_call* s; -+ grpc_metadata meta; -+ const size_t large_size = 64 * 1024; -+ grpc_op ops[6]; -+ grpc_op* op; -+ grpc_metadata_array initial_metadata_recv; -+ grpc_metadata_array trailing_metadata_recv; -+ grpc_metadata_array request_metadata_recv; -+ grpc_call_details call_details; -+ grpc_status_code status; -+ grpc_call_error error; -+ grpc_slice details; -+ int was_cancelled = 2; -+ -+ gpr_timespec deadline = five_seconds_from_now(); -+ c = grpc_channel_create_call(f.client, nullptr, GRPC_PROPAGATE_DEFAULTS, -+ f.cq, grpc_slice_from_static_string("/foo"), -+ nullptr, deadline, nullptr); -+ GPR_ASSERT(c); -+ -+ meta.key = grpc_slice_from_static_string("key"); -+ meta.value = grpc_slice_malloc(large_size); -+ memset(GRPC_SLICE_START_PTR(meta.value), 'a', large_size); -+ -+ grpc_metadata_array_init(&initial_metadata_recv); -+ grpc_metadata_array_init(&trailing_metadata_recv); -+ grpc_metadata_array_init(&request_metadata_recv); -+ grpc_call_details_init(&call_details); -+ -+ memset(ops, 0, sizeof(ops)); -+ // Client: send request. -+ op = ops; -+ op->op = GRPC_OP_SEND_INITIAL_METADATA; -+ op->data.send_initial_metadata.count = 0; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_RECV_INITIAL_METADATA; -+ op->data.recv_initial_metadata.recv_initial_metadata = -+ &initial_metadata_recv; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; -+ op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; -+ op->data.recv_status_on_client.status = &status; -+ op->data.recv_status_on_client.status_details = &details; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ error = grpc_call_start_batch(c, ops, static_cast(op - ops), tag(1), -+ nullptr); -+ GPR_ASSERT(GRPC_CALL_OK == error); -+ -+ error = -+ grpc_server_request_call(f.server, &s, &call_details, -+ &request_metadata_recv, f.cq, f.cq, tag(101)); -+ GPR_ASSERT(GRPC_CALL_OK == error); -+ -+ CQ_EXPECT_COMPLETION(cqv, tag(101), 1); -+ cq_verify(cqv); -+ -+ memset(ops, 0, sizeof(ops)); -+ // Server: send large initial metadata -+ op = ops; -+ op->op = GRPC_OP_SEND_INITIAL_METADATA; -+ op->data.send_initial_metadata.count = 1; -+ op->data.send_initial_metadata.metadata = &meta; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_RECV_CLOSE_ON_SERVER; -+ op->data.recv_close_on_server.cancelled = &was_cancelled; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; -+ op->data.send_status_from_server.trailing_metadata_count = 0; -+ op->data.send_status_from_server.status = GRPC_STATUS_OK; -+ grpc_slice status_details = grpc_slice_from_static_string("xyz"); -+ op->data.send_status_from_server.status_details = &status_details; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ error = grpc_call_start_batch(s, ops, static_cast(op - ops), -+ tag(102), nullptr); -+ GPR_ASSERT(GRPC_CALL_OK == error); -+ CQ_EXPECT_COMPLETION(cqv, tag(102), 1); -+ CQ_EXPECT_COMPLETION(cqv, tag(1), 1); -+ cq_verify(cqv); -+ -+ GPR_ASSERT(status == GRPC_STATUS_RESOURCE_EXHAUSTED); -+ const char* expected_error = "received initial metadata size exceeds limit"; -+ grpc_slice actual_error = -+ grpc_slice_split_head(&details, strlen(expected_error)); -+ GPR_ASSERT(0 == grpc_slice_str_cmp(actual_error, expected_error)); -+ GPR_ASSERT(0 == grpc_slice_str_cmp(call_details.method, "/foo")); -+ -+ grpc_slice_unref(actual_error); -+ grpc_slice_unref(details); -+ grpc_metadata_array_destroy(&initial_metadata_recv); -+ grpc_metadata_array_destroy(&trailing_metadata_recv); -+ grpc_metadata_array_destroy(&request_metadata_recv); -+ grpc_call_details_destroy(&call_details); -+ -+ grpc_call_unref(c); -+ grpc_call_unref(s); -+ -+ grpc_slice_unref(meta.value); -+ } - cq_verifier_destroy(cqv); - -- grpc_slice_unref(meta.value); -- - end_test(&f); - config.tear_down_data(&f); - } -diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json -index 9f21710575..0cf8b37e76 100644 ---- a/tools/run_tests/generated/tests.json -+++ b/tools/run_tests/generated/tests.json -@@ -5087,30 +5087,6 @@ - ], - "uses_polling": false - }, -- { -- "args": [], -- "benchmark": false, -- "ci_platforms": [ -- "linux", -- "mac", -- "posix", -- "windows" -- ], -- "cpu_cost": 1.0, -- "exclude_configs": [], -- "exclude_iomgrs": [], -- "flaky": false, -- "gtest": true, -- "language": "c++", -- "name": "large_metadata_bad_client_test", -- "platforms": [ -- "linux", -- "mac", -- "posix", -- "windows" -- ], -- "uses_polling": true -- }, - { - "args": [], - "benchmark": false, --- -2.41.0 - diff --git a/1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch b/1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch deleted file mode 100644 index fce9f194e68116cfe63fbbaa740f5aaea164b6b9..0000000000000000000000000000000000000000 --- a/1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch +++ /dev/null @@ -1,232 +0,0 @@ -From cf1fdec53afb3bebb50b8239f1b912ff9586a468 Mon Sep 17 00:00:00 2001 -From: Chunmei Xu -Date: Mon, 6 May 2024 20:01:02 +0800 -Subject: [PATCH] [backport][iomgr][EventEngine] Improve server handling of - file descriptor exhaustion (#33672) - -Backport of #33656 - -format from https://github.com/grpc/grpc/commit/1d85b01fc1930b8ce0d991a8ab55f6863efa2211 -fix CVE-2023-4785 - -Signed-off-by: Chunmei Xu ---- - src/core/lib/gprpp/time.h | 12 ++++ - src/core/lib/iomgr/tcp_server_posix.cc | 56 ++++++++++++++----- - src/core/lib/iomgr/tcp_server_utils_posix.h | 14 ++++- - .../iomgr/tcp_server_utils_posix_common.cc | 21 +++++++ - 4 files changed, 88 insertions(+), 15 deletions(-) - -diff --git a/src/core/lib/gprpp/time.h b/src/core/lib/gprpp/time.h -index 2c5cb42060..02097628b8 100644 ---- a/src/core/lib/gprpp/time.h -+++ b/src/core/lib/gprpp/time.h -@@ -30,6 +30,18 @@ - #include "src/core/lib/gpr/time_precise.h" - #include "src/core/lib/gpr/useful.h" - -+#define GRPC_LOG_EVERY_N_SEC(n, severity, format, ...) \ -+ do { \ -+ static std::atomic prev{0}; \ -+ uint64_t now = grpc_core::Timestamp::FromTimespecRoundDown( \ -+ gpr_now(GPR_CLOCK_MONOTONIC)) \ -+ .milliseconds_after_process_epoch(); \ -+ if (prev == 0 || now - prev > (n)*1000) { \ -+ prev = now; \ -+ gpr_log(severity, format, __VA_ARGS__); \ -+ } \ -+ } while (0) -+ - namespace grpc_core { - - namespace time_detail { -diff --git a/src/core/lib/iomgr/tcp_server_posix.cc b/src/core/lib/iomgr/tcp_server_posix.cc -index 7ea6b3f4e9..48f712fd0e 100644 ---- a/src/core/lib/iomgr/tcp_server_posix.cc -+++ b/src/core/lib/iomgr/tcp_server_posix.cc -@@ -16,13 +16,17 @@ - * - */ - --/* FIXME: "posix" files shouldn't be depending on _GNU_SOURCE */ -+#include -+ -+#include -+ -+#include -+ -+// FIXME: "posix" files shouldn't be depending on _GNU_SOURCE - #ifndef _GNU_SOURCE - #define _GNU_SOURCE - #endif - --#include -- - #include "src/core/lib/iomgr/port.h" - - #ifdef GRPC_POSIX_SOCKET_TCP_SERVER -@@ -43,6 +47,9 @@ - #include "absl/strings/str_cat.h" - #include "absl/strings/str_format.h" - -+#include -+#include -+#include - #include - #include - #include -@@ -61,8 +68,11 @@ - #include "src/core/lib/iomgr/tcp_server_utils_posix.h" - #include "src/core/lib/iomgr/unix_sockets_posix.h" - #include "src/core/lib/resource_quota/api.h" -+#include "src/core/lib/transport/error_utils.h" - - static std::atomic num_dropped_connections{0}; -+static constexpr grpc_core::Duration kRetryAcceptWaitTime{ -+ grpc_core::Duration::Seconds(1)}; - - static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, - const grpc_channel_args* args, -@@ -206,21 +216,37 @@ static void on_read(void* arg, grpc_error_handle err) { - if (fd < 0) { - if (errno == EINTR) { - continue; -- } else if (errno == EAGAIN || errno == ECONNABORTED || -- errno == EWOULDBLOCK) { -+ } -+ // When the process runs out of fds, accept4() returns EMFILE. When this -+ // happens, the connection is left in the accept queue until either a -+ // read event triggers the on_read callback, or time has passed and the -+ // accept should be re-tried regardless. This callback is not cancelled, -+ // so a spurious wakeup may occur even when there's nothing to accept. -+ // This is not a performant code path, but if an fd limit has been -+ // reached, the system is likely in an unhappy state regardless. -+ if (errno == EMFILE) { -+ GRPC_LOG_EVERY_N_SEC(1, GPR_ERROR, "%s", -+ "File descriptor limit reached. Retrying."); - grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); -+ if (gpr_atm_full_xchg(&sp->retry_timer_armed, true)) return; -+ grpc_timer_init(&sp->retry_timer, -+ grpc_core::ExecCtx::Get()->Now() + kRetryAcceptWaitTime, -+ &sp->retry_closure); - return; -+ } -+ if (errno == EAGAIN || errno == ECONNABORTED || errno == EWOULDBLOCK) { -+ grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); -+ return; -+ } -+ gpr_mu_lock(&sp->server->mu); -+ if (!sp->server->shutdown_listeners) { -+ gpr_log(GPR_ERROR, "Failed accept4: %s", strerror(errno)); - } else { -- gpr_mu_lock(&sp->server->mu); -- if (!sp->server->shutdown_listeners) { -- gpr_log(GPR_ERROR, "Failed accept4: %s", strerror(errno)); -- } else { -- /* if we have shutdown listeners, accept4 could fail, and we -- needn't notify users */ -- } -- gpr_mu_unlock(&sp->server->mu); -- goto error; -+ // if we have shutdown listeners, accept4 could fail, and we -+ // needn't notify users - } -+ gpr_mu_unlock(&sp->server->mu); -+ goto error; - } - - if (sp->server->memory_quota->IsMemoryPressureHigh()) { -@@ -414,6 +440,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener, - sp->port_index = listener->port_index; - sp->fd_index = listener->fd_index + count - i; - GPR_ASSERT(sp->emfd); -+ grpc_tcp_server_listener_initialize_retry_timer(sp); - while (listener->server->tail->next != nullptr) { - listener->server->tail = listener->server->tail->next; - } -@@ -586,6 +613,7 @@ static void tcp_server_shutdown_listeners(grpc_tcp_server* s) { - if (s->active_ports) { - grpc_tcp_listener* sp; - for (sp = s->head; sp; sp = sp->next) { -+ grpc_timer_cancel(&sp->retry_timer); - grpc_fd_shutdown(sp->emfd, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown")); - } -diff --git a/src/core/lib/iomgr/tcp_server_utils_posix.h b/src/core/lib/iomgr/tcp_server_utils_posix.h -index 79527c2461..aaa9a1ae28 100644 ---- a/src/core/lib/iomgr/tcp_server_utils_posix.h -+++ b/src/core/lib/iomgr/tcp_server_utils_posix.h -@@ -25,6 +25,7 @@ - #include "src/core/lib/iomgr/resolve_address.h" - #include "src/core/lib/iomgr/socket_utils_posix.h" - #include "src/core/lib/iomgr/tcp_server.h" -+#include "src/core/lib/iomgr/timer.h" - #include "src/core/lib/resource_quota/memory_quota.h" - - /* one listening port */ -@@ -47,6 +48,11 @@ typedef struct grpc_tcp_listener { - identified while iterating through 'next'. */ - struct grpc_tcp_listener* sibling; - int is_sibling; -+ // If an accept4() call fails, a timer is started to drain the accept queue in -+ // case no further connection attempts reach the gRPC server. -+ grpc_closure retry_closure; -+ grpc_timer retry_timer; -+ gpr_atm retry_timer_armed; - } grpc_tcp_listener; - - /* the overall server */ -@@ -126,4 +132,10 @@ grpc_error_handle grpc_tcp_server_prepare_socket( - /* Ruturn true if the platform supports ifaddrs */ - bool grpc_tcp_server_have_ifaddrs(void); - --#endif /* GRPC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H */ -+/* Initialize (but don't start) the timer and callback to retry accept4() on a -+ listening socket after file descriptors have been exhausted. This must be -+ called when creating a new listener. */ -+void grpc_tcp_server_listener_initialize_retry_timer( -+ grpc_tcp_listener* listener); -+ -+#endif /* GRPC_SRC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H */ -diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc -index 549d01bff3..2dae238a76 100644 ---- a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc -+++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc -@@ -18,6 +18,8 @@ - - #include - -+#include -+ - #include "src/core/lib/iomgr/port.h" - - #ifdef GRPC_POSIX_SOCKET_TCP_SERVER_UTILS_COMMON -@@ -80,6 +82,25 @@ static int get_max_accept_queue_size(void) { - return s_max_accept_queue_size; - } - -+static void listener_retry_timer_cb(void* arg, grpc_error_handle err) { -+ // Do nothing if cancelled. -+ if (err != GRPC_ERROR_NONE) return; -+ grpc_tcp_listener* listener = static_cast(arg); -+ gpr_atm_no_barrier_store(&listener->retry_timer_armed, false); -+ if (!grpc_fd_is_shutdown(listener->emfd)) { -+ grpc_fd_set_readable(listener->emfd); -+ } -+} -+ -+void grpc_tcp_server_listener_initialize_retry_timer( -+ grpc_tcp_listener* listener) { -+ gpr_atm_no_barrier_store(&listener->retry_timer_armed, false); -+ grpc_timer_init_unset(&listener->retry_timer); -+ GRPC_CLOSURE_INIT(&listener->retry_closure, listener_retry_timer_cb, listener, -+ grpc_schedule_on_exec_ctx); -+} -+ -+ - static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd, - const grpc_resolved_address* addr, - unsigned port_index, --- -2.32.0.3.g01195cf9f - diff --git a/31671.patch b/31671.patch deleted file mode 100644 index 1d85e39e969de2c303e721f71291881b0520fa36..0000000000000000000000000000000000000000 --- a/31671.patch +++ /dev/null @@ -1,28 +0,0 @@ -From beb3d7c392c22517c5a91e2f13558bee379abb2a Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Wed, 16 Nov 2022 09:00:21 -0500 -Subject: [PATCH] Use CMake variables for paths in pkg-config files - -Use @gRPC_INSTALL_LIBDIR@ for libdir; this fixes an incorrect --L/usr/lib on multilib Linux systems where that is the 32-bit library -path and the correct path is /usr/lib64. - -Use @gRPC_INSTALL_INCLUDEDIR@ for consistency. ---- - cmake/pkg-config-template.pc.in | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/cmake/pkg-config-template.pc.in b/cmake/pkg-config-template.pc.in -index d56154bb3a53..5a56b4f88530 100644 ---- a/cmake/pkg-config-template.pc.in -+++ b/cmake/pkg-config-template.pc.in -@@ -1,7 +1,7 @@ - prefix=@CMAKE_INSTALL_PREFIX@ - exec_prefix=${prefix} --includedir=${prefix}/include --libdir=${exec_prefix}/lib -+includedir=${prefix}/@gRPC_INSTALL_INCLUDEDIR@ -+libdir=${exec_prefix}/@gRPC_INSTALL_LIBDIR@ - - Name: @PC_NAME@ - Description: @PC_DESCRIPTION@ diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 1be090e765ce0224708cf29d576f1dd2cfa856bf..0000000000000000000000000000000000000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# grpc - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index c284cfd9ac265c0f75dc9c31d439712cae546bde..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# grpc - -#### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz b/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz deleted file mode 100644 index 5f8d23e2897c6597607f2fad7a8d9b0650bfe546..0000000000000000000000000000000000000000 Binary files a/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz and /dev/null differ diff --git a/disable-to-download-external-proto-library.patch b/disable-to-download-external-proto-library.patch new file mode 100644 index 0000000000000000000000000000000000000000..d94a720bc0e4a0a25043fd66523eeea5786e1a1d --- /dev/null +++ b/disable-to-download-external-proto-library.patch @@ -0,0 +1,87 @@ +diff -Naur grpc-1.56.2.orig/CMakeLists.txt grpc-1.56.2/CMakeLists.txt +--- grpc-1.56.2.orig/CMakeLists.txt 2023-09-06 11:26:23.792351429 +0800 ++++ grpc-1.56.2/CMakeLists.txt 2023-09-06 11:27:22.148347246 +0800 +@@ -332,83 +332,6 @@ + set(_gRPC_ALLTARGETS_LIBRARIES ${_gRPC_ALLTARGETS_LIBRARIES} ${_gRPC_SYSTEMD_LIBRARIES}) + endif() + +-# Setup external proto library at third_party/envoy-api with 2 download URLs +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/envoy-api) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/envoy-api. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/envoy-api +- https://storage.googleapis.com/grpc-bazel-mirror/github.com/envoyproxy/data-plane-api/archive/68d4315167352ffac71f149a43b8088397d3f33d.tar.gz +- 3c7372b5cb33e5e5cc3afd82573fc6275f9a2cac8b1530e1af14f52f34047328 +- data-plane-api-68d4315167352ffac71f149a43b8088397d3f33d +- ) +-endif() +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/envoy-api) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/envoy-api. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/envoy-api +- https://github.com/envoyproxy/data-plane-api/archive/68d4315167352ffac71f149a43b8088397d3f33d.tar.gz +- 3c7372b5cb33e5e5cc3afd82573fc6275f9a2cac8b1530e1af14f52f34047328 +- data-plane-api-68d4315167352ffac71f149a43b8088397d3f33d +- ) +-endif() +-# Setup external proto library at third_party/googleapis with 2 download URLs +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googleapis) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/googleapis. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googleapis +- https://storage.googleapis.com/grpc-bazel-mirror/github.com/googleapis/googleapis/archive/2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz +- 5bb6b0253ccf64b53d6c7249625a7e3f6c3bc6402abd52d3778bfa48258703a0 +- googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92 +- ) +-endif() +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googleapis) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/googleapis. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/googleapis +- https://github.com/googleapis/googleapis/archive/2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz +- 5bb6b0253ccf64b53d6c7249625a7e3f6c3bc6402abd52d3778bfa48258703a0 +- googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92 +- ) +-endif() +-# Setup external proto library at third_party/opencensus-proto/src with 2 download URLs +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/opencensus-proto/src) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/opencensus-proto/src. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/opencensus-proto/src +- https://storage.googleapis.com/grpc-bazel-mirror/github.com/census-instrumentation/opencensus-proto/archive/v0.3.0.tar.gz +- b7e13f0b4259e80c3070b583c2f39e53153085a6918718b1c710caf7037572b0 +- opencensus-proto-0.3.0/src +- ) +-endif() +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/opencensus-proto/src) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/opencensus-proto/src. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/opencensus-proto/src +- https://github.com/census-instrumentation/opencensus-proto/archive/v0.3.0.tar.gz +- b7e13f0b4259e80c3070b583c2f39e53153085a6918718b1c710caf7037572b0 +- opencensus-proto-0.3.0/src +- ) +-endif() +-# Setup external proto library at third_party/xds with 2 download URLs +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/xds) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/xds. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/xds +- https://storage.googleapis.com/grpc-bazel-mirror/github.com/cncf/xds/archive/e9ce68804cb4e64cab5a52e3c8baf840d4ff87b7.tar.gz +- 0d33b83f8c6368954e72e7785539f0d272a8aba2f6e2e336ed15fd1514bc9899 +- xds-e9ce68804cb4e64cab5a52e3c8baf840d4ff87b7 +- ) +-endif() +-if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/xds) +- # Download the archive via HTTP, validate the checksum, and extract to third_party/xds. +- download_archive( +- ${CMAKE_CURRENT_SOURCE_DIR}/third_party/xds +- https://github.com/cncf/xds/archive/e9ce68804cb4e64cab5a52e3c8baf840d4ff87b7.tar.gz +- 0d33b83f8c6368954e72e7785539f0d272a8aba2f6e2e336ed15fd1514bc9899 +- xds-e9ce68804cb4e64cab5a52e3c8baf840d4ff87b7 +- ) +-endif() +- + if(WIN32) + set(_gRPC_BASELIB_LIBRARIES ws2_32 crypt32) + endif() diff --git a/fix-cpu-stat-errror-in-test.patch b/fix-cpu-stat-errror-in-test.patch new file mode 100644 index 0000000000000000000000000000000000000000..5ce9640acac655267a2c604bca94b7738a0fd820 --- /dev/null +++ b/fix-cpu-stat-errror-in-test.patch @@ -0,0 +1,11 @@ +diff -uprN grpc-1.48.1.orig/test/cpp/server/load_reporter/get_cpu_stats_test.cc grpc-1.48.1/test/cpp/server/load_reporter/get_cpu_stats_test.cc +--- grpc-1.48.1.orig/test/cpp/server/load_reporter/get_cpu_stats_test.cc 2023-09-19 05:17:53.342892779 +0000 ++++ grpc-1.48.1/test/cpp/server/load_reporter/get_cpu_stats_test.cc 2023-09-19 05:18:12.816063678 +0000 +@@ -44,6 +44,7 @@ TEST(GetCpuStatsTest, Ascending) { + const size_t kRuns = 100; + auto prev = grpc::load_reporter::GetCpuStatsImpl(); + for (size_t i = 0; i < kRuns; ++i) { ++ sleep(1); + auto cur = grpc::load_reporter::GetCpuStatsImpl(); + ASSERT_LE(prev.first, cur.first); + ASSERT_LE(prev.second, cur.second); diff --git a/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz b/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz deleted file mode 100644 index 5d9001f3dff8dec1880c06c0de100a0c2fc65094..0000000000000000000000000000000000000000 Binary files a/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz and /dev/null differ diff --git a/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch b/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch deleted file mode 100644 index 70b0abc47dfcebeacca4a912ac51fd3872e707cb..0000000000000000000000000000000000000000 --- a/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff -Naur grpc-1.37.1-original/CMakeLists.txt grpc-1.37.1/CMakeLists.txt ---- grpc-1.37.1-original/CMakeLists.txt 2021-04-27 18:01:25.000000000 -0400 -+++ grpc-1.37.1/CMakeLists.txt 2021-05-04 11:00:04.934427672 -0400 -@@ -3294,10 +3294,6 @@ - ${_gRPC_UPB_INCLUDE_DIR} - ${_gRPC_XXHASH_INCLUDE_DIR} - ${_gRPC_ZLIB_INCLUDE_DIR} -- third_party/googletest/googletest/include -- third_party/googletest/googletest -- third_party/googletest/googlemock/include -- third_party/googletest/googlemock - ${_gRPC_PROTO_GENS_DIR} - ) - target_link_libraries(grpc++_test_config -@@ -10669,7 +10665,6 @@ - - - endif() --if(gRPC_BUILD_TESTS) - - add_executable(grpc_cli - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.pb.cc -@@ -10683,8 +10678,6 @@ - test/cpp/util/proto_file_parser.cc - test/cpp/util/proto_reflection_descriptor_database.cc - test/cpp/util/service_describer.cc -- third_party/googletest/googletest/src/gtest-all.cc -- third_party/googletest/googlemock/src/gmock-all.cc - ) - - target_include_directories(grpc_cli -@@ -10699,10 +10692,6 @@ - ${_gRPC_UPB_INCLUDE_DIR} - ${_gRPC_XXHASH_INCLUDE_DIR} - ${_gRPC_ZLIB_INCLUDE_DIR} -- third_party/googletest/googletest/include -- third_party/googletest/googletest -- third_party/googletest/googlemock/include -- third_party/googletest/googlemock - ${_gRPC_PROTO_GENS_DIR} - ) - -@@ -10715,7 +10704,6 @@ - ) - - --endif() - if(gRPC_BUILD_CODEGEN AND gRPC_BUILD_GRPC_CPP_PLUGIN) - - add_executable(grpc_cpp_plugin diff --git a/grpc-1.39.0-system-crypto-policies.patch b/grpc-1.39.0-system-crypto-policies.patch deleted file mode 100644 index f6db78291c757844d21090fe2f6892c3ca2eea2d..0000000000000000000000000000000000000000 --- a/grpc-1.39.0-system-crypto-policies.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff -Naur grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm ---- grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-20 18:39:39.000000000 -0400 -+++ grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-23 14:42:11.649278304 -0400 -@@ -103,7 +103,7 @@ - BIO_free(pem); - - // Select cipher suite -- SSL_CTX_set_cipher_list(ctx, "ECDHE-RSA-AES128-GCM-SHA256"); -+ SSL_CTX_set_cipher_list(ctx, "PROFILE=SYSTEM"); - - // Select ALPN protocol - SSL_CTX_set_alpn_select_cb(ctx, alpn_cb, NULL); -diff -Naur grpc-1.39.0-original/test/core/handshake/client_ssl.cc grpc-1.39.0/test/core/handshake/client_ssl.cc ---- grpc-1.39.0-original/test/core/handshake/client_ssl.cc 2021-07-20 18:39:39.000000000 -0400 -+++ grpc-1.39.0/test/core/handshake/client_ssl.cc 2021-07-23 14:41:27.549570232 -0400 -@@ -220,9 +220,7 @@ - - // Set the cipher list to match the one expressed in - // src/core/tsi/ssl_transport_security.cc. -- const char* cipher_list = -- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-" -- "SHA384:ECDHE-RSA-AES256-GCM-SHA384"; -+ const char* cipher_list = "PROFILE=SYSTEM"; - if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) { - ERR_print_errors_fp(stderr); - gpr_log(GPR_ERROR, "Couldn't set server cipher list."); -diff -Naur grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc grpc-1.39.0/test/core/handshake/server_ssl_common.cc ---- grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc 2021-07-20 18:39:39.000000000 -0400 -+++ grpc-1.39.0/test/core/handshake/server_ssl_common.cc 2021-07-23 14:41:14.369657480 -0400 -@@ -204,9 +204,7 @@ - - // Set the cipher list to match the one expressed in - // src/core/tsi/ssl_transport_security.c. -- const char* cipher_list = -- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-" -- "SHA384:ECDHE-RSA-AES256-GCM-SHA384"; -+ const char* cipher_list = "PROFILE=SYSTEM"; - if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) { - ERR_print_errors_fp(stderr); - gpr_log(GPR_ERROR, "Couldn't set server cipher list."); diff --git a/grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch b/grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch deleted file mode 100644 index ac345b3658a65bad19702277b4e169e42e3acbbd..0000000000000000000000000000000000000000 --- a/grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 280cab57a6810d0b564540737d248b1fc7226b58 Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Wed, 8 Jun 2022 21:07:38 -0400 -Subject: [PATCH] Skip failing ChannelzServicerTest tests on Python 3.11 - ---- - .../grpcio_tests/tests/channelz/_channelz_servicer_test.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py b/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py -index 565a79814c..07ee2c3500 100644 ---- a/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py -+++ b/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py -@@ -274,12 +274,14 @@ class ChannelzServicerTest(unittest.TestCase): - self.assertEqual(gtc_resp.channel[i].data.calls_failed, - gsc_resp.subchannel.data.calls_failed) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_basic(self): - self._pairs = _generate_channel_server_pairs(1) - resp = self._channelz_stub.GetServers( - channelz_pb2.GetServersRequest(start_server_id=0)) - self.assertEqual(len(resp.server), 1) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_get_one_server(self): - self._pairs = _generate_channel_server_pairs(1) - gss_resp = self._channelz_stub.GetServers( -@@ -291,6 +293,7 @@ class ChannelzServicerTest(unittest.TestCase): - self.assertEqual(gss_resp.server[0].ref.server_id, - gs_resp.server.ref.server_id) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_call(self): - self._pairs = _generate_channel_server_pairs(1) - k_success = 23 -@@ -394,6 +397,7 @@ class ChannelzServicerTest(unittest.TestCase): - self.assertEqual(gs_resp.socket.data.messages_received, - test_constants.STREAM_LENGTH) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_sockets(self): - self._pairs = _generate_channel_server_pairs(1) - self._send_successful_unary_unary(0) -@@ -412,6 +416,7 @@ class ChannelzServicerTest(unittest.TestCase): - # If the RPC call failed, it will raise a grpc.RpcError - # So, if there is no exception raised, considered pass - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_listen_sockets(self): - self._pairs = _generate_channel_server_pairs(1) - --- -2.36.1 - diff --git a/grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch b/grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch deleted file mode 100644 index beae2e4a082f7a91ff42851b5631e553bf3d487e..0000000000000000000000000000000000000000 --- a/grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -Naur grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py grpc-1.48.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py ---- grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py 2022-07-18 20:40:04.000000000 -0400 -+++ grpc-1.48.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py 2022-08-14 15:41:01.208719432 -0400 -@@ -128,6 +128,7 @@ - @unittest.skipIf(os.name == "nt", "Windows multiprocessing unsupported") - @unittest.skipIf(test_common.running_under_gevent(), - "Import paths do not work with gevent runner.") -+@unittest.skip("Tests hang; possibly related to upstream issue #25368?") - class DynamicStubTest(unittest.TestCase): - - def test_sunny_day(self): diff --git a/grpc-1.48.4.tar.gz b/grpc-1.56.2.tar.gz similarity index 45% rename from grpc-1.48.4.tar.gz rename to grpc-1.56.2.tar.gz index 1920c196916c401713902dd6e6c822ad52871944..eb5007bb7fb6575db8c1467090719d3262a05868 100644 Binary files a/grpc-1.48.4.tar.gz and b/grpc-1.56.2.tar.gz differ diff --git a/grpc.spec b/grpc.spec index 5e95587d394bb26722c26d01142dc261f04c7395..a85f753c8291fb620f9c075140196a1a235abab4 100644 --- a/grpc.spec +++ b/grpc.spec @@ -1,133 +1,87 @@ -%define anolis_release 3 +%define anolis_release 1 + +%bcond_without bootstrap +%bcond_with third-party + +%global _lto_cflags %{nil} %global cpp_std 17 +%global srcversion %(echo '%{version}' | sed -r 's/~rc/-pre/') +%global pyversion %(echo '%{version}' | tr -d '~') +%global c_so_version 33 +%global cpp_so_version 1.56 +# https://github.com/grpc/grpc/pull/32914 +%global upb_version 23.0 + %global gtest_url https://github.com/google/googletest %global gtest_dir googletest-%{gtest_commit} %global gtest_commit 0e402173c97aea7a00749e825b194bfede4f2e45 +%if %{with third-party} %global envoy_api_commit 9c42588c956220b48eb3099d186487c2f04d32ec %global envoy_api_url https://github.com/envoyproxy/data-plane-api %global envoy_api_dir data-plane-api-%{envoy_api_commit} - %global googleapis_commit 2f9af297c84c55c8b871ba4495e01ade42476c92 %global googleapis_url https://github.com/googleapis/googleapis %global googleapis_dir googleapis-%{googleapis_commit} - %global opencensus_proto_version 0.3.0 %global opencensus_proto_url https://github.com/census-instrumentation/opencensus-proto %global opencensus_proto_dir opencensus-proto-%{opencensus_proto_version} - %global xds_commit cb28da3451f158a947dfc45090fe92b07b243bc1 %global xds_url https://github.com/cncf/xds %global xds_dir xds-%{xds_commit} +%endif -%bcond_without bootstrap -%bcond_without core_tests -%bcond_with python_aio_tests -%bcond_with python_gevent_tests -%bcond_with valgrind -%bcond_with gdb -%bcond_with system_gtest +Summary: RPC library and framework Name: grpc -Version: 1.48.4 +Version: 1.56.2 Release: %{anolis_release}%{?dist} -Summary: RPC library and framework - -%global srcversion %(echo '%{version}' | sed -r 's/~rc/-pre/') -%global pyversion %(echo '%{version}' | tr -d '~') -%global c_so_version 26 -%global cpp_so_version 1.48 - -License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT +License: Apache-2.0 AND BSD-3-Clause AND MIT URL: https://www.grpc.io -%global forgeurl https://github.com/grpc/grpc/ -Source0: %{forgeurl}/archive/v%{srcversion}/grpc-%{srcversion}.tar.gz -Source1: %{gtest_url}/archive/%{gtest_commit}/%{gtest_dir}.tar.gz -Source2: %{envoy_api_url}/archive/%{envoy_api_commit}/%{envoy_api_dir}.tar.gz -Source3: %{googleapis_url}/archive/%{googleapis_commit}/%{googleapis_dir}.tar.gz -Source4: %{opencensus_proto_url}/archive/v%{opencensus_proto_version}/%{opencensus_proto_dir}.tar.gz -Source5: %{xds_url}/archive/%{xds_commit}/%{xds_dir}.tar.gz - -Source100: grpc_cli.1 -Source101: grpc_cli-ls.1 -Source102: grpc_cli-call.1 -Source103: grpc_cli-type.1 -Source104: grpc_cli-parse.1 -Source105: grpc_cli-totext.1 -Source106: grpc_cli-tojson.1 -Source107: grpc_cli-tobinary.1 -Source108: grpc_cli-help.1 - -BuildRequires: gcc-c++ -BuildRequires: cmake -BuildRequires: ninja-build -%if %{with core_tests} -BuildRequires: chrpath +Source0: https://github.com/grpc/grpc/archive/v%{srcversion}/grpc-%{srcversion}.tar.gz +Source1: grpc_cli.1 +Source2: grpc_cli-ls.1 +Source3: grpc_cli-call.1 +Source4: grpc_cli-type.1 +Source5: grpc_cli-parse.1 +Source6: grpc_cli-tojson.1 +Source7: grpc_cli-tobinary.1 +Source8: grpc_cli-help.1 +Source9: %{gtest_url}/archive/%{gtest_commit}/%{gtest_dir}.tar.gz +%if %{with third-party} +Source10: %{envoy_api_url}/archive/%{envoy_api_commit}/%{envoy_api_dir}.tar.gz +Source11: %{googleapis_url}/archive/%{googleapis_commit}/%{googleapis_dir}.tar.gz +Source12: %{opencensus_proto_url}/archive/v%{opencensus_proto_version}/%{opencensus_proto_dir}.tar.gz +Source13: %{xds_url}/archive/%{xds_commit}/%{xds_dir}.tar.gz %endif -BuildRequires: pkgconfig(zlib) -BuildRequires: cmake(gflags) -BuildRequires: pkgconfig(protobuf) -BuildRequires: protobuf-compiler -BuildRequires: pkgconfig(re2) -BuildRequires: pkgconfig(openssl) -BuildRequires: cmake(c-ares) -BuildRequires: abseil-cpp-devel -BuildRequires: pkgconfig(libxxhash) -BuildRequires: xxhash-static - -%if %{with core_tests} -BuildRequires: cmake(benchmark) -%if %{with system_gtest} -BuildRequires: cmake(gtest) -BuildRequires: pkgconfig(gmock) -%endif -%if %{with valgrind} -BuildRequires: valgrind -%endif -%if %{with gdb} -BuildRequires: gdb -%endif -%endif - -BuildRequires: python3-devel -BuildRequires: python3dist(setuptools) -BuildRequires: python3-pip -BuildRequires: protobuf +BuildRequires: gcc-c++ cmake ninja-build gtest +BuildRequires: protobuf-compiler curl abseil-cpp-devel xxhash-static chrpath ca-certificates symlinks pkgconfig(protobuf-lite) +BuildRequires: cmake(benchmark) cmake(gflags) cmake(c-ares) python3-devel python3dist(setuptools) +BuildRequires: pkgconfig(zlib) pkgconfig(protobuf) pkgconfig(re2) pkgconfig(openssl) pkgconfig(libxxhash) BuildRequires: python3dist(six) >= 1.10 -BuildRequires: python3dist(cython) > 0.23 -BuildRequires: (python3dist(protobuf) >= 3.12.0 with python3dist(protobuf) < 4) +BuildRequires: python3-Cython +BuildRequires: python3dist(protobuf) >= 4.24.2 %if %{without bootstrap} BuildRequires: python3dist(xds-protos) >= 0.0.7 %endif - -%if %{with python_gevent_tests} -BuildRequires: python3dist(gevent) +BuildRequires: python3dist(coverage) >= 4.0 +BuildRequires: python3dist(google-auth) >= 1.17.2 +BuildRequires: python3dist(requests) >= 2.14.2 +BuildRequires: protobuf-lite + +Patch3000: grpc-1.36.4-python-grpcio_tests-fixture-super.patch +Patch3001: grpc-1.48.0-python-grpcio_tests-skip-compression-tests.patch +Patch3003: grpc-1.45.0-python_wrapper-path.patch +Patch5000: skip-network-tests.patch +%if %{without third-party} +Patch5001: disable-to-download-external-proto-library.patch %endif - -BuildRequires: curl -%global _lto_cflags %{nil} - -BuildRequires: ca-certificates -BuildRequires: symlinks -BuildRequires: hardlink - -Patch: grpc-1.39.0-system-crypto-policies.patch -Patch: grpc-1.36.4-python-grpcio_tests-fixture-super.patch -Patch: grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch -Patch: grpc-1.48.0-python-grpcio_tests-skip-compression-tests.patch -Patch: grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch -Patch: grpc-1.45.0-python_wrapper-path.patch -Patch: grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch -Patch: grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch -Patch: %{forgeurl}/pull/31671.patch -Patch: 0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch - -Patch: 1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch +Patch5002: fix-cpu-stat-errror-in-test.patch Requires: grpc-data = %{version}-%{release} -Provides: bundled(upb) +Provides: bundled(upb) = %{upb_version} Provides: bundled(utf8_range) %description @@ -157,9 +111,8 @@ This package provides the shared C core library. %package data Summary: Data for gRPC bindings License: Apache-2.0 -BuildArch: noarch - Requires: ca-certificates +BuildArch: noarch %description data Common data for gRPC bindings: currently, this contains only a symbolic link to @@ -169,9 +122,6 @@ the system shared TLS certificates. %package doc Summary: Documentation and examples for gRPC License: Apache-2.0 -BuildArch: noarch - -Obsoletes: python-grpcio-doc < 1.26.0-13 Provides: python-grpcio-doc = %{version}-%{release} Provides: python-grpcio-admin-doc = %{version}-%{release} Provides: python-grpcio-csds-doc = %{version}-%{release} @@ -180,6 +130,7 @@ Provides: python-grpcio-health-checking-doc = %{version}-%{release} Provides: python-grpcio-reflection-doc = %{version}-%{release} Provides: python-grpcio-status-doc = %{version}-%{release} Provides: python-grpcio-testing-doc = %{version}-%{release} +BuildArch: noarch %description doc Documentation and examples for gRPC, including Markdown documentation sources @@ -209,12 +160,9 @@ For rendered HTML documentation, please see https://grpc.io/docs/. %package cpp Summary: C++ language bindings for gRPC -# License: same as base package - Requires: grpc = %{version}-%{release} Requires: grpc-cpp = %{version}-%{release} - -Provides: bundled(upb) +Provides: bundled(upb) = %{upb_version} Provides: bundled(utf8_range) %description cpp @@ -223,13 +171,10 @@ C++ language bindings for gRPC. %package plugins Summary: Protocol buffers compiler plugins for gRPC -# License: same as base package - Requires: grpc = %{version}-%{release} Requires: grpc-cpp = %{version}-%{release} Requires: protobuf-compiler - -Provides: bundled(upb) +Provides: bundled(upb) = %{upb_version} Provides: bundled(utf8_range) %description plugins @@ -238,12 +183,9 @@ Plugins to the protocol buffers compiler to generate gRPC sources. %package cli Summary: Command-line tool for gRPC -# License: same as base package - Requires: grpc = %{version}-%{release} Requires: grpc-cpp = %{version}-%{release} - -Provides: bundled(upb) +Provides: bundled(upb) = %{upb_version} Provides: bundled(utf8_range) %description cli @@ -266,13 +208,8 @@ Summary: Development files for gRPC library Requires: grpc = %{version}-%{release} Requires: grpc-cpp = %{version}-%{release} Requires: grpc-plugins = %{version}-%{release} -Requires: kernel-headers -Requires: pkgconfig(protobuf) -Requires: pkgconfig(gmock) -Requires: abseil-cpp-devel -Requires: pkgconfig(re2) -Requires: cmake(c-ares) -Requires: pkgconfig(zlib) +Requires: kernel-headers abseil-cpp-devel cmake(c-ares) +Requires: pkgconfig(protobuf) pkgconfig(gmock) pkgconfig(re2) pkgconfig(zlib) %description devel Development headers and files for gRPC libraries (both C and C++). @@ -281,42 +218,31 @@ Development headers and files for gRPC libraries (both C and C++). %package -n python3-grpcio Summary: Python language bindings for gRPC Requires: grpc-data = %{version}-%{release} - -Provides: bundled(upb) +Provides: bundled(upb) = %{upb_version} Provides: bundled(utf8_range) -%py_provides python3-grpc - %description -n python3-grpcio Python language bindings for gRPC (HTTP/2-based RPC framework). - - %global grpcio_egg %{python3_sitearch}/grpcio-%{pyversion}-py%{python3_version}.egg-info %{?python_extras_subpkg:%python_extras_subpkg -n python3-grpcio -i %{grpcio_egg} protobuf} %package -n python3-grpcio-tools -Summary: Package for gRPC Python tools -Provides: bundled(upb) +Summary: Package for gRPC Python tools +Provides: bundled(upb) = %{upb_version} Provides: bundled(utf8_range) -%py_provides python3-grpc-tools %description -n python3-grpcio-tools Package for gRPC Python tools. - %if %{without bootstrap} %package -n python3-grpcio-admin Summary: A collection of admin services License: Apache-2.0 - BuildArch: noarch -%py_provides python3-grpc-admin - %description -n python3-grpcio-admin -gRPC Python Admin Interface Package -=================================== +gRPC Python Admin Interface Package. Debugging gRPC library can be a complex task. There are many configurations and internal states, which will affect the behavior of the library. This Python @@ -340,19 +266,14 @@ For any issues or suggestions, please send to https://github.com/grpc/grpc/issues. %endif - %if %{without bootstrap} %package -n python3-grpcio-csds Summary: xDS configuration dump library License: Apache-2.0 - BuildArch: noarch -%py_provides python3-grpc-csds - %description -n python3-grpcio-csds -gRPC Python Client Status Discovery Service package -=================================================== +gRPC Python Client Status Discovery Service package. CSDS is part of the Envoy xDS protocol: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/status/v3/csds.proto. @@ -368,14 +289,10 @@ https://github.com/grpc/grpc/issues. %package -n python3-grpcio-channelz Summary: Channel Level Live Debug Information Service for gRPC License: Apache-2.0 - BuildArch: noarch -%py_provides python3-grpc-channelz - %description -n python3-grpcio-channelz -gRPC Python Channelz package -============================ +gRPC Python Channelz package. Channelz is a live debug tool in gRPC Python. @@ -383,14 +300,10 @@ Channelz is a live debug tool in gRPC Python. %package -n python3-grpcio-health-checking Summary: Standard Health Checking Service for gRPC License: Apache-2.0 - BuildArch: noarch -%py_provides python3-grpc-health - %description -n python3-grpcio-health-checking -gRPC Python Health Checking -=========================== +gRPC Python Health Checking. Reference package for GRPC Python health checking. @@ -398,14 +311,10 @@ Reference package for GRPC Python health checking. %package -n python3-grpcio-reflection Summary: Standard Protobuf Reflection Service for gRPC License: Apache-2.0 - BuildArch: noarch -%py_provides python3-grpc-reflection - %description -n python3-grpcio-reflection -gRPC Python Reflection package -============================== +gRPC Python Reflection package. Reference package for reflection in GRPC Python. @@ -413,14 +322,10 @@ Reference package for reflection in GRPC Python. %package -n python3-grpcio-status Summary: Status proto mapping for gRPC License: Apache-2.0 - BuildArch: noarch -%py_provides python3-grpc-status - %description -n python3-grpcio-status -gRPC Python Status Proto -=========================== +gRPC Python Status Proto. Reference package for GRPC Python status proto mapping. @@ -428,55 +333,43 @@ Reference package for GRPC Python status proto mapping. %package -n python3-grpcio-testing Summary: Testing utilities for gRPC Python License: Apache-2.0 - BuildArch: noarch -%py_provides python3-grpc-testing - %description -n python3-grpcio-testing -gRPC Python Testing Package -=========================== +gRPC Python Testing Package. Testing utilities for gRPC Python. %prep %autosetup -p1 -n grpc-%{srcversion} +cp -p third_party/utf8_range/LICENSE LICENSE-utf8_range + +cat >> 'tools/distrib/python/grpcio_tools/protoc_lib_deps.py' <<'EOF' + + +del PROTOBUF_SUBMODULE_VERSION +PROTO_INCLUDE="%{_includedir}" + +_unbundle_libs = {"abseil-cpp", "protobuf"} +_unbundle_prefixes = {f"third_party/{lib}" for lib in _unbundle_libs} + +def _ok_prefix(path): + return not any(map(path.startswith, _unbundle_prefixes)) + +CC_FILES = list(filter(_ok_prefix, CC_FILES)) +CC_INCLUDES = list(filter(_ok_prefix, CC_INCLUDES)) +EOF -cp -p third_party/upb/third_party/utf8_range/LICENSE LICENSE-utf8_range - -echo '===== Patching grpcio_tools for system protobuf =====' 2>&1 - -sed -r -i \ - -e "s/^(# AUTO-GENERATED .*)/\\1\\n\ -# Then, modified by hand to build with an external system protobuf\ -# installation./" \ - -e 's/^(CC_FILES=\[).*(\])/\1\2/' \ - -e "s@^((CC|PROTO)_INCLUDE=')[^']+'@\1%{_includedir}'@" \ - -e '/^PROTOBUF_SUBMODULE_VERSION=/d' \ - 'tools/distrib/python/grpcio_tools/protoc_lib_deps.py' -echo '===== Preparing gtest/gmock =====' 2>&1 -%if %{without system_gtest} -%setup -q -T -D -b 1 -n grpc-%{srcversion} +%setup -q -T -D -b 9 -n grpc-%{srcversion} rm -rvf 'third_party/googletest' mv '../%{gtest_dir}' 'third_party/googletest' -%else -for gwhat in test mock -do - mkdir -p "third_party/googletest/google${gwhat}/src" \ - "third_party/googletest/google${gwhat}/include" - echo "typedef int dummy_${gwhat}_type;" \ - > "third_party/googletest/google${gwhat}/src/g${gwhat}-all.cc" -done -sed -r -i 's/^([[:blank:]]*)(\$\{_gRPC_GFLAGS_LIBRARIES\})/'\ -'\1\2\n\1gtest\n\1gmock/' CMakeLists.txt -%endif - -%setup -q -T -D -b 2 -n grpc-%{srcversion} -%setup -q -T -D -b 3 -n grpc-%{srcversion} -%setup -q -T -D -b 4 -n grpc-%{srcversion} -%setup -q -T -D -b 5 -n grpc-%{srcversion} +%if %{with third-party} +%setup -q -T -D -b 10 -n grpc-%{srcversion} +%setup -q -T -D -b 11 -n grpc-%{srcversion} +%setup -q -T -D -b 12 -n grpc-%{srcversion} +%setup -q -T -D -b 13 -n grpc-%{srcversion} { awk '$1 ~ /^(#|$)/ { next }; 1' <<'EOF' ../%{envoy_api_dir}/ third_party/envoy-api/ @@ -490,33 +383,26 @@ do rm -rvf "${todir}" mv "${fromdir}" "${todir}" done +%endif -echo '===== Removing bundled xxhash =====' 2>&1 rm -rvf third_party/xxhash - -echo '===== Fixing permissions =====' 2>&1 find . -type f -perm /0111 \ -exec gawk '!/^#!/ { print FILENAME }; { nextfile }' '{}' '+' | xargs -r chmod -v a-x -echo '===== Removing selected unused sources =====' 2>&1 rm -rfv \ src/boringssl/boringssl_prefix_symbols.h \ third_party/cares/ares_build.h \ third_party/upb/third_party/lunit echo '' > etc/roots.pem - rm -rvf examples/android src/android rm -vf examples/node/package-lock.json find . -type f -name .gitignore -print -delete - -echo '===== Fixing shebangs =====' 2>&1 find . -type f -perm /0111 -exec gawk \ '/^#!\/usr\/bin\/env[[:blank:]]/ { print FILENAME }; { nextfile }' \ '{}' '+' | xargs -r sed -r -i '1{s|^(#!/usr/bin/)env[[:blank:]]+([^[:blank:]]+)|\1\2|}' -echo '===== Fixing hard-coded C++ standard =====' 2>&1 sed -r -i 's/(std=c\+\+)14/\1%{cpp_std}/g' \ setup.py grpc.gyp Rakefile \ examples/cpp/*/Makefile \ @@ -524,11 +410,16 @@ sed -r -i 's/(std=c\+\+)14/\1%{cpp_std}/g' \ tools/run_tests/artifacts/artifact_targets.py \ tools/distrib/python/grpcio_tools/setup.py +ln -s ../../../../third_party/ tools/distrib/python/grpcio_tools/third_party + +from='^([[:blank:]]+)(def testTestsJsonUpToDate\()' +skip='@unittest.skip("JSON representations differ; cause not ascertained")' +sed -r -i "s/${from}/\\1${skip}\\n\\1\\2/" \ + src/python/grpcio_tests/tests/_sanity/_sanity_test.py + %build %global rmprefix %(echo $(($(wc -c <<<'%{_prefix}')+1))) - -echo '===== Building C (core) and C++ components =====' 2>&1 %cmake \ -DgRPC_INSTALL:BOOL=ON \ -DCMAKE_CXX_STANDARD:STRING=%{cpp_std} \ @@ -538,7 +429,7 @@ echo '===== Building C (core) and C++ components =====' 2>&1 -DgRPC_INSTALL_INCLUDEDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_includedir}') \ -DgRPC_INSTALL_CMAKEDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_libdir}/cmake/grpc') \ -DgRPC_INSTALL_SHAREDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_datadir}/grpc') \ - -DgRPC_BUILD_TESTS:BOOL=%{?with_core_tests:ON}%{?!with_core_tests:OFF} \ + -DgRPC_BUILD_TESTS:BOOL=ON \ -DgRPC_BUILD_CODEGEN:BOOL=ON \ -DgRPC_BUILD_CSHARP_EXT:BOOL=ON \ -DgRPC_BACKWARDS_COMPATIBILITY_MODE:BOOL=OFF \ @@ -561,13 +452,11 @@ echo '===== Building C (core) and C++ components =====' 2>&1 -GNinja %cmake_build -echo '===== Building Python grpcio package =====' 2>&1 PYROOT="${PWD}/%{_vpath_builddir}/pyroot" if [ -n "${PYTHONPATH-}" ]; then PYTHONPATH="${PYTHONPATH}:"; fi PYTHONPATH="${PYTHONPATH-}${PYROOT}%{python3_sitelib}" PYTHONPATH="${PYTHONPATH}:${PYROOT}%{python3_sitearch}" export PYTHONPATH - export GRPC_PYTHON_BUILD_WITH_CYTHON='True' export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL='True' export GRPC_PYTHON_BUILD_SYSTEM_ZLIB='True' @@ -584,7 +473,6 @@ export GRPC_PYTHON_LDFLAGS="$(pkg-config --libs protobuf)" %{__python3} %{py_setup} %{?py_setup_args} install \ -O1 --skip-build --root "${PYROOT}" -echo '===== Building Python grpcio_tools package =====' 2>&1 pushd "tools/distrib/python/grpcio_tools/" >/dev/null mkdir -p grpc_root/src for srcdir in compiler @@ -600,11 +488,9 @@ find . -type f -name protoc.py -execdir sed -r -i '1{/^#!/d}' '{}' '+' -O1 --skip-build --root "${PYROOT}" popd >/dev/null -echo '===== Building pure-Python packages =====' 1>&2 for suffix in channelz %{?!with_bootstrap:csds admin} health_checking \ reflection status testing tests do - echo "----> grpcio_${suffix} <----" 1>&2 pushd "src/python/grpcio_${suffix}/" >/dev/null if ! echo "${suffix}" | grep -E "^(admin|csds)$" >/dev/null then @@ -620,27 +506,22 @@ do popd >/dev/null done - %install %cmake_install - -%if %{with core_tests} install -t '%{buildroot}%{_bindir}' -p -D '%{_vpath_builddir}/grpc_cli' chrpath --delete '%{buildroot}%{_bindir}/grpc_cli' install -t '%{buildroot}%{_libdir}' -p \ '%{_vpath_builddir}/libgrpc++_test_config.so.%{cpp_so_version}' chrpath --delete \ '%{buildroot}%{_libdir}/libgrpc++_test_config.so.%{cpp_so_version}' - install -d '%{buildroot}/%{_mandir}/man1' install -t '%{buildroot}/%{_mandir}/man1' -p -m 0644 \ - %{SOURCE100} %{SOURCE101} %{SOURCE102} %{SOURCE103} %{SOURCE104} \ - %{SOURCE106} %{SOURCE107} %{SOURCE108} -%endif - + %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} \ + %{SOURCE6} %{SOURCE7} %{SOURCE8} find %{buildroot} -type f -name '*.a' -print -delete find %{buildroot}%{_includedir}/grpc* -type f -name '*.h' -perm /0111 \ -execdir chmod -v a-x '{}' '+' + pushd '%{buildroot}' PYROOT="${PWD}" popd @@ -648,8 +529,8 @@ if [ -n "${PYTHONPATH-}" ]; then PYTHONPATH="${PYTHONPATH}:"; fi PYTHONPATH="${PYTHONPATH-}${PYROOT}%{python3_sitelib}" PYTHONPATH="${PYTHONPATH}:${PYROOT}%{python3_sitearch}" export PYTHONPATH - %py3_install + pushd "tools/distrib/python/grpcio_tools/" >/dev/null %py3_install popd >/dev/null @@ -661,75 +542,55 @@ do %py3_install popd >/dev/null done + %global sysbundle %{_sysconfdir}/pki/ca-trust/extracted/pem/tls-ca-bundle.pem install -D -t "%{buildroot}$(dirname '%{sysbundle}')" -m 0644 '%{sysbundle}' - find '%{buildroot}' -type f -name 'roots.pem' | while read -r fn do ln -s -f "%{buildroot}%{sysbundle}" "${fn}" symlinks -c -o "${fn}" done - rm -rvf "%{buildroot}$(dirname '%{sysbundle}')" -install -D -t '%{buildroot}%{_pkgdocdir}' -m 0644 -p \ - AUTHORS \ - CONCEPTS.md \ - MAINTAINERS.md \ - README.md \ - SECURITY.md \ - TROUBLESHOOTING.md +install -D -t '%{buildroot}%{_pkgdocdir}' -m 0644 -p AUTHORS *.md cp -rvp doc examples '%{buildroot}%{_pkgdocdir}' -hardlink -v '%{buildroot}%{_pkgdocdir}/examples/' %files %license LICENSE NOTICE.txt LICENSE-utf8_range -%{_libdir}/libaddress_sorting.so.%{c_so_version}{,.*} -%{_libdir}/libgpr.so.%{c_so_version}{,.*} -%{_libdir}/libgrpc.so.%{c_so_version}{,.*} -%{_libdir}/libgrpc_unsecure.so.%{c_so_version}{,.*} -%{_libdir}/libupb.so.%{c_so_version}{,.*} +%{_libdir}/libaddress_sorting.so.%{c_so_version}* +%{_libdir}/libgpr.so.%{c_so_version}* +%{_libdir}/libgrpc.so.%{c_so_version}* +%{_libdir}/libgrpc_unsecure.so.%{c_so_version}* +%{_libdir}/libupb.so.%{c_so_version}* %files data %license LICENSE NOTICE.txt -%dir %{_datadir}/grpc/ +%dir %{_datadir}/grpc %{_datadir}/grpc/roots.pem %files doc %license LICENSE NOTICE.txt - -%doc %{_pkgdocdir}/AUTHORS -%doc %{_pkgdocdir}/CONCEPTS.md -%doc %{_pkgdocdir}/MAINTAINERS.md -%doc %{_pkgdocdir}/README.md -%doc %{_pkgdocdir}/SECURITY.md -%doc %{_pkgdocdir}/TROUBLESHOOTING.md - -%doc %{_pkgdocdir}/doc/ -%doc %{_pkgdocdir}/examples/ - +%{_pkgdocdir} %files cpp -%{_libdir}/libgrpc++.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_alts.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_error_details.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_reflection.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_unsecure.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc_plugin_support.so.%{cpp_so_version}{,.*} +%{_libdir}/libgrpc++.so.%{cpp_so_version}* +%{_libdir}/libgrpc++_alts.so.%{cpp_so_version}* +%{_libdir}/libgrpc++_error_details.so.%{cpp_so_version}* +%{_libdir}/libgrpc++_reflection.so.%{cpp_so_version}* +%{_libdir}/libgrpc++_unsecure.so.%{cpp_so_version}* +%{_libdir}/libgrpc_authorization_provider.so.%{cpp_so_version}* +%{_libdir}/libgrpc_plugin_support.so.%{cpp_so_version}* +%{_libdir}/libgrpcpp_channelz.so.%{cpp_so_version}* -%{_libdir}/libgrpcpp_channelz.so.%{cpp_so_version}{,.*} - -%if %{with core_tests} %files cli %{_bindir}/grpc_cli %{_libdir}/libgrpc++_test_config.so.%{cpp_so_version} %{_mandir}/man1/grpc_cli.1* %{_mandir}/man1/grpc_cli-*.1* -%endif %files plugins @@ -737,82 +598,85 @@ hardlink -v '%{buildroot}%{_pkgdocdir}/examples/' %files devel +%{_includedir}/grpc +%{_includedir}/grpc++ +%{_includedir}/grpcpp %{_libdir}/libaddress_sorting.so %{_libdir}/libgpr.so %{_libdir}/libgrpc.so +%{_libdir}/libgrpc_authorization_provider.so %{_libdir}/libgrpc_unsecure.so %{_libdir}/libupb.so -%{_includedir}/grpc/ %{_libdir}/pkgconfig/gpr.pc %{_libdir}/pkgconfig/grpc.pc %{_libdir}/pkgconfig/grpc_unsecure.pc -%{_libdir}/cmake/grpc/ - +%{_libdir}/cmake/grpc %{_libdir}/libgrpc++.so %{_libdir}/libgrpc++_alts.so %{_libdir}/libgrpc++_error_details.so %{_libdir}/libgrpc++_reflection.so %{_libdir}/libgrpc++_unsecure.so %{_libdir}/libgrpc_plugin_support.so -%{_includedir}/grpc++/ %{_libdir}/pkgconfig/grpc++.pc %{_libdir}/pkgconfig/grpc++_unsecure.pc - %{_libdir}/libgrpcpp_channelz.so -%{_includedir}/grpcpp/ %files -n python3-grpcio %license LICENSE NOTICE.txt LICENSE-utf8_range -%{python3_sitearch}/grpc/ -%{python3_sitearch}/grpcio-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitearch}/grpc +%{python3_sitearch}/grpcio-%{pyversion}-py%{python3_version}.egg-info %files -n python3-grpcio-tools %license LICENSE NOTICE.txt LICENSE-utf8_range -%{python3_sitearch}/grpc_tools/ -%{python3_sitearch}/grpcio_tools-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitearch}/grpc_tools +%{python3_sitearch}/grpcio_tools-%{pyversion}-py%{python3_version}.egg-info %if %{without bootstrap} %files -n python3-grpcio-admin -%{python3_sitelib}/grpc_admin/ -%{python3_sitelib}/grpcio_admin-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitelib}/grpc_admin +%{python3_sitelib}/grpcio_admin-%{pyversion}-py%{python3_version}.egg-info %endif %files -n python3-grpcio-channelz -%{python3_sitelib}/grpc_channelz/ -%{python3_sitelib}/grpcio_channelz-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitelib}/grpc_channelz +%{python3_sitelib}/grpcio_channelz-%{pyversion}-py%{python3_version}.egg-info %if %{without bootstrap} %files -n python3-grpcio-csds -%{python3_sitelib}/grpc_csds/ -%{python3_sitelib}/grpcio_csds-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitelib}/grpc_csds +%{python3_sitelib}/grpcio_csds-%{pyversion}-py%{python3_version}.egg-info %endif %files -n python3-grpcio-health-checking -%{python3_sitelib}/grpc_health/ -%{python3_sitelib}/grpcio_health_checking-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitelib}/grpc_health +%{python3_sitelib}/grpcio_health_checking-%{pyversion}-py%{python3_version}.egg-info %files -n python3-grpcio-reflection -%{python3_sitelib}/grpc_reflection/ -%{python3_sitelib}/grpcio_reflection-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitelib}/grpc_reflection +%{python3_sitelib}/grpcio_reflection-%{pyversion}-py%{python3_version}.egg-info %files -n python3-grpcio-status -%{python3_sitelib}/grpc_status/ -%{python3_sitelib}/grpcio_status-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitelib}/grpc_status +%{python3_sitelib}/grpcio_status-%{pyversion}-py%{python3_version}.egg-info %files -n python3-grpcio-testing -%{python3_sitelib}/grpc_testing/ -%{python3_sitelib}/grpcio_testing-%{pyversion}-py%{python3_version}.egg-info/ +%{python3_sitelib}/grpc_testing +%{python3_sitelib}/grpcio_testing-%{pyversion}-py%{python3_version}.egg-info + %changelog +* Wed Sep 11 2024 mgb01105731 - 1.56.2-1 +- update to 1.56.2 for abseil-cpp 20230802.1 + * Mon May 06 2024 Chunmei Xu - 1.48.4-3 - fix CVE-2023-4785 diff --git a/grpc_cli-totext.1 b/grpc_cli-totext.1 deleted file mode 100644 index 9b297f0aad9d4752a1d23eaef1cfbf749b64378f..0000000000000000000000000000000000000000 --- a/grpc_cli-totext.1 +++ /dev/null @@ -1,38 +0,0 @@ -.TH GRPC_CLI\-TOTEXT "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ totext -\(en convert binary message to text -.SH SYNOPSIS -.B grpc_cli totext -.I protofiles -.I type -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I protofiles -Comma separated list of proto files -.TP -.I type -Protocol buffer type name -.TP -.B \-\-proto_path -The search paths of proto files -.RB ( : -separated) -.TP -.B \-\-infile -Input filename (defaults to -.IR stdin ) -.TP -.B \-\-outfile -Output filename (defaults to -.IR stdout ) -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/opencensus-proto-0.3.0.tar.gz b/opencensus-proto-0.3.0.tar.gz deleted file mode 100644 index 18db625578da74a7371799ff90f50c4dfee12da2..0000000000000000000000000000000000000000 Binary files a/opencensus-proto-0.3.0.tar.gz and /dev/null differ diff --git a/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch b/skip-network-tests.patch similarity index 39% rename from grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch rename to skip-network-tests.patch index 5a8d2f0eda8d246c49b9da7508b12d5fe16666f6..5e1ca2e5c4a2c321fd11c9bfb89a5d6781685970 100644 --- a/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch +++ b/skip-network-tests.patch @@ -1,19 +1,19 @@ -diff -Naur grpc-1.40.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py grpc-1.40.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py ---- grpc-1.40.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2021-09-03 19:20:52.000000000 -0400 -+++ grpc-1.40.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2021-09-09 10:55:12.919416808 -0400 -@@ -14,6 +14,7 @@ - """Tests for an actual dns resolution.""" +diff -Naur grpc-1.53.2.orig/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py grpc-1.53.2/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py +--- grpc-1.53.2.orig/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2023-09-04 20:19:32.818460907 +0800 ++++ grpc-1.53.2/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2023-09-04 20:19:40.600460347 +0800 +@@ -15,6 +15,7 @@ import logging -+import os import unittest ++import os import grpc -@@ -46,6 +47,8 @@ + +@@ -45,6 +46,8 @@ def tearDown(self): self._server.stop(None) -+ @unittest.skipIf('FEDORA_NO_NETWORK_TESTS' in os.environ, ++ @unittest.skipIf('NO_NETWORK_TESTS' in os.environ, + 'Network tests disabled') def test_connect_loopback(self): # NOTE(https://github.com/grpc/grpc/issues/18422) diff --git a/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz b/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz deleted file mode 100644 index 89bb94252a21934cb9ff87e2479b720638ad78b5..0000000000000000000000000000000000000000 Binary files a/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz and /dev/null differ