grpc 1.58.0 → 1.58.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7456c1351be3b1099ed289182ed9a027e155ad61586a21a8fa465d9283829eed
4
- data.tar.gz: e1e3712395ba5f26bc75a4b64b416eb6df3cfdee74436699de8e70f6c68023b2
3
+ metadata.gz: 9afb343e08dfcac976aebf9d7ef1a1ece8e0a825c336ff03a50e9c5ce4d5c0fa
4
+ data.tar.gz: 942e31b171f23226e3c41fafcd4abd4e28f52b7351ac6ce3d57c0c44ae42cb22
5
5
  SHA512:
6
- metadata.gz: 431da7a7b6d598cdc27af5cc6f23bd84f3d6bbd25e1203096e00057e9b40a98bfa45960e97484529315568b7ecc46f3c9a920612fde0c8ecc872fb9cff8fe05e
7
- data.tar.gz: 517356282e8408265141cd3d97475679a89a0c7669f2f40aa09322b383a399ee1a93b90a311355682b7a735c4d80bf0c06b1de9bdeb7bcd233bc6dc02b758aad
6
+ metadata.gz: 26695c9d42c9485d8a09ff7d2c512ce3e9e18da78f750102d07430404cc250f443fc6bfcfc8aef3f43a5a4a52e391930f057650dfb21f7adda70a2611cac5971
7
+ data.tar.gz: 781317e1cc60d9a72f87027944fd637532d5b77c27e2dba867fbc73b6a48de455707879619c5d5342663805b9c5617cd3fb765b7e77642ee8020d024c0384a89
data/Makefile CHANGED
@@ -411,7 +411,7 @@ Q = @
411
411
  endif
412
412
 
413
413
  CORE_VERSION = 35.0.0
414
- CPP_VERSION = 1.58.0
414
+ CPP_VERSION = 1.58.3
415
415
 
416
416
  CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
417
417
  CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@@ -91,12 +91,14 @@ constexpr Base64InverseTable kBase64InverseTable;
91
91
  class HPackParser::Input {
92
92
  public:
93
93
  Input(grpc_slice_refcount* current_slice_refcount, const uint8_t* begin,
94
- const uint8_t* end, HpackParseResult& error)
94
+ const uint8_t* end, HpackParseResult& frame_error,
95
+ HpackParseResult& field_error)
95
96
  : current_slice_refcount_(current_slice_refcount),
96
97
  begin_(begin),
97
98
  end_(end),
98
99
  frontier_(begin),
99
- error_(error) {}
100
+ frame_error_(frame_error),
101
+ field_error_(field_error) {}
100
102
 
101
103
  // If input is backed by a slice, retrieve its refcount. If not, return
102
104
  // nullptr.
