grpc 1.58.0.pre1 → 1.58.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01a54d9914bdc5a6bdadf561efb3e1175afb3d7848a6ed454975ec9e8108bdd5
4
- data.tar.gz: 75c85cea5a7b709b32e11aa1618920a2c73bf886f795978bfc07e0de4c597dff
3
+ metadata.gz: 9afb343e08dfcac976aebf9d7ef1a1ece8e0a825c336ff03a50e9c5ce4d5c0fa
4
+ data.tar.gz: 942e31b171f23226e3c41fafcd4abd4e28f52b7351ac6ce3d57c0c44ae42cb22
5
5
  SHA512:
6
- metadata.gz: c22871b6798463556a8849a5721e6d6e6b34bd45be6f0c96ee3fbec45c250c8a6771cb4e87cdf58afce00624b6a7fd6a5146d049c0e40629bea2954400e55c0f
7
- data.tar.gz: 6a8c8f224656d8e37022250fedbe388754b47b5b8bf3550499cdc078750af72e66a77bbc88f1b1ffcbe9a5a689415b3ff83a159f15d79f264c5bd43513f2ce07
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-pre1
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.pre1'
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.pre1
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-08-24 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
@@ -3265,11 +3266,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
3265
3266
  version: 2.5.0
3266
3267
  required_rubygems_version: !ruby/object:Gem::Requirement
3267
3268
  requirements:
3268
- - - ">"
3269
+ - - ">="
3269
3270
  - !ruby/object:Gem::Version
3270
- version: 1.3.1
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