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 +4 -4
- data/Makefile +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +39 -28
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -0
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +1 -4
- data/src/core/lib/event_engine/ares_resolver.cc +9 -0
- data/src/core/lib/event_engine/nameser.h +102 -0
- data/src/core/lib/experiments/experiments.cc +319 -138
- data/src/core/lib/experiments/experiments.h +13 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9afb343e08dfcac976aebf9d7ef1a1ece8e0a825c336ff03a50e9c5ce4d5c0fa
|
4
|
+
data.tar.gz: 942e31b171f23226e3c41fafcd4abd4e28f52b7351ac6ce3d57c0c44ae42cb22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26695c9d42c9485d8a09ff7d2c512ce3e9e18da78f750102d07430404cc250f443fc6bfcfc8aef3f43a5a4a52e391930f057650dfb21f7adda70a2611cac5971
|
7
|
+
data.tar.gz: 781317e1cc60d9a72f87027944fd637532d5b77c27e2dba867fbc73b6a48de455707879619c5d5342663805b9c5617cd3fb765b7e77642ee8020d024c0384a89
|
data/Makefile
CHANGED
@@ -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&
|
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
|
-
|
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 ||
|
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 (
|
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
|
-
|
302
|
-
|
303
|
-
|
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
|
-
|
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&
|
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
|
-
|
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 (
|
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 (
|
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,
|
990
|
-
if (!
|
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{
|
998
|
-
|
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(
|
1159
|
-
|
1160
|
-
|
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(
|
1163
|
-
|
1164
|
-
|
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
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
33
|
-
|
34
|
-
const char* const
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
45
|
-
|
46
|
-
|
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 =
|
49
|
-
|
50
|
-
const char* const
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
110
|
-
|
111
|
-
const char* const
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
122
|
-
|
123
|
-
|
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 =
|
126
|
-
|
127
|
-
const char* const
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
187
|
-
|
188
|
-
const char* const
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
199
|
-
|
200
|
-
|
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 =
|
203
|
-
|
204
|
-
const char* const
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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 =
|
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
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
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() {
|
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() {
|
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() {
|
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() {
|
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
|
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.
|
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:
|
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:
|
3271
|
+
version: '0'
|
3271
3272
|
requirements: []
|
3272
|
-
rubygems_version: 3.
|
3273
|
+
rubygems_version: 3.5.17
|
3273
3274
|
signing_key:
|
3274
3275
|
specification_version: 4
|
3275
3276
|
summary: GRPC system in Ruby
|