@@ -214,14 +216,18 @@ class HPackParser::Input {
214
216
 
215
217
  // Check if we saw an EOF
216
218
  bool eof_error() const {
217
- return min_progress_size_ != 0 || error_.connection_error();
219
+ return min_progress_size_ != 0 || frame_error_.connection_error();
220
+ }
221
+
222
+ // Reset the field error to be ok
223
+ void ClearFieldError() {
224
+ if (field_error_.ok()) return;
225
+ field_error_ = HpackParseResult();
218
226
  }
219
227
 
220
228
  // Minimum number of bytes to unstuck the current parse
221
229
  size_t min_progress_size() const { return min_progress_size_; }
222
230
 
223
- bool has_error() const { return !error_.ok(); }
224
-
225
231
  // Set the current error - tweaks the error to include a stream id so that
226
232
  // chttp2 does not close the connection.
227
233
  // Intended for errors that are specific to a stream and recoverable.
@@ -245,10 +251,7 @@ class HPackParser::Input {
245
251
  // read prior to being able to get further in this parse.
246
252
  void UnexpectedEOF(size_t min_progress_size) {
247
253
  GPR_ASSERT(min_progress_size > 0);
248
- if (min_progress_size_ != 0 || error_.connection_error()) {
249
- GPR_DEBUG_ASSERT(eof_error());
250
- return;
251
- }
254
+ if (eof_error()) return;
252
255
  // Set min progress size, taking into account bytes parsed already but not
253
256
  // consumed.
254
257
  min_progress_size_ = min_progress_size + (begin_ - frontier_);
@@ -298,13 +301,18 @@ class HPackParser::Input {
298
301
  // Do not use this directly, instead use SetErrorAndContinueParsing or
299
302
  // SetErrorAndStopParsing.
300
303
  void SetError(HpackParseResult error) {
301
- if (!error_.ok() || min_progress_size_ > 0) {
302
- if (error.connection_error() && !error_.connection_error()) {
303
- error_ = std::move(error); // connection errors dominate
304
+ SetErrorFor(frame_error_, error);
305
+ SetErrorFor(field_error_, std::move(error));
306
+ }
307
+
308
+ void SetErrorFor(HpackParseResult& error, HpackParseResult new_error) {
309
+ if (!error.ok() || min_progress_size_ > 0) {
310
+ if (new_error.connection_error() && !error.connection_error()) {
311
+ error = std::move(new_error); // connection errors dominate
304
312
  }
305
313
  return;
306
314
  }
307
- error_ = std::move(error);
315
+ error = std::move(new_error);
308
316
  }
309
317
 
310
318
  // Refcount if we are backed by a slice
@@ -316,7 +324,8 @@ class HPackParser::Input {
316
324
  // Frontier denotes the first byte past successfully processed input
317
325
  const uint8_t* frontier_;
318
326
  // Current error
319
- HpackParseResult& error_;
327
+ HpackParseResult& frame_error_;
328
+ HpackParseResult& field_error_;
320
329
  // If the error was EOF, we flag it here by noting how many more bytes would
321
330
  // be needed to make progress
322
331
  size_t min_progress_size_ = 0;
@@ -591,6 +600,7 @@ class HPackParser::Parser {
591
600
  bool ParseTop() {
592
601
  GPR_DEBUG_ASSERT(state_.parse_state == ParseState::kTop);
593
602
  auto cur = *input_->Next();
603
+ input_->ClearFieldError();
594
604
  switch (cur >> 4) {
595
605
  // Literal header not indexed - First byte format: 0000xxxx
596
606
  // Literal header never indexed - First byte format: 0001xxxx
@@ -696,7 +706,7 @@ class HPackParser::Parser {
696
706
  break;
697
707
  }
698
708
  gpr_log(
699
- GPR_DEBUG, "HTTP:%d:%s:%s: %s%s", log_info_.stream_id, type,
709
+ GPR_INFO, "HTTP:%d:%s:%s: %s%s", log_info_.stream_id, type,
700
710
  log_info_.is_client ? "CLI" : "SVR", memento.md.DebugString().c_str(),
701
711
  memento.parse_status == nullptr
702
712
  ? ""
@@ -945,11 +955,10 @@ class HPackParser::Parser {
945
955
  state_.string_length)
946
956
  : String::Parse(input_, state_.is_string_huff_compressed,
947
957
  state_.string_length);
948
- HpackParseResult& status = state_.frame_error;
949
958
  absl::string_view key_string;
950
959
  if (auto* s = absl::get_if<Slice>(&state_.key)) {
951
960
  key_string = s->as_string_view();
952
- if (status.ok()) {
961
+ if (state_.field_error.ok()) {
953
962
  auto r = ValidateKey(key_string);
954
963
  if (r != ValidateMetadataResult::kOk) {
955
964
  input_->SetErrorAndContinueParsing(
@@ -959,7 +968,7 @@ class HPackParser::Parser {
959
968
  } else {
960
969
  const auto* memento = absl::get<const HPackTable::Memento*>(state_.key);
961
970
  key_string = memento->md.key();
962
- if (status.ok() && memento->parse_status != nullptr) {
971
+ if (state_.field_error.ok() && memento->parse_status != nullptr) {
963
972
  input_->SetErrorAndContinueParsing(*memento->parse_status);
964
973
  }
965
974
  }
@@ -986,16 +995,16 @@ class HPackParser::Parser {
986
995
  key_string.size() + value.wire_size + hpack_constants::kEntryOverhead;
987
996
  auto md = grpc_metadata_batch::Parse(
988
997
  key_string, std::move(value_slice), state_.add_to_table, transport_size,
989
- [key_string, &status, this](absl::string_view message, const Slice&) {
990
- if (!status.ok()) return;
998
+ [key_string, this](absl::string_view message, const Slice&) {
999
+ if (!state_.field_error.ok()) return;
991
1000
  input_->SetErrorAndContinueParsing(
992
1001
  HpackParseResult::MetadataParseError(key_string));
993
1002
  gpr_log(GPR_ERROR, "Error parsing '%s' metadata: %s",
994
1003
  std::string(key_string).c_str(),
995
1004
  std::string(message).c_str());
996
1005
  });
997
- HPackTable::Memento memento{std::move(md),
998
- status.PersistentStreamErrorOrNullptr()};
1006
+ HPackTable::Memento memento{
1007
+ std::move(md), state_.field_error.PersistentStreamErrorOrNullptr()};
999
1008
  input_->UpdateFrontier();
1000
1009
  state_.parse_state = ParseState::kTop;
1001
1010
  if (state_.add_to_table) {
@@ -1155,13 +1164,15 @@ grpc_error_handle HPackParser::Parse(
1155
1164
  return absl::OkStatus();
1156
1165
  }
1157
1166
  std::vector<uint8_t> buffer = std::move(unparsed_bytes_);
1158
- return ParseInput(Input(nullptr, buffer.data(),
1159
- buffer.data() + buffer.size(), state_.frame_error),
1160
- is_last, call_tracer);
1167
+ return ParseInput(
1168
+ Input(nullptr, buffer.data(), buffer.data() + buffer.size(),
1169
+ state_.frame_error, state_.field_error),
1170
+ is_last, call_tracer);
1161
1171
  }
1162
- return ParseInput(Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
1163
- GRPC_SLICE_END_PTR(slice), state_.frame_error),
1164
- is_last, call_tracer);
1172
+ return ParseInput(
1173
+ Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
1174
+ GRPC_SLICE_END_PTR(slice), state_.frame_error, state_.field_error),
1175
+ is_last, call_tracer);
1165
1176
  }
1166
1177
 
1167
1178
  grpc_error_handle HPackParser::ParseInput(
@@ -234,6 +234,8 @@ class HPackParser {
234
234
  HPackTable hpack_table;
235
235
  // Error so far for this frame (set by class Input)
236
236
  HpackParseResult frame_error;
237
+ // Error so far for this field (set by class Input)
238
+ HpackParseResult field_error;
237
239
  // Length of frame so far.
238
240
  uint32_t frame_length = 0;
239
241
  // Length of the string being parsed
@@ -77,7 +77,6 @@ Json::Object ValidateStatefulSession(
77
77
  envoy_extensions_filters_http_stateful_session_v3_StatefulSession_session_state(
78
78
  stateful_session);
79
79
  if (session_state == nullptr) {
80
- errors->AddError("field not present");
81
80
  return {};
82
81
  }
83
82
  ValidationErrors::ScopedField field2(errors, ".typed_config");
@@ -188,9 +187,7 @@ XdsHttpStatefulSessionFilter::GenerateFilterConfigOverride(
188
187
  const auto* stateful_session =
189
188
  envoy_extensions_filters_http_stateful_session_v3_StatefulSessionPerRoute_stateful_session(
190
189
  stateful_session_per_route);
191
- if (stateful_session == nullptr) {
192
- errors->AddError("field not present");
193
- } else {
190
+ if (stateful_session != nullptr) {
194
191
  config = ValidateStatefulSession(context, stateful_session, errors);
195
192
  }
196
193
  }
@@ -22,6 +22,7 @@
22
22
 
23
23
  #include "src/core/lib/iomgr/port.h"
24
24
 
25
+ // IWYU pragma: no_include <ares_version.h>
25
26
  // IWYU pragma: no_include <arpa/inet.h>
26
27
  // IWYU pragma: no_include <arpa/nameser.h>
27
28
  // IWYU pragma: no_include <inttypes.h>
@@ -33,7 +34,15 @@
33
34
 
34
35
  #if GRPC_ARES == 1
35
36
 
37
+ #include <ares.h>
38
+
39
+ #if ARES_VERSION >= 0x011200
40
+ // c-ares 1.18.0 or later starts to provide ares_nameser.h as a public header.
36
41
  #include <ares_nameser.h>
42
+ #else
43
+ #include "src/core/lib/event_engine/nameser.h" // IWYU pragma: keep
44
+ #endif
45
+
37
46
  #include <string.h>
38
47
 
39
48
  #include <algorithm>
@@ -0,0 +1,102 @@
1
+ // Copyright 2023 The gRPC Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_NAMESER_H
16
+ #define GRPC_SRC_CORE_LIB_EVENT_ENGINE_NAMESER_H
17
+
18
+ #include <grpc/support/port_platform.h>
19
+
20
+ #include "src/core/lib/iomgr/port.h"
21
+
22
+ #ifdef GRPC_HAVE_ARPA_NAMESER
23
+
24
+ #include <arpa/nameser.h> // IWYU pragma: keep
25
+
26
+ #else // GRPC_HAVE_ARPA_NAMESER
27
+
28
+ typedef enum __ns_class {
29
+ ns_c_invalid = 0, // Cookie.
30
+ ns_c_in = 1, // Internet.
31
+ ns_c_2 = 2, // unallocated/unsupported.
32
+ ns_c_chaos = 3, // MIT Chaos-net.
33
+ ns_c_hs = 4, // MIT Hesiod.
34
+ // Query class values which do not appear in resource records
35
+ ns_c_none = 254, // for prereq. sections in update requests
36
+ ns_c_any = 255, // Wildcard match.
37
+ ns_c_max = 65536
38
+ } ns_class;
39
+
40
+ typedef enum __ns_type {
41
+ ns_t_invalid = 0, // Cookie.
42
+ ns_t_a = 1, // Host address.
43
+ ns_t_ns = 2, // Authoritative server.
44
+ ns_t_md = 3, // Mail destination.
45
+ ns_t_mf = 4, // Mail forwarder.
46
+ ns_t_cname = 5, // Canonical name.
47
+ ns_t_soa = 6, // Start of authority zone.
48
+ ns_t_mb = 7, // Mailbox domain name.
49
+ ns_t_mg = 8, // Mail group member.
50
+ ns_t_mr = 9, // Mail rename name.
51
+ ns_t_null = 10, // Null resource record.
52
+ ns_t_wks = 11, // Well known service.
53
+ ns_t_ptr = 12, // Domain name pointer.
54
+ ns_t_hinfo = 13, // Host information.
55
+ ns_t_minfo = 14, // Mailbox information.
56
+ ns_t_mx = 15, // Mail routing information.
57
+ ns_t_txt = 16, // Text strings.
58
+ ns_t_rp = 17, // Responsible person.
59
+ ns_t_afsdb = 18, // AFS cell database.
60
+ ns_t_x25 = 19, // X_25 calling address.
61
+ ns_t_isdn = 20, // ISDN calling address.
62
+ ns_t_rt = 21, // Router.
63
+ ns_t_nsap = 22, // NSAP address.
64
+ ns_t_nsap_ptr = 23, // Reverse NSAP lookup (deprecated).
65
+ ns_t_sig = 24, // Security signature.
66
+ ns_t_key = 25, // Security key.
67
+ ns_t_px = 26, // X.400 mail mapping.
68
+ ns_t_gpos = 27, // Geographical position (withdrawn).
69
+ ns_t_aaaa = 28, // Ip6 Address.
70
+ ns_t_loc = 29, // Location Information.
71
+ ns_t_nxt = 30, // Next domain (security).
72
+ ns_t_eid = 31, // Endpoint identifier.
73
+ ns_t_nimloc = 32, // Nimrod Locator.
74
+ ns_t_srv = 33, // Server Selection.
75
+ ns_t_atma = 34, // ATM Address
76
+ ns_t_naptr = 35, // Naming Authority PoinTeR
77
+ ns_t_kx = 36, // Key Exchange
78
+ ns_t_cert = 37, // Certification record
79
+ ns_t_a6 = 38, // IPv6 address (deprecates AAAA)
80
+ ns_t_dname = 39, // Non-terminal DNAME (for IPv6)
81
+ ns_t_sink = 40, // Kitchen sink (experimentatl)
82
+ ns_t_opt = 41, // EDNS0 option (meta-RR)
83
+ ns_t_apl = 42, // Address prefix list (RFC3123)
84
+ ns_t_ds = 43, // Delegation Signer (RFC4034)
85
+ ns_t_sshfp = 44, // SSH Key Fingerprint (RFC4255)
86
+ ns_t_rrsig = 46, // Resource Record Signature (RFC4034)
87
+ ns_t_nsec = 47, // Next Secure (RFC4034)
88
+ ns_t_dnskey = 48, // DNS Public Key (RFC4034)
89
+ ns_t_tkey = 249, // Transaction key
90
+ ns_t_tsig = 250, // Transaction signature.
91
+ ns_t_ixfr = 251, // Incremental zone transfer.
92
+ ns_t_axfr = 252, // Transfer zone of authority.
93
+ ns_t_mailb = 253, // Transfer mailbox records.
94
+ ns_t_maila = 254, // Transfer mail agent records.
95
+ ns_t_any = 255, // Wildcard match.
96
+ ns_t_zxfr = 256, // BIND-specific, nonstandard.
97
+ ns_t_max = 65536
98
+ } ns_type;
99
+
100
+ #endif // GRPC_HAVE_ARPA_NAMESER
101
+
102
+ #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_NAMESER_H
@@ -15,237 +15,418 @@
15
15
  // Auto generated by tools/codegen/core/gen_experiments.py
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
+
18
19
  #include "src/core/lib/experiments/experiments.h"
19
20
 
20
21
  #ifndef GRPC_EXPERIMENTS_ARE_FINAL
21
22
 
22
23
  #if defined(GRPC_CFSTREAM)
23
24
  namespace {
24
- const char* const description_tcp_frame_size_tuning = "If set, enables TCP to use RPC size estimation made by higher layers. TCP would not indicate completion of a read operation until a specified number of bytes have been read over the socket. Buffers are also allocated according to estimated RPC sizes.";
25
+ const char* const description_tcp_frame_size_tuning =
26
+ "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
27
+ "would not indicate completion of a read operation until a specified "
28
+ "number of bytes have been read over the socket. Buffers are also "
29
+ "allocated according to estimated RPC sizes.";
25
30
  const char* const additional_constraints_tcp_frame_size_tuning = "{}";
26
- const char* const description_tcp_rcv_lowat = "Use SO_RCVLOWAT to avoid wakeups on the read path.";
31
+ const char* const description_tcp_rcv_lowat =
32
+ "Use SO_RCVLOWAT to avoid wakeups on the read path.";
27
33
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
28
- const char* const description_peer_state_based_framing = "If set, the max sizes of frames sent to lower layers is controlled based on the peer's memory pressure which is reflected in its max http2 frame size.";
34
+ const char* const description_peer_state_based_framing =
35
+ "If set, the max sizes of frames sent to lower layers is controlled based "
36
+ "on the peer's memory pressure which is reflected in its max http2 frame "
37
+ "size.";
29
38
  const char* const additional_constraints_peer_state_based_framing = "{}";
30
- const char* const description_memory_pressure_controller = "New memory pressure controller";
39
+ const char* const description_memory_pressure_controller =
40
+ "New memory pressure controller";
31
41
  const char* const additional_constraints_memory_pressure_controller = "{}";
32
- const char* const description_unconstrained_max_quota_buffer_size = "Discard the cap on the max free pool size for one memory allocator";
33
- const char* const additional_constraints_unconstrained_max_quota_buffer_size = "{}";
34
- const char* const description_event_engine_client = "Use EventEngine clients instead of iomgr's grpc_tcp_client";
42
+ const char* const description_unconstrained_max_quota_buffer_size =
43
+ "Discard the cap on the max free pool size for one memory allocator";
44
+ const char* const additional_constraints_unconstrained_max_quota_buffer_size =
45
+ "{}";
46
+ const char* const description_event_engine_client =
47
+ "Use EventEngine clients instead of iomgr's grpc_tcp_client";
35
48
  const char* const additional_constraints_event_engine_client = "{}";
36
- const char* const description_monitoring_experiment = "Placeholder experiment to prove/disprove our monitoring is working";
49
+ const char* const description_monitoring_experiment =
50
+ "Placeholder experiment to prove/disprove our monitoring is working";
37
51
  const char* const additional_constraints_monitoring_experiment = "{}";
38
- const char* const description_promise_based_client_call = "If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based)";
52
+ const char* const description_promise_based_client_call =
53
+ "If set, use the new gRPC promise based call code when it's appropriate "
54
+ "(ie when all filters in a stack are promise based)";
39
55
  const char* const additional_constraints_promise_based_client_call = "{}";
40
- const char* const description_free_large_allocator = "If set, return all free bytes from a \042big\042 allocator";
56
+ const char* const description_free_large_allocator =
57
+ "If set, return all free bytes from a \042big\042 allocator";
41
58
  const char* const additional_constraints_free_large_allocator = "{}";
42
- const char* const description_promise_based_server_call = "If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based)";
59
+ const char* const description_promise_based_server_call =
60
+ "If set, use the new gRPC promise based call code when it's appropriate "
61
+ "(ie when all filters in a stack are promise based)";
43
62
  const char* const additional_constraints_promise_based_server_call = "{}";
44
- const char* const description_transport_supplies_client_latency = "If set, use the transport represented value for client latency in opencensus";
45
- const char* const additional_constraints_transport_supplies_client_latency = "{}";
46
- const char* const description_event_engine_listener = "Use EventEngine listeners instead of iomgr's grpc_tcp_server";
63
+ const char* const description_transport_supplies_client_latency =
64
+ "If set, use the transport represented value for client latency in "
65
+ "opencensus";
66
+ const char* const additional_constraints_transport_supplies_client_latency =
67
+ "{}";
68
+ const char* const description_event_engine_listener =
69
+ "Use EventEngine listeners instead of iomgr's grpc_tcp_server";
47
70
  const char* const additional_constraints_event_engine_listener = "{}";
48
- const char* const description_schedule_cancellation_over_write = "Allow cancellation op to be scheduled over a write";
49
- const char* const additional_constraints_schedule_cancellation_over_write = "{}";
50
- const char* const description_trace_record_callops = "Enables tracing of call batch initiation and completion.";
71
+ const char* const description_schedule_cancellation_over_write =
72
+ "Allow cancellation op to be scheduled over a write";
73
+ const char* const additional_constraints_schedule_cancellation_over_write =
74
+ "{}";
75
+ const char* const description_trace_record_callops =
76
+ "Enables tracing of call batch initiation and completion.";
51
77
  const char* const additional_constraints_trace_record_callops = "{}";
52
- const char* const description_event_engine_dns = "If set, use EventEngine DNSResolver for client channel resolution";
78
+ const char* const description_event_engine_dns =
79
+ "If set, use EventEngine DNSResolver for client channel resolution";
53
80
  const char* const additional_constraints_event_engine_dns = "{}";
54
- const char* const description_work_stealing = "If set, use a work stealing thread pool implementation in EventEngine";
81
+ const char* const description_work_stealing =
82
+ "If set, use a work stealing thread pool implementation in EventEngine";
55
83
  const char* const additional_constraints_work_stealing = "{}";
56
84
  const char* const description_client_privacy = "If set, client privacy";
57
85
  const char* const additional_constraints_client_privacy = "{}";
58
- const char* const description_canary_client_privacy = "If set, canary client privacy";
86
+ const char* const description_canary_client_privacy =
87
+ "If set, canary client privacy";
59
88
  const char* const additional_constraints_canary_client_privacy = "{}";
60
89
  const char* const description_server_privacy = "If set, server privacy";
61
90
  const char* const additional_constraints_server_privacy = "{}";
62
- const char* const description_unique_metadata_strings = "Ensure a unique copy of strings from parsed metadata are taken. The hypothesis here is that ref counting these are causing read buffer lifetimes to be extended leading to memory bloat.";
91
+ const char* const description_unique_metadata_strings =
92
+ "Ensure a unique copy of strings from parsed metadata are taken. The "
93
+ "hypothesis here is that ref counting these are causing read buffer "
94
+ "lifetimes to be extended leading to memory bloat.";
63
95
  const char* const additional_constraints_unique_metadata_strings = "{}";
64
- const char* const description_keepalive_fix = "Allows overriding keepalive_permit_without_calls. Refer https://github.com/grpc/grpc/pull/33428 for more information.";
96
+ const char* const description_keepalive_fix =
97
+ "Allows overriding keepalive_permit_without_calls. Refer "
98
+ "https://github.com/grpc/grpc/pull/33428 for more information.";
65
99
  const char* const additional_constraints_keepalive_fix = "{}";
66
- const char* const description_keepalive_server_fix = "Allows overriding keepalive_permit_without_calls for servers. Refer https://github.com/grpc/grpc/pull/33917 for more information.";
100
+ const char* const description_keepalive_server_fix =
101
+ "Allows overriding keepalive_permit_without_calls for servers. Refer "
102
+ "https://github.com/grpc/grpc/pull/33917 for more information.";
67
103
  const char* const additional_constraints_keepalive_server_fix = "{}";
68
- }
104
+ } // namespace
69
105
 
70
106
  namespace grpc_core {
71
107
 
72
108
  const ExperimentMetadata g_experiment_metadata[] = {
73
- {"tcp_frame_size_tuning", description_tcp_frame_size_tuning, additional_constraints_tcp_frame_size_tuning, false, true},
74
- {"tcp_rcv_lowat", description_tcp_rcv_lowat, additional_constraints_tcp_rcv_lowat, false, true},
75
- {"peer_state_based_framing", description_peer_state_based_framing, additional_constraints_peer_state_based_framing, false, true},
76
- {"memory_pressure_controller", description_memory_pressure_controller, additional_constraints_memory_pressure_controller, false, true},
77
- {"unconstrained_max_quota_buffer_size", description_unconstrained_max_quota_buffer_size, additional_constraints_unconstrained_max_quota_buffer_size, false, true},
78
- {"event_engine_client", description_event_engine_client, additional_constraints_event_engine_client, false, true},
79
- {"monitoring_experiment", description_monitoring_experiment, additional_constraints_monitoring_experiment, true, true},
80
- {"promise_based_client_call", description_promise_based_client_call, additional_constraints_promise_based_client_call, false, true},
81
- {"free_large_allocator", description_free_large_allocator, additional_constraints_free_large_allocator, false, true},
82
- {"promise_based_server_call", description_promise_based_server_call, additional_constraints_promise_based_server_call, false, true},
83
- {"transport_supplies_client_latency", description_transport_supplies_client_latency, additional_constraints_transport_supplies_client_latency, false, true},
84
- {"event_engine_listener", description_event_engine_listener, additional_constraints_event_engine_listener, false, true},
85
- {"schedule_cancellation_over_write", description_schedule_cancellation_over_write, additional_constraints_schedule_cancellation_over_write, false, true},
86
- {"trace_record_callops", description_trace_record_callops, additional_constraints_trace_record_callops, false, true},
87
- {"event_engine_dns", description_event_engine_dns, additional_constraints_event_engine_dns, false, false},
88
- {"work_stealing", description_work_stealing, additional_constraints_work_stealing, false, false},
89
- {"client_privacy", description_client_privacy, additional_constraints_client_privacy, false, false},
90
- {"canary_client_privacy", description_canary_client_privacy, additional_constraints_canary_client_privacy, false, false},
91
- {"server_privacy", description_server_privacy, additional_constraints_server_privacy, false, false},
92
- {"unique_metadata_strings", description_unique_metadata_strings, additional_constraints_unique_metadata_strings, true, true},
93
- {"keepalive_fix", description_keepalive_fix, additional_constraints_keepalive_fix, false, false},
94
- {"keepalive_server_fix", description_keepalive_server_fix, additional_constraints_keepalive_server_fix, false, false},
109
+ {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
110
+ additional_constraints_tcp_frame_size_tuning, false, true},
111
+ {"tcp_rcv_lowat", description_tcp_rcv_lowat,
112
+ additional_constraints_tcp_rcv_lowat, false, true},
113
+ {"peer_state_based_framing", description_peer_state_based_framing,
114
+ additional_constraints_peer_state_based_framing, false, true},
115
+ {"memory_pressure_controller", description_memory_pressure_controller,
116
+ additional_constraints_memory_pressure_controller, false, true},
117
+ {"unconstrained_max_quota_buffer_size",
118
+ description_unconstrained_max_quota_buffer_size,
119
+ additional_constraints_unconstrained_max_quota_buffer_size, false, true},
120
+ {"event_engine_client", description_event_engine_client,
121
+ additional_constraints_event_engine_client, false, true},
122
+ {"monitoring_experiment", description_monitoring_experiment,
123
+ additional_constraints_monitoring_experiment, true, true},
124
+ {"promise_based_client_call", description_promise_based_client_call,
125
+ additional_constraints_promise_based_client_call, false, true},
126
+ {"free_large_allocator", description_free_large_allocator,
127
+ additional_constraints_free_large_allocator, false, true},
128
+ {"promise_based_server_call", description_promise_based_server_call,
129
+ additional_constraints_promise_based_server_call, false, true},
130
+ {"transport_supplies_client_latency",
131
+ description_transport_supplies_client_latency,
132
+ additional_constraints_transport_supplies_client_latency, false, true},
133
+ {"event_engine_listener", description_event_engine_listener,
134
+ additional_constraints_event_engine_listener, false, true},
135
+ {"schedule_cancellation_over_write",
136
+ description_schedule_cancellation_over_write,
137
+ additional_constraints_schedule_cancellation_over_write, false, true},
138
+ {"trace_record_callops", description_trace_record_callops,
139
+ additional_constraints_trace_record_callops, false, true},
140
+ {"event_engine_dns", description_event_engine_dns,
141
+ additional_constraints_event_engine_dns, false, false},
142
+ {"work_stealing", description_work_stealing,
143
+ additional_constraints_work_stealing, false, false},
144
+ {"client_privacy", description_client_privacy,
145
+ additional_constraints_client_privacy, false, false},
146
+ {"canary_client_privacy", description_canary_client_privacy,
147
+ additional_constraints_canary_client_privacy, false, false},
148
+ {"server_privacy", description_server_privacy,
149
+ additional_constraints_server_privacy, false, false},
150
+ {"unique_metadata_strings", description_unique_metadata_strings,
151
+ additional_constraints_unique_metadata_strings, true, true},
152
+ {"keepalive_fix", description_keepalive_fix,
153
+ additional_constraints_keepalive_fix, false, false},
154
+ {"keepalive_server_fix", description_keepalive_server_fix,
155
+ additional_constraints_keepalive_server_fix, false, false},
95
156
  };
96
157
 
97
158
  } // namespace grpc_core
98
159
 
99
160
  #elif defined(GPR_WINDOWS)
100
161
  namespace {
101
- const char* const description_tcp_frame_size_tuning = "If set, enables TCP to use RPC size estimation made by higher layers. TCP would not indicate completion of a read operation until a specified number of bytes have been read over the socket. Buffers are also allocated according to estimated RPC sizes.";
162
+ const char* const description_tcp_frame_size_tuning =
163
+ "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
164
+ "would not indicate completion of a read operation until a specified "
165
+ "number of bytes have been read over the socket. Buffers are also "
166
+ "allocated according to estimated RPC sizes.";
102
167
  const char* const additional_constraints_tcp_frame_size_tuning = "{}";
103
- const char* const description_tcp_rcv_lowat = "Use SO_RCVLOWAT to avoid wakeups on the read path.";
168
+ const char* const description_tcp_rcv_lowat =
169
+ "Use SO_RCVLOWAT to avoid wakeups on the read path.";
104
170
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
105
- const char* const description_peer_state_based_framing = "If set, the max sizes of frames sent to lower layers is controlled based on the peer's memory pressure which is reflected in its max http2 frame size.";
171
+ const char* const description_peer_state_based_framing =
172
+ "If set, the max sizes of frames sent to lower layers is controlled based "
173
+ "on the peer's memory pressure which is reflected in its max http2 frame "
174
+ "size.";
106
175
  const char* const additional_constraints_peer_state_based_framing = "{}";
107
- const char* const description_memory_pressure_controller = "New memory pressure controller";
176
+ const char* const description_memory_pressure_controller =
177
+ "New memory pressure controller";
108
178
  const char* const additional_constraints_memory_pressure_controller = "{}";
109
- const char* const description_unconstrained_max_quota_buffer_size = "Discard the cap on the max free pool size for one memory allocator";
110
- const char* const additional_constraints_unconstrained_max_quota_buffer_size = "{}";
111
- const char* const description_event_engine_client = "Use EventEngine clients instead of iomgr's grpc_tcp_client";
179
+ const char* const description_unconstrained_max_quota_buffer_size =
180
+ "Discard the cap on the max free pool size for one memory allocator";
181
+ const char* const additional_constraints_unconstrained_max_quota_buffer_size =
182
+ "{}";
183
+ const char* const description_event_engine_client =
184
+ "Use EventEngine clients instead of iomgr's grpc_tcp_client";
112
185
  const char* const additional_constraints_event_engine_client = "{}";
113
- const char* const description_monitoring_experiment = "Placeholder experiment to prove/disprove our monitoring is working";
186
+ const char* const description_monitoring_experiment =
187
+ "Placeholder experiment to prove/disprove our monitoring is working";
114
188
  const char* const additional_constraints_monitoring_experiment = "{}";
115
- const char* const description_promise_based_client_call = "If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based)";
189
+ const char* const description_promise_based_client_call =
190
+ "If set, use the new gRPC promise based call code when it's appropriate "
191
+ "(ie when all filters in a stack are promise based)";
116
192
  const char* const additional_constraints_promise_based_client_call = "{}";
117
- const char* const description_free_large_allocator = "If set, return all free bytes from a \042big\042 allocator";
193
+ const char* const description_free_large_allocator =
194
+ "If set, return all free bytes from a \042big\042 allocator";
118
195
  const char* const additional_constraints_free_large_allocator = "{}";
119
- const char* const description_promise_based_server_call = "If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based)";
196
+ const char* const description_promise_based_server_call =
197
+ "If set, use the new gRPC promise based call code when it's appropriate "
198
+ "(ie when all filters in a stack are promise based)";
120
199
  const char* const additional_constraints_promise_based_server_call = "{}";
121
- const char* const description_transport_supplies_client_latency = "If set, use the transport represented value for client latency in opencensus";
122
- const char* const additional_constraints_transport_supplies_client_latency = "{}";
123
- const char* const description_event_engine_listener = "Use EventEngine listeners instead of iomgr's grpc_tcp_server";
200
+ const char* const description_transport_supplies_client_latency =
201
+ "If set, use the transport represented value for client latency in "
202
+ "opencensus";
203
+ const char* const additional_constraints_transport_supplies_client_latency =
204
+ "{}";
205
+ const char* const description_event_engine_listener =
206
+ "Use EventEngine listeners instead of iomgr's grpc_tcp_server";
124
207
  const char* const additional_constraints_event_engine_listener = "{}";
125
- const char* const description_schedule_cancellation_over_write = "Allow cancellation op to be scheduled over a write";
126
- const char* const additional_constraints_schedule_cancellation_over_write = "{}";
127
- const char* const description_trace_record_callops = "Enables tracing of call batch initiation and completion.";
208
+ const char* const description_schedule_cancellation_over_write =
209
+ "Allow cancellation op to be scheduled over a write";
210
+ const char* const additional_constraints_schedule_cancellation_over_write =
211
+ "{}";
212
+ const char* const description_trace_record_callops =
213
+ "Enables tracing of call batch initiation and completion.";
128
214
  const char* const additional_constraints_trace_record_callops = "{}";
129
- const char* const description_event_engine_dns = "If set, use EventEngine DNSResolver for client channel resolution";
215
+ const char* const description_event_engine_dns =
216
+ "If set, use EventEngine DNSResolver for client channel resolution";
130
217
  const char* const additional_constraints_event_engine_dns = "{}";
131
- const char* const description_work_stealing = "If set, use a work stealing thread pool implementation in EventEngine";
218
+ const char* const description_work_stealing =
219
+ "If set, use a work stealing thread pool implementation in EventEngine";
132
220
  const char* const additional_constraints_work_stealing = "{}";
133
221
  const char* const description_client_privacy = "If set, client privacy";
134
222
  const char* const additional_constraints_client_privacy = "{}";
135
- const char* const description_canary_client_privacy = "If set, canary client privacy";
223
+ const char* const description_canary_client_privacy =
224
+ "If set, canary client privacy";
136
225
  const char* const additional_constraints_canary_client_privacy = "{}";
137
226
  const char* const description_server_privacy = "If set, server privacy";
138
227
  const char* const additional_constraints_server_privacy = "{}";
139
- const char* const description_unique_metadata_strings = "Ensure a unique copy of strings from parsed metadata are taken. The hypothesis here is that ref counting these are causing read buffer lifetimes to be extended leading to memory bloat.";
228
+ const char* const description_unique_metadata_strings =
229
+ "Ensure a unique copy of strings from parsed metadata are taken. The "
230
+ "hypothesis here is that ref counting these are causing read buffer "
231
+ "lifetimes to be extended leading to memory bloat.";
140
232
  const char* const additional_constraints_unique_metadata_strings = "{}";
141
- const char* const description_keepalive_fix = "Allows overriding keepalive_permit_without_calls. Refer https://github.com/grpc/grpc/pull/33428 for more information.";
233
+ const char* const description_keepalive_fix =
234
+ "Allows overriding keepalive_permit_without_calls. Refer "
235
+ "https://github.com/grpc/grpc/pull/33428 for more information.";
142
236
  const char* const additional_constraints_keepalive_fix = "{}";
143
- const char* const description_keepalive_server_fix = "Allows overriding keepalive_permit_without_calls for servers. Refer https://github.com/grpc/grpc/pull/33917 for more information.";
237
+ const char* const description_keepalive_server_fix =
238
+ "Allows overriding keepalive_permit_without_calls for servers. Refer "
239
+ "https://github.com/grpc/grpc/pull/33917 for more information.";
144
240
  const char* const additional_constraints_keepalive_server_fix = "{}";
145
- }
241
+ } // namespace
146
242
 
147
243
  namespace grpc_core {
148
244
 
149
245
  const ExperimentMetadata g_experiment_metadata[] = {
150
- {"tcp_frame_size_tuning", description_tcp_frame_size_tuning, additional_constraints_tcp_frame_size_tuning, false, true},
151
- {"tcp_rcv_lowat", description_tcp_rcv_lowat, additional_constraints_tcp_rcv_lowat, false, true},
152
- {"peer_state_based_framing", description_peer_state_based_framing, additional_constraints_peer_state_based_framing, false, true},
153
- {"memory_pressure_controller", description_memory_pressure_controller, additional_constraints_memory_pressure_controller, false, true},
154
- {"unconstrained_max_quota_buffer_size", description_unconstrained_max_quota_buffer_size, additional_constraints_unconstrained_max_quota_buffer_size, false, true},
155
- {"event_engine_client", description_event_engine_client, additional_constraints_event_engine_client, false, true},
156
- {"monitoring_experiment", description_monitoring_experiment, additional_constraints_monitoring_experiment, true, true},
157
- {"promise_based_client_call", description_promise_based_client_call, additional_constraints_promise_based_client_call, false, true},
158
- {"free_large_allocator", description_free_large_allocator, additional_constraints_free_large_allocator, false, true},
159
- {"promise_based_server_call", description_promise_based_server_call, additional_constraints_promise_based_server_call, false, true},
160
- {"transport_supplies_client_latency", description_transport_supplies_client_latency, additional_constraints_transport_supplies_client_latency, false, true},
161
- {"event_engine_listener", description_event_engine_listener, additional_constraints_event_engine_listener, false, true},
162
- {"schedule_cancellation_over_write", description_schedule_cancellation_over_write, additional_constraints_schedule_cancellation_over_write, false, true},
163
- {"trace_record_callops", description_trace_record_callops, additional_constraints_trace_record_callops, false, true},
164
- {"event_engine_dns", description_event_engine_dns, additional_constraints_event_engine_dns, false, false},
165
- {"work_stealing", description_work_stealing, additional_constraints_work_stealing, false, false},
166
- {"client_privacy", description_client_privacy, additional_constraints_client_privacy, false, false},
167
- {"canary_client_privacy", description_canary_client_privacy, additional_constraints_canary_client_privacy, false, false},
168
- {"server_privacy", description_server_privacy, additional_constraints_server_privacy, false, false},
169
- {"unique_metadata_strings", description_unique_metadata_strings, additional_constraints_unique_metadata_strings, true, true},
170
- {"keepalive_fix", description_keepalive_fix, additional_constraints_keepalive_fix, false, false},
171
- {"keepalive_server_fix", description_keepalive_server_fix, additional_constraints_keepalive_server_fix, false, false},
246
+ {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
247
+ additional_constraints_tcp_frame_size_tuning, false, true},
248
+ {"tcp_rcv_lowat", description_tcp_rcv_lowat,
249
+ additional_constraints_tcp_rcv_lowat, false, true},
250
+ {"peer_state_based_framing", description_peer_state_based_framing,
251
+ additional_constraints_peer_state_based_framing, false, true},
252
+ {"memory_pressure_controller", description_memory_pressure_controller,
253
+ additional_constraints_memory_pressure_controller, false, true},
254
+ {"unconstrained_max_quota_buffer_size",
255
+ description_unconstrained_max_quota_buffer_size,
256
+ additional_constraints_unconstrained_max_quota_buffer_size, false, true},
257
+ {"event_engine_client", description_event_engine_client,
258
+ additional_constraints_event_engine_client, false, true},
259
+ {"monitoring_experiment", description_monitoring_experiment,
260
+ additional_constraints_monitoring_experiment, true, true},
261
+ {"promise_based_client_call", description_promise_based_client_call,
262
+ additional_constraints_promise_based_client_call, false, true},
263
+ {"free_large_allocator", description_free_large_allocator,
264
+ additional_constraints_free_large_allocator, false, true},
265
+ {"promise_based_server_call", description_promise_based_server_call,
266
+ additional_constraints_promise_based_server_call, false, true},
267
+ {"transport_supplies_client_latency",
268
+ description_transport_supplies_client_latency,
269
+ additional_constraints_transport_supplies_client_latency, false, true},
270
+ {"event_engine_listener", description_event_engine_listener,
271
+ additional_constraints_event_engine_listener, false, true},
272
+ {"schedule_cancellation_over_write",
273
+ description_schedule_cancellation_over_write,
274
+ additional_constraints_schedule_cancellation_over_write, false, true},
275
+ {"trace_record_callops", description_trace_record_callops,
276
+ additional_constraints_trace_record_callops, false, true},
277
+ {"event_engine_dns", description_event_engine_dns,
278
+ additional_constraints_event_engine_dns, false, false},
279
+ {"work_stealing", description_work_stealing,
280
+ additional_constraints_work_stealing, false, false},
281
+ {"client_privacy", description_client_privacy,
282
+ additional_constraints_client_privacy, false, false},
283
+ {"canary_client_privacy", description_canary_client_privacy,
284
+ additional_constraints_canary_client_privacy, false, false},
285
+ {"server_privacy", description_server_privacy,
286
+ additional_constraints_server_privacy, false, false},
287
+ {"unique_metadata_strings", description_unique_metadata_strings,
288
+ additional_constraints_unique_metadata_strings, true, true},
289
+ {"keepalive_fix", description_keepalive_fix,
290
+ additional_constraints_keepalive_fix, false, false},
291
+ {"keepalive_server_fix", description_keepalive_server_fix,
292
+ additional_constraints_keepalive_server_fix, false, false},
172
293
  };
173
294
 
174
295
  } // namespace grpc_core
175
296
 
176
297
  #else
177
298
  namespace {
178
- const char* const description_tcp_frame_size_tuning = "If set, enables TCP to use RPC size estimation made by higher layers. TCP would not indicate completion of a read operation until a specified number of bytes have been read over the socket. Buffers are also allocated according to estimated RPC sizes.";
299
+ const char* const description_tcp_frame_size_tuning =
300
+ "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
301
+ "would not indicate completion of a read operation until a specified "
302
+ "number of bytes have been read over the socket. Buffers are also "
303
+ "allocated according to estimated RPC sizes.";
179
304
  const char* const additional_constraints_tcp_frame_size_tuning = "{}";
180
- const char* const description_tcp_rcv_lowat = "Use SO_RCVLOWAT to avoid wakeups on the read path.";
305
+ const char* const description_tcp_rcv_lowat =
306
+ "Use SO_RCVLOWAT to avoid wakeups on the read path.";
181
307
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
182
- const char* const description_peer_state_based_framing = "If set, the max sizes of frames sent to lower layers is controlled based on the peer's memory pressure which is reflected in its max http2 frame size.";
308
+ const char* const description_peer_state_based_framing =
309
+ "If set, the max sizes of frames sent to lower layers is controlled based "
310
+ "on the peer's memory pressure which is reflected in its max http2 frame "
311
+ "size.";
183
312
  const char* const additional_constraints_peer_state_based_framing = "{}";
184
- const char* const description_memory_pressure_controller = "New memory pressure controller";
313
+ const char* const description_memory_pressure_controller =
314
+ "New memory pressure controller";
185
315
  const char* const additional_constraints_memory_pressure_controller = "{}";
186
- const char* const description_unconstrained_max_quota_buffer_size = "Discard the cap on the max free pool size for one memory allocator";
187
- const char* const additional_constraints_unconstrained_max_quota_buffer_size = "{}";
188
- const char* const description_event_engine_client = "Use EventEngine clients instead of iomgr's grpc_tcp_client";
316
+ const char* const description_unconstrained_max_quota_buffer_size =
317
+ "Discard the cap on the max free pool size for one memory allocator";
318
+ const char* const additional_constraints_unconstrained_max_quota_buffer_size =
319
+ "{}";
320
+ const char* const description_event_engine_client =
321
+ "Use EventEngine clients instead of iomgr's grpc_tcp_client";
189
322
  const char* const additional_constraints_event_engine_client = "{}";
190
- const char* const description_monitoring_experiment = "Placeholder experiment to prove/disprove our monitoring is working";
323
+ const char* const description_monitoring_experiment =
324
+ "Placeholder experiment to prove/disprove our monitoring is working";
191
325
  const char* const additional_constraints_monitoring_experiment = "{}";
192
- const char* const description_promise_based_client_call = "If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based)";
326
+ const char* const description_promise_based_client_call =
327
+ "If set, use the new gRPC promise based call code when it's appropriate "
328
+ "(ie when all filters in a stack are promise based)";
193
329
  const char* const additional_constraints_promise_based_client_call = "{}";
194
- const char* const description_free_large_allocator = "If set, return all free bytes from a \042big\042 allocator";
330
+ const char* const description_free_large_allocator =
331
+ "If set, return all free bytes from a \042big\042 allocator";
195
332
  const char* const additional_constraints_free_large_allocator = "{}";
196
- const char* const description_promise_based_server_call = "If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based)";
333
+ const char* const description_promise_based_server_call =
334
+ "If set, use the new gRPC promise based call code when it's appropriate "
335
+ "(ie when all filters in a stack are promise based)";
197
336
  const char* const additional_constraints_promise_based_server_call = "{}";
198
- const char* const description_transport_supplies_client_latency = "If set, use the transport represented value for client latency in opencensus";
199
- const char* const additional_constraints_transport_supplies_client_latency = "{}";
200
- const char* const description_event_engine_listener = "Use EventEngine listeners instead of iomgr's grpc_tcp_server";
337
+ const char* const description_transport_supplies_client_latency =
338
+ "If set, use the transport represented value for client latency in "
339
+ "opencensus";
340
+ const char* const additional_constraints_transport_supplies_client_latency =
341
+ "{}";
342
+ const char* const description_event_engine_listener =
343
+ "Use EventEngine listeners instead of iomgr's grpc_tcp_server";
201
344
  const char* const additional_constraints_event_engine_listener = "{}";
202
- const char* const description_schedule_cancellation_over_write = "Allow cancellation op to be scheduled over a write";
203
- const char* const additional_constraints_schedule_cancellation_over_write = "{}";
204
- const char* const description_trace_record_callops = "Enables tracing of call batch initiation and completion.";
345
+ const char* const description_schedule_cancellation_over_write =
346
+ "Allow cancellation op to be scheduled over a write";
347
+ const char* const additional_constraints_schedule_cancellation_over_write =
348
+ "{}";
349
+ const char* const description_trace_record_callops =
350
+ "Enables tracing of call batch initiation and completion.";
205
351
  const char* const additional_constraints_trace_record_callops = "{}";
206
- const char* const description_event_engine_dns = "If set, use EventEngine DNSResolver for client channel resolution";
352
+ const char* const description_event_engine_dns =
353
+ "If set, use EventEngine DNSResolver for client channel resolution";
207
354
  const char* const additional_constraints_event_engine_dns = "{}";
208
- const char* const description_work_stealing = "If set, use a work stealing thread pool implementation in EventEngine";
355
+ const char* const description_work_stealing =
356
+ "If set, use a work stealing thread pool implementation in EventEngine";
209
357
  const char* const additional_constraints_work_stealing = "{}";
210
358
  const char* const description_client_privacy = "If set, client privacy";
211
359
  const char* const additional_constraints_client_privacy = "{}";
212
- const char* const description_canary_client_privacy = "If set, canary client privacy";
360
+ const char* const description_canary_client_privacy =
361
+ "If set, canary client privacy";
213
362
  const char* const additional_constraints_canary_client_privacy = "{}";
214
363
  const char* const description_server_privacy = "If set, server privacy";
215
364
  const char* const additional_constraints_server_privacy = "{}";
216
- const char* const description_unique_metadata_strings = "Ensure a unique copy of strings from parsed metadata are taken. The hypothesis here is that ref counting these are causing read buffer lifetimes to be extended leading to memory bloat.";
365
+ const char* const description_unique_metadata_strings =
366
+ "Ensure a unique copy of strings from parsed metadata are taken. The "
367
+ "hypothesis here is that ref counting these are causing read buffer "
368
+ "lifetimes to be extended leading to memory bloat.";
217
369
  const char* const additional_constraints_unique_metadata_strings = "{}";
218
- const char* const description_keepalive_fix = "Allows overriding keepalive_permit_without_calls. Refer https://github.com/grpc/grpc/pull/33428 for more information.";
370
+ const char* const description_keepalive_fix =
371
+ "Allows overriding keepalive_permit_without_calls. Refer "
372
+ "https://github.com/grpc/grpc/pull/33428 for more information.";
219
373
  const char* const additional_constraints_keepalive_fix = "{}";
220
- const char* const description_keepalive_server_fix = "Allows overriding keepalive_permit_without_calls for servers. Refer https://github.com/grpc/grpc/pull/33917 for more information.";
374
+ const char* const description_keepalive_server_fix =
375
+ "Allows overriding keepalive_permit_without_calls for servers. Refer "
376
+ "https://github.com/grpc/grpc/pull/33917 for more information.";
221
377
  const char* const additional_constraints_keepalive_server_fix = "{}";
222
- }
378
+ } // namespace
223
379
 
224
380
  namespace grpc_core {
225
381
 
226
382
  const ExperimentMetadata g_experiment_metadata[] = {
227
- {"tcp_frame_size_tuning", description_tcp_frame_size_tuning, additional_constraints_tcp_frame_size_tuning, false, true},
228
- {"tcp_rcv_lowat", description_tcp_rcv_lowat, additional_constraints_tcp_rcv_lowat, false, true},
229
- {"peer_state_based_framing", description_peer_state_based_framing, additional_constraints_peer_state_based_framing, false, true},
230
- {"memory_pressure_controller", description_memory_pressure_controller, additional_constraints_memory_pressure_controller, false, true},
231
- {"unconstrained_max_quota_buffer_size", description_unconstrained_max_quota_buffer_size, additional_constraints_unconstrained_max_quota_buffer_size, false, true},
232
- {"event_engine_client", description_event_engine_client, additional_constraints_event_engine_client, false, true},
233
- {"monitoring_experiment", description_monitoring_experiment, additional_constraints_monitoring_experiment, true, true},
234
- {"promise_based_client_call", description_promise_based_client_call, additional_constraints_promise_based_client_call, false, true},
235
- {"free_large_allocator", description_free_large_allocator, additional_constraints_free_large_allocator, false, true},
236
- {"promise_based_server_call", description_promise_based_server_call, additional_constraints_promise_based_server_call, false, true},
237
- {"transport_supplies_client_latency", description_transport_supplies_client_latency, additional_constraints_transport_supplies_client_latency, false, true},
238
- {"event_engine_listener", description_event_engine_listener, additional_constraints_event_engine_listener, false, true},
239
- {"schedule_cancellation_over_write", description_schedule_cancellation_over_write, additional_constraints_schedule_cancellation_over_write, false, true},
240
- {"trace_record_callops", description_trace_record_callops, additional_constraints_trace_record_callops, false, true},
241
- {"event_engine_dns", description_event_engine_dns, additional_constraints_event_engine_dns, false, false},
242
- {"work_stealing", description_work_stealing, additional_constraints_work_stealing, false, false},
243
- {"client_privacy", description_client_privacy, additional_constraints_client_privacy, false, false},
244
- {"canary_client_privacy", description_canary_client_privacy, additional_constraints_canary_client_privacy, false, false},
245
- {"server_privacy", description_server_privacy, additional_constraints_server_privacy, false, false},
246
- {"unique_metadata_strings", description_unique_metadata_strings, additional_constraints_unique_metadata_strings, true, true},
247
- {"keepalive_fix", description_keepalive_fix, additional_constraints_keepalive_fix, false, false},
248
- {"keepalive_server_fix", description_keepalive_server_fix, additional_constraints_keepalive_server_fix, false, false},
383
+ {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
384
+ additional_constraints_tcp_frame_size_tuning, false, true},
385
+ {"tcp_rcv_lowat", description_tcp_rcv_lowat,
386
+ additional_constraints_tcp_rcv_lowat, false, true},
387
+ {"peer_state_based_framing", description_peer_state_based_framing,
388
+ additional_constraints_peer_state_based_framing, false, true},
389
+ {"memory_pressure_controller", description_memory_pressure_controller,
390
+ additional_constraints_memory_pressure_controller, false, true},
391
+ {"unconstrained_max_quota_buffer_size",
392
+ description_unconstrained_max_quota_buffer_size,
393
+ additional_constraints_unconstrained_max_quota_buffer_size, false, true},
394
+ {"event_engine_client", description_event_engine_client,
395
+ additional_constraints_event_engine_client, false, true},
396
+ {"monitoring_experiment", description_monitoring_experiment,
397
+ additional_constraints_monitoring_experiment, true, true},
398
+ {"promise_based_client_call", description_promise_based_client_call,
399
+ additional_constraints_promise_based_client_call, false, true},
400
+ {"free_large_allocator", description_free_large_allocator,
401
+ additional_constraints_free_large_allocator, false, true},
402
+ {"promise_based_server_call", description_promise_based_server_call,
403
+ additional_constraints_promise_based_server_call, false, true},
404
+ {"transport_supplies_client_latency",
405
+ description_transport_supplies_client_latency,
406
+ additional_constraints_transport_supplies_client_latency, false, true},
407
+ {"event_engine_listener", description_event_engine_listener,
408
+ additional_constraints_event_engine_listener, false, true},
409
+ {"schedule_cancellation_over_write",
410
+ description_schedule_cancellation_over_write,
411
+ additional_constraints_schedule_cancellation_over_write, false, true},
412
+ {"trace_record_callops", description_trace_record_callops,
413
+ additional_constraints_trace_record_callops, false, true},
414
+ {"event_engine_dns", description_event_engine_dns,
415
+ additional_constraints_event_engine_dns, false, false},
416
+ {"work_stealing", description_work_stealing,
417
+ additional_constraints_work_stealing, false, false},
418
+ {"client_privacy", description_client_privacy,
419
+ additional_constraints_client_privacy, false, false},
420
+ {"canary_client_privacy", description_canary_client_privacy,
421
+ additional_constraints_canary_client_privacy, false, false},
422
+ {"server_privacy", description_server_privacy,
423
+ additional_constraints_server_privacy, false, false},
424
+ {"unique_metadata_strings", description_unique_metadata_strings,
425
+ additional_constraints_unique_metadata_strings, true, true},
426
+ {"keepalive_fix", description_keepalive_fix,
427
+ additional_constraints_keepalive_fix, false, false},
428
+ {"keepalive_server_fix", description_keepalive_server_fix,
429
+ additional_constraints_keepalive_server_fix, false, false},
249
430
  };
250
431
 
251
432
  } // namespace grpc_core
@@ -51,6 +51,7 @@
51
51
  #include <grpc/support/port_platform.h>
52
52
 
53
53
  #include <stddef.h>
54
+
54
55
  #include "src/core/lib/experiments/config.h"
55
56
 
56
57
  namespace grpc_core {
@@ -144,9 +145,13 @@ inline bool IsTcpRcvLowatEnabled() { return IsExperimentEnabled(1); }
144
145
  #define GRPC_EXPERIMENT_IS_INCLUDED_PEER_STATE_BASED_FRAMING
145
146
  inline bool IsPeerStateBasedFramingEnabled() { return IsExperimentEnabled(2); }
146
147
  #define GRPC_EXPERIMENT_IS_INCLUDED_MEMORY_PRESSURE_CONTROLLER
147
- inline bool IsMemoryPressureControllerEnabled() { return IsExperimentEnabled(3); }
148
+ inline bool IsMemoryPressureControllerEnabled() {
149
+ return IsExperimentEnabled(3);
150
+ }
148
151
  #define GRPC_EXPERIMENT_IS_INCLUDED_UNCONSTRAINED_MAX_QUOTA_BUFFER_SIZE
149
- inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return IsExperimentEnabled(4); }
152
+ inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() {
153
+ return IsExperimentEnabled(4);
154
+ }
150
155
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
151
156
  inline bool IsEventEngineClientEnabled() { return IsExperimentEnabled(5); }
152
157
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
@@ -158,11 +163,15 @@ inline bool IsFreeLargeAllocatorEnabled() { return IsExperimentEnabled(8); }
158
163
  #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
159
164
  inline bool IsPromiseBasedServerCallEnabled() { return IsExperimentEnabled(9); }
160
165
  #define GRPC_EXPERIMENT_IS_INCLUDED_TRANSPORT_SUPPLIES_CLIENT_LATENCY
161
- inline bool IsTransportSuppliesClientLatencyEnabled() { return IsExperimentEnabled(10); }
166
+ inline bool IsTransportSuppliesClientLatencyEnabled() {
167
+ return IsExperimentEnabled(10);
168
+ }
162
169
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
163
170
  inline bool IsEventEngineListenerEnabled() { return IsExperimentEnabled(11); }
164
171
  #define GRPC_EXPERIMENT_IS_INCLUDED_SCHEDULE_CANCELLATION_OVER_WRITE
165
- inline bool IsScheduleCancellationOverWriteEnabled() { return IsExperimentEnabled(12); }
172
+ inline bool IsScheduleCancellationOverWriteEnabled() {
173
+ return IsExperimentEnabled(12);
174
+ }
166
175
  #define GRPC_EXPERIMENT_IS_INCLUDED_TRACE_RECORD_CALLOPS
167
176
  inline bool IsTraceRecordCallopsEnabled() { return IsExperimentEnabled(13); }
168
177
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
@@ -14,5 +14,5 @@
14
14
 
15
15
  # GRPC contains the General RPC module.
16
16
  module GRPC
17
- VERSION = '1.58.0'
17
+ VERSION = '1.58.3'
18
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.58.0
4
+ version: 1.58.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - gRPC Authors
8
8
  autorequire:
9
9
  bindir: src/ruby/bin
10
10
  cert_chain: []
11
- date: 2023-09-06 00:00:00.000000000 Z
11
+ date: 2024-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -1250,6 +1250,7 @@ files:
1250
1250
  - src/core/lib/event_engine/handle_containers.h
1251
1251
  - src/core/lib/event_engine/memory_allocator.cc
1252
1252
  - src/core/lib/event_engine/memory_allocator_factory.h
1253
+ - src/core/lib/event_engine/nameser.h
1253
1254
  - src/core/lib/event_engine/poller.h
1254
1255
  - src/core/lib/event_engine/posix.h
1255
1256
  - src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc
@@ -3269,7 +3270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
3269
3270
  - !ruby/object:Gem::Version
3270
3271
  version: '0'
3271
3272
  requirements: []
3272
- rubygems_version: 3.4.19
3273
+ rubygems_version: 3.5.17
3273
3274
  signing_key:
3274
3275
  specification_version: 4
3275
3276
  summary: GRPC system in Ruby