grpc 1.82.2 → 1.83.0.pre1

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.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8 -5
  3. data/etc/roots.pem +10400 -3855
  4. data/include/grpc/grpc_audit_logging.h +2 -2
  5. data/include/grpc/grpc_security_constants.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +23 -0
  7. data/src/core/call/call_filters.h +19 -3
  8. data/src/core/call/call_spine.h +4 -4
  9. data/src/core/call/client_call.cc +1 -1
  10. data/src/core/call/metadata.cc +7 -2
  11. data/src/core/call/server_call.cc +13 -3
  12. data/src/core/call/server_call.h +5 -3
  13. data/src/core/client_channel/backup_poller.cc +2 -17
  14. data/src/core/client_channel/client_channel.cc +17 -14
  15. data/src/core/client_channel/client_channel.h +3 -1
  16. data/src/core/client_channel/client_channel_filter.cc +11 -13
  17. data/src/core/client_channel/client_channel_service_config.cc +5 -13
  18. data/src/core/client_channel/direct_channel.cc +5 -1
  19. data/src/core/client_channel/direct_channel.h +3 -1
  20. data/src/core/config/experiment_env_var.cc +30 -0
  21. data/src/core/config/experiment_env_var.h +26 -0
  22. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +6 -6
  23. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +14 -2
  24. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.cc +172 -0
  25. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +103 -0
  26. data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +3 -2
  27. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +10 -3
  28. data/src/core/credentials/transport/tls/tls_security_connector.cc +14 -2
  29. data/src/core/credentials/transport/xds/xds_credentials.cc +4 -12
  30. data/src/core/ext/filters/http/message_compress/compression_filter.cc +32 -25
  31. data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -0
  32. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -1
  33. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -13
  34. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -57
  35. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
  36. data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -2
  37. data/src/core/ext/transport/chttp2/transport/frame.cc +58 -1
  38. data/src/core/ext/transport/chttp2/transport/frame.h +13 -1
  39. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -34
  40. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +23 -55
  41. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +0 -1
  42. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -4
  43. data/src/core/ext/transport/chttp2/transport/frame_security.cc +10 -1
  44. data/src/core/ext/transport/chttp2/transport/frame_security.h +2 -1
  45. data/src/core/ext/transport/chttp2/transport/goaway.cc +11 -1
  46. data/src/core/ext/transport/chttp2/transport/goaway.h +17 -1
  47. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -0
  48. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +117 -276
  49. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +44 -17
  50. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +382 -496
  51. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +75 -77
  52. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  53. data/src/core/ext/transport/chttp2/transport/http2_settings.h +30 -11
  54. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +24 -9
  55. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +26 -0
  56. data/src/core/ext/transport/chttp2/transport/http2_transport.h +2 -0
  57. data/src/core/ext/transport/chttp2/transport/internal.h +4 -6
  58. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -10
  59. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +1 -1
  60. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +4 -10
  61. data/src/core/ext/transport/chttp2/transport/read_context.h +62 -20
  62. data/src/core/ext/transport/chttp2/transport/security_frame.h +1 -0
  63. data/src/core/ext/transport/chttp2/transport/stream.h +271 -120
  64. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +77 -61
  65. data/src/core/handshaker/security/secure_endpoint.cc +0 -13
  66. data/src/core/lib/channel/promise_based_filter.cc +77 -3
  67. data/src/core/lib/channel/promise_based_filter.h +238 -184
  68. data/src/core/lib/compression/message_compress.cc +97 -132
  69. data/src/core/lib/compression/message_compress.h +0 -24
  70. data/src/core/lib/event_engine/extensions/receive_coalescing_extension.h +0 -4
  71. data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
  72. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +2 -12
  73. data/src/core/lib/event_engine/shim.cc +2 -16
  74. data/src/core/lib/event_engine/shim.h +0 -4
  75. data/src/core/lib/experiments/experiments.cc +57 -123
  76. data/src/core/lib/experiments/experiments.h +43 -82
  77. data/src/core/lib/iomgr/error.cc +3 -73
  78. data/src/core/lib/iomgr/error.h +8 -6
  79. data/src/core/lib/iomgr/error_cfstream.cc +1 -2
  80. data/src/core/lib/iomgr/ev_epoll1_linux.cc +2 -6
  81. data/src/core/lib/iomgr/ev_poll_posix.cc +2 -6
  82. data/src/core/lib/iomgr/tcp_posix.cc +2 -6
  83. data/src/core/lib/security/authorization/audit_logging.cc +2 -2
  84. data/src/core/lib/security/authorization/audit_logging.h +3 -3
  85. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +11 -13
  86. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  87. data/src/core/lib/security/authorization/matchers.cc +20 -20
  88. data/src/core/lib/security/authorization/matchers.h +15 -16
  89. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  90. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  91. data/src/core/lib/security/authorization/stdout_logger.h +6 -5
  92. data/src/core/lib/surface/call.cc +0 -8
  93. data/src/core/lib/surface/call.h +2 -0
  94. data/src/core/lib/surface/channel.cc +21 -2
  95. data/src/core/lib/surface/channel.h +14 -6
  96. data/src/core/lib/surface/filter_stack_call.cc +10 -29
  97. data/src/core/lib/surface/legacy_channel.cc +7 -7
  98. data/src/core/lib/surface/legacy_channel.h +3 -1
  99. data/src/core/lib/surface/version.cc +2 -2
  100. data/src/core/lib/transport/bdp_estimator.cc +13 -13
  101. data/src/core/lib/transport/bdp_estimator.h +9 -5
  102. data/src/core/lib/transport/error_utils.cc +26 -138
  103. data/src/core/lib/transport/promise_endpoint.h +2 -4
  104. data/src/core/load_balancing/grpclb/grpclb.cc +2 -1
  105. data/src/core/load_balancing/pick_first/pick_first.cc +33 -2
  106. data/src/core/load_balancing/pick_first/pick_first.h +6 -0
  107. data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -10
  108. data/src/core/load_balancing/rls/rls.cc +2 -1
  109. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +2 -7
  110. data/src/core/load_balancing/xds/cds.cc +80 -56
  111. data/src/core/load_balancing/xds/cds.h +21 -0
  112. data/src/core/mitigation_engine/mitigation.h +53 -0
  113. data/src/core/mitigation_engine/mitigation_provider.h +62 -0
  114. data/src/core/resolver/dns/dns_resolver_plugin.cc +1 -6
  115. data/src/core/resolver/xds/xds_resolver.cc +14 -11
  116. data/src/core/server/server.h +1 -4
  117. data/src/core/server/server_config_selector.h +5 -4
  118. data/src/core/server/server_config_selector_filter.cc +67 -80
  119. data/src/core/server/xds_server_config_fetcher.cc +681 -692
  120. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -12
  121. data/src/core/telemetry/call_tracer.cc +49 -2
  122. data/src/core/telemetry/call_tracer.h +1 -0
  123. data/src/core/telemetry/tcp_tracer.h +38 -0
  124. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  125. data/src/core/tsi/ssl_telemetry_utils.cc +343 -0
  126. data/src/core/tsi/ssl_telemetry_utils.h +74 -0
  127. data/src/core/tsi/ssl_transport_security.cc +577 -301
  128. data/src/core/tsi/ssl_transport_security.h +22 -6
  129. data/src/core/tsi/ssl_transport_security_utils.cc +2 -0
  130. data/src/core/tsi/transport_security.h +7 -0
  131. data/src/core/util/http_client/httpcli.cc +1 -4
  132. data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
  133. data/src/core/util/status_helper.cc +71 -192
  134. data/src/core/util/status_helper.h +16 -21
  135. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +2 -11
  136. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -7
  137. data/src/core/xds/grpc/xds_cluster_parser.cc +5 -16
  138. data/src/core/xds/grpc/xds_common_types.cc +94 -38
  139. data/src/core/xds/grpc/xds_common_types.h +33 -18
  140. data/src/core/xds/grpc/xds_common_types_parser.cc +168 -100
  141. data/src/core/xds/grpc/xds_common_types_parser.h +18 -1
  142. data/src/core/xds/grpc/xds_endpoint_parser.cc +6 -17
  143. data/src/core/xds/grpc/xds_http_filter_registry.cc +2 -10
  144. data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -12
  145. data/src/core/xds/grpc/xds_metadata_parser.cc +0 -2
  146. data/src/core/xds/grpc/xds_route_config_parser.cc +7 -11
  147. data/src/core/xds/grpc/xds_routing.cc +113 -82
  148. data/src/core/xds/grpc/xds_routing.h +70 -20
  149. data/src/core/xds/grpc/xds_server_grpc.cc +22 -13
  150. data/src/core/xds/grpc/xds_server_grpc.h +16 -2
  151. data/src/core/xds/grpc/xds_server_grpc_interface.h +10 -0
  152. data/src/core/xds/grpc/xds_transport_grpc.cc +123 -18
  153. data/src/core/xds/grpc/xds_transport_grpc.h +28 -4
  154. data/src/core/xds/xds_client/lrs_client.cc +3 -7
  155. data/src/core/xds/xds_client/xds_bootstrap.cc +4 -16
  156. data/src/core/xds/xds_client/xds_client.cc +2 -15
  157. data/src/core/xds/xds_client/xds_transport.h +3 -0
  158. data/src/ruby/lib/grpc/version.rb +1 -1
  159. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
  160. metadata +10 -2
@@ -54,9 +54,6 @@ const char* const additional_constraints_chaotic_good_send_supported_features =
54
54
  const char* const description_custom_frame_check =
55
55
  "Adding checks to custom HTTP2 frame.";
56
56
  const char* const additional_constraints_custom_frame_check = "{}";
57
- const char* const description_error_flatten =
58
- "Flatten errors to ordinary absl::Status form.";
59
- const char* const additional_constraints_error_flatten = "{}";
60
57
  const char* const description_event_engine_client =
61
58
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
62
59
  const char* const additional_constraints_event_engine_client = "{}";
@@ -92,9 +89,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
92
89
  static_cast<uint8_t>(
93
90
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
94
91
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
95
- const char* const description_event_engine_poller_for_python =
96
- "Enable event engine poller in gRPC Python";
97
- const char* const additional_constraints_event_engine_poller_for_python = "{}";
98
92
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
99
93
  "Fail recv initial metadata when the deadline is exceeded.";
100
94
  const char* const
@@ -109,9 +103,6 @@ const char* const description_h2_max_deallocating_streams_headroom =
109
103
  "Separate allocated max concurrent streams.";
110
104
  const char* const additional_constraints_h2_max_deallocating_streams_headroom =
111
105
  "{}";
112
- const char* const description_header_data_frame =
113
- "Managing header and data memory better";
114
- const char* const additional_constraints_header_data_frame = "{}";
115
106
  const char* const description_inproc_cancel_stream =
116
107
  "If set, cancel inproc stream inside the transport mutex.";
117
108
  const char* const additional_constraints_inproc_cancel_stream = "{}";
@@ -123,9 +114,6 @@ const char* const description_local_connector_secure =
123
114
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
124
115
  "connections.";
125
116
  const char* const additional_constraints_local_connector_secure = "{}";
126
- const char* const description_max_inflight_pings_strict_limit =
127
- "If set, the max inflight pings limit is strictly enforced.";
128
- const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
129
117
  const char* const description_memory_optimization_01 = "Memory Optimization";
130
118
  const char* const additional_constraints_memory_optimization_01 = "{}";
131
119
  const char* const description_memory_optimization_02 = "Memory Optimization 02";
@@ -154,6 +142,10 @@ const char* const description_optimization_03 = "Optimization";
154
142
  const char* const additional_constraints_optimization_03 = "{}";
155
143
  const char* const description_optimization_04 = "Optimization";
156
144
  const char* const additional_constraints_optimization_04 = "{}";
145
+ const char* const description_optimization_05 = "Optimization";
146
+ const char* const additional_constraints_optimization_05 = "{}";
147
+ const char* const description_optimization_06 = "Optimization";
148
+ const char* const additional_constraints_optimization_06 = "{}";
157
149
  const char* const description_otel_export_telemetry_domains =
158
150
  "Export telemetry domains in OpenTelemetry metrics.";
159
151
  const char* const additional_constraints_otel_export_telemetry_domains = "{}";
@@ -245,11 +237,6 @@ const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
245
237
  const char* const description_subchannel_connection_scaling =
246
238
  "Subchannel connection scaling support.";
247
239
  const char* const additional_constraints_subchannel_connection_scaling = "{}";
248
- const char* const description_subchannel_wrapper_cleanup_on_orphan =
249
- "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
250
- "gets orphaned.";
251
- const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
252
- "{}";
253
240
  const char* const description_tcp_frame_size_tuning =
254
241
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
255
242
  "would not indicate completion of a read operation until a specified "
@@ -287,6 +274,9 @@ const char* const description_xds_server_filter_chain_per_route =
287
274
  "xDS servers use a separate filter chain for each route.";
288
275
  const char* const additional_constraints_xds_server_filter_chain_per_route =
289
276
  "{}";
277
+ const uint8_t required_experiments_xds_server_filter_chain_per_route[] = {
278
+ static_cast<uint8_t>(
279
+ grpc_core::kExperimentIdV2NonOwningWakerImplementation)};
290
280
  } // namespace
291
281
 
292
282
  namespace grpc_core {
@@ -312,11 +302,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
312
302
  {"chaotic_good_send_supported_features",
313
303
  description_chaotic_good_send_supported_features,
314
304
  additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
315
- false, true},
305
+ true, true},
316
306
  {"custom_frame_check", description_custom_frame_check,
317
307
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
318
- {"error_flatten", description_error_flatten,
319
- additional_constraints_error_flatten, nullptr, 0, true, false},
320
308
  {"event_engine_client", description_event_engine_client,
321
309
  additional_constraints_event_engine_client, nullptr, 0, true, false},
322
310
  {"event_engine_dns", description_event_engine_dns,
@@ -336,10 +324,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
336
324
  description_event_engine_for_all_other_endpoints,
337
325
  additional_constraints_event_engine_for_all_other_endpoints,
338
326
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
339
- {"event_engine_poller_for_python",
340
- description_event_engine_poller_for_python,
341
- additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
342
- true},
343
327
  {"fail_recv_metadata_on_deadline_exceeded",
344
328
  description_fail_recv_metadata_on_deadline_exceeded,
345
329
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -352,8 +336,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
352
336
  description_h2_max_deallocating_streams_headroom,
353
337
  additional_constraints_h2_max_deallocating_streams_headroom, nullptr, 0,
354
338
  false, true},
355
- {"header_data_frame", description_header_data_frame,
356
- additional_constraints_header_data_frame, nullptr, 0, true, true},
357
339
  {"inproc_cancel_stream", description_inproc_cancel_stream,
358
340
  additional_constraints_inproc_cancel_stream, nullptr, 0, true, true},
359
341
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
@@ -361,22 +343,18 @@ const ExperimentMetadata g_experiment_metadata[] = {
361
343
  true},
362
344
  {"local_connector_secure", description_local_connector_secure,
363
345
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
364
- {"max_inflight_pings_strict_limit",
365
- description_max_inflight_pings_strict_limit,
366
- additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
367
- true},
368
346
  {"memory_optimization_01", description_memory_optimization_01,
369
347
  additional_constraints_memory_optimization_01, nullptr, 0, false, false},
370
348
  {"memory_optimization_02", description_memory_optimization_02,
371
349
  additional_constraints_memory_optimization_02, nullptr, 0, false, false},
372
350
  {"message_size_refactoring", description_message_size_refactoring,
373
- additional_constraints_message_size_refactoring, nullptr, 0, true, true},
351
+ additional_constraints_message_size_refactoring, nullptr, 0, false, true},
374
352
  {"metadata_outstanding_token_refactor",
375
353
  description_metadata_outstanding_token_refactor,
376
354
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
377
355
  false, true},
378
356
  {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
379
- additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
357
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, false,
380
358
  true},
381
359
  {"monitoring_experiment", description_monitoring_experiment,
382
360
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
@@ -390,6 +368,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
390
368
  additional_constraints_optimization_03, nullptr, 0, true, true},
391
369
  {"optimization_04", description_optimization_04,
392
370
  additional_constraints_optimization_04, nullptr, 0, true, true},
371
+ {"optimization_05", description_optimization_05,
372
+ additional_constraints_optimization_05, nullptr, 0, false, true},
373
+ {"optimization_06", description_optimization_06,
374
+ additional_constraints_optimization_06, nullptr, 0, false, true},
393
375
  {"otel_export_telemetry_domains", description_otel_export_telemetry_domains,
394
376
  additional_constraints_otel_export_telemetry_domains, nullptr, 0, false,
395
377
  true},
@@ -398,7 +380,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
398
380
  {"ph2_client_server", description_ph2_client_server,
399
381
  additional_constraints_ph2_client_server, nullptr, 0, false, true},
400
382
  {"ph2_perf_01", description_ph2_perf_01, additional_constraints_ph2_perf_01,
401
- nullptr, 0, true, true},
383
+ nullptr, 0, false, true},
402
384
  {"ph2_server", description_ph2_server, additional_constraints_ph2_server,
403
385
  nullptr, 0, false, true},
404
386
  {"pick_first_ignore_empty_updates",
@@ -430,7 +412,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
430
412
  {"retry_in_callv3", description_retry_in_callv3,
431
413
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
432
414
  {"return_preexisting_errors", description_return_preexisting_errors,
433
- additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
415
+ additional_constraints_return_preexisting_errors, nullptr, 0, true, true},
434
416
  {"schedule_cancellation_over_write",
435
417
  description_schedule_cancellation_over_write,
436
418
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -452,12 +434,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
452
434
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
453
435
  true},
454
436
  {"subchannel_connection_scaling", description_subchannel_connection_scaling,
455
- additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
437
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
456
438
  true},
457
- {"subchannel_wrapper_cleanup_on_orphan",
458
- description_subchannel_wrapper_cleanup_on_orphan,
459
- additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
460
- true, true},
461
439
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
462
440
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
463
441
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -488,8 +466,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
488
466
  false, true},
489
467
  {"xds_server_filter_chain_per_route",
490
468
  description_xds_server_filter_chain_per_route,
491
- additional_constraints_xds_server_filter_chain_per_route, nullptr, 0,
492
- false, true},
469
+ additional_constraints_xds_server_filter_chain_per_route,
470
+ required_experiments_xds_server_filter_chain_per_route, 1, false, true},
493
471
  };
494
472
 
495
473
  } // namespace grpc_core
@@ -527,9 +505,6 @@ const char* const additional_constraints_chaotic_good_send_supported_features =
527
505
  const char* const description_custom_frame_check =
528
506
  "Adding checks to custom HTTP2 frame.";
529
507
  const char* const additional_constraints_custom_frame_check = "{}";
530
- const char* const description_error_flatten =
531
- "Flatten errors to ordinary absl::Status form.";
532
- const char* const additional_constraints_error_flatten = "{}";
533
508
  const char* const description_event_engine_client =
534
509
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
535
510
  const char* const additional_constraints_event_engine_client = "{}";
@@ -565,9 +540,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
565
540
  static_cast<uint8_t>(
566
541
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
567
542
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
568
- const char* const description_event_engine_poller_for_python =
569
- "Enable event engine poller in gRPC Python";
570
- const char* const additional_constraints_event_engine_poller_for_python = "{}";
571
543
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
572
544
  "Fail recv initial metadata when the deadline is exceeded.";
573
545
  const char* const
@@ -582,9 +554,6 @@ const char* const description_h2_max_deallocating_streams_headroom =
582
554
  "Separate allocated max concurrent streams.";
583
555
  const char* const additional_constraints_h2_max_deallocating_streams_headroom =
584
556
  "{}";
585
- const char* const description_header_data_frame =
586
- "Managing header and data memory better";
587
- const char* const additional_constraints_header_data_frame = "{}";
588
557
  const char* const description_inproc_cancel_stream =
589
558
  "If set, cancel inproc stream inside the transport mutex.";
590
559
  const char* const additional_constraints_inproc_cancel_stream = "{}";
@@ -596,9 +565,6 @@ const char* const description_local_connector_secure =
596
565
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
597
566
  "connections.";
598
567
  const char* const additional_constraints_local_connector_secure = "{}";
599
- const char* const description_max_inflight_pings_strict_limit =
600
- "If set, the max inflight pings limit is strictly enforced.";
601
- const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
602
568
  const char* const description_memory_optimization_01 = "Memory Optimization";
603
569
  const char* const additional_constraints_memory_optimization_01 = "{}";
604
570
  const char* const description_memory_optimization_02 = "Memory Optimization 02";
@@ -627,6 +593,10 @@ const char* const description_optimization_03 = "Optimization";
627
593
  const char* const additional_constraints_optimization_03 = "{}";
628
594
  const char* const description_optimization_04 = "Optimization";
629
595
  const char* const additional_constraints_optimization_04 = "{}";
596
+ const char* const description_optimization_05 = "Optimization";
597
+ const char* const additional_constraints_optimization_05 = "{}";
598
+ const char* const description_optimization_06 = "Optimization";
599
+ const char* const additional_constraints_optimization_06 = "{}";
630
600
  const char* const description_otel_export_telemetry_domains =
631
601
  "Export telemetry domains in OpenTelemetry metrics.";
632
602
  const char* const additional_constraints_otel_export_telemetry_domains = "{}";
@@ -718,11 +688,6 @@ const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
718
688
  const char* const description_subchannel_connection_scaling =
719
689
  "Subchannel connection scaling support.";
720
690
  const char* const additional_constraints_subchannel_connection_scaling = "{}";
721
- const char* const description_subchannel_wrapper_cleanup_on_orphan =
722
- "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
723
- "gets orphaned.";
724
- const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
725
- "{}";
726
691
  const char* const description_tcp_frame_size_tuning =
727
692
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
728
693
  "would not indicate completion of a read operation until a specified "
@@ -760,6 +725,9 @@ const char* const description_xds_server_filter_chain_per_route =
760
725
  "xDS servers use a separate filter chain for each route.";
761
726
  const char* const additional_constraints_xds_server_filter_chain_per_route =
762
727
  "{}";
728
+ const uint8_t required_experiments_xds_server_filter_chain_per_route[] = {
729
+ static_cast<uint8_t>(
730
+ grpc_core::kExperimentIdV2NonOwningWakerImplementation)};
763
731
  } // namespace
764
732
 
765
733
  namespace grpc_core {
@@ -785,11 +753,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
785
753
  {"chaotic_good_send_supported_features",
786
754
  description_chaotic_good_send_supported_features,
787
755
  additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
788
- false, true},
756
+ true, true},
789
757
  {"custom_frame_check", description_custom_frame_check,
790
758
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
791
- {"error_flatten", description_error_flatten,
792
- additional_constraints_error_flatten, nullptr, 0, true, false},
793
759
  {"event_engine_client", description_event_engine_client,
794
760
  additional_constraints_event_engine_client, nullptr, 0, true, false},
795
761
  {"event_engine_dns", description_event_engine_dns,
@@ -809,10 +775,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
809
775
  description_event_engine_for_all_other_endpoints,
810
776
  additional_constraints_event_engine_for_all_other_endpoints,
811
777
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
812
- {"event_engine_poller_for_python",
813
- description_event_engine_poller_for_python,
814
- additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
815
- true},
816
778
  {"fail_recv_metadata_on_deadline_exceeded",
817
779
  description_fail_recv_metadata_on_deadline_exceeded,
818
780
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -825,8 +787,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
825
787
  description_h2_max_deallocating_streams_headroom,
826
788
  additional_constraints_h2_max_deallocating_streams_headroom, nullptr, 0,
827
789
  false, true},
828
- {"header_data_frame", description_header_data_frame,
829
- additional_constraints_header_data_frame, nullptr, 0, true, true},
830
790
  {"inproc_cancel_stream", description_inproc_cancel_stream,
831
791
  additional_constraints_inproc_cancel_stream, nullptr, 0, true, true},
832
792
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
@@ -834,22 +794,18 @@ const ExperimentMetadata g_experiment_metadata[] = {
834
794
  true},
835
795
  {"local_connector_secure", description_local_connector_secure,
836
796
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
837
- {"max_inflight_pings_strict_limit",
838
- description_max_inflight_pings_strict_limit,
839
- additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
840
- true},
841
797
  {"memory_optimization_01", description_memory_optimization_01,
842
798
  additional_constraints_memory_optimization_01, nullptr, 0, false, false},
843
799
  {"memory_optimization_02", description_memory_optimization_02,
844
800
  additional_constraints_memory_optimization_02, nullptr, 0, false, false},
845
801
  {"message_size_refactoring", description_message_size_refactoring,
846
- additional_constraints_message_size_refactoring, nullptr, 0, true, true},
802
+ additional_constraints_message_size_refactoring, nullptr, 0, false, true},
847
803
  {"metadata_outstanding_token_refactor",
848
804
  description_metadata_outstanding_token_refactor,
849
805
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
850
806
  false, true},
851
807
  {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
852
- additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
808
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, false,
853
809
  true},
854
810
  {"monitoring_experiment", description_monitoring_experiment,
855
811
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
@@ -863,6 +819,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
863
819
  additional_constraints_optimization_03, nullptr, 0, true, true},
864
820
  {"optimization_04", description_optimization_04,
865
821
  additional_constraints_optimization_04, nullptr, 0, true, true},
822
+ {"optimization_05", description_optimization_05,
823
+ additional_constraints_optimization_05, nullptr, 0, false, true},
824
+ {"optimization_06", description_optimization_06,
825
+ additional_constraints_optimization_06, nullptr, 0, false, true},
866
826
  {"otel_export_telemetry_domains", description_otel_export_telemetry_domains,
867
827
  additional_constraints_otel_export_telemetry_domains, nullptr, 0, false,
868
828
  true},
@@ -871,7 +831,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
871
831
  {"ph2_client_server", description_ph2_client_server,
872
832
  additional_constraints_ph2_client_server, nullptr, 0, false, true},
873
833
  {"ph2_perf_01", description_ph2_perf_01, additional_constraints_ph2_perf_01,
874
- nullptr, 0, true, true},
834
+ nullptr, 0, false, true},
875
835
  {"ph2_server", description_ph2_server, additional_constraints_ph2_server,
876
836
  nullptr, 0, false, true},
877
837
  {"pick_first_ignore_empty_updates",
@@ -903,7 +863,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
903
863
  {"retry_in_callv3", description_retry_in_callv3,
904
864
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
905
865
  {"return_preexisting_errors", description_return_preexisting_errors,
906
- additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
866
+ additional_constraints_return_preexisting_errors, nullptr, 0, true, true},
907
867
  {"schedule_cancellation_over_write",
908
868
  description_schedule_cancellation_over_write,
909
869
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -925,12 +885,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
925
885
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
926
886
  true},
927
887
  {"subchannel_connection_scaling", description_subchannel_connection_scaling,
928
- additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
888
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
929
889
  true},
930
- {"subchannel_wrapper_cleanup_on_orphan",
931
- description_subchannel_wrapper_cleanup_on_orphan,
932
- additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
933
- true, true},
934
890
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
935
891
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
936
892
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -961,8 +917,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
961
917
  false, true},
962
918
  {"xds_server_filter_chain_per_route",
963
919
  description_xds_server_filter_chain_per_route,
964
- additional_constraints_xds_server_filter_chain_per_route, nullptr, 0,
965
- false, true},
920
+ additional_constraints_xds_server_filter_chain_per_route,
921
+ required_experiments_xds_server_filter_chain_per_route, 1, false, true},
966
922
  };
967
923
 
968
924
  } // namespace grpc_core
@@ -1000,9 +956,6 @@ const char* const additional_constraints_chaotic_good_send_supported_features =
1000
956
  const char* const description_custom_frame_check =
1001
957
  "Adding checks to custom HTTP2 frame.";
1002
958
  const char* const additional_constraints_custom_frame_check = "{}";
1003
- const char* const description_error_flatten =
1004
- "Flatten errors to ordinary absl::Status form.";
1005
- const char* const additional_constraints_error_flatten = "{}";
1006
959
  const char* const description_event_engine_client =
1007
960
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
1008
961
  const char* const additional_constraints_event_engine_client = "{}";
@@ -1038,9 +991,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
1038
991
  static_cast<uint8_t>(
1039
992
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
1040
993
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
1041
- const char* const description_event_engine_poller_for_python =
1042
- "Enable event engine poller in gRPC Python";
1043
- const char* const additional_constraints_event_engine_poller_for_python = "{}";
1044
994
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
1045
995
  "Fail recv initial metadata when the deadline is exceeded.";
1046
996
  const char* const
@@ -1055,9 +1005,6 @@ const char* const description_h2_max_deallocating_streams_headroom =
1055
1005
  "Separate allocated max concurrent streams.";
1056
1006
  const char* const additional_constraints_h2_max_deallocating_streams_headroom =
1057
1007
  "{}";
1058
- const char* const description_header_data_frame =
1059
- "Managing header and data memory better";
1060
- const char* const additional_constraints_header_data_frame = "{}";
1061
1008
  const char* const description_inproc_cancel_stream =
1062
1009
  "If set, cancel inproc stream inside the transport mutex.";
1063
1010
  const char* const additional_constraints_inproc_cancel_stream = "{}";
@@ -1069,9 +1016,6 @@ const char* const description_local_connector_secure =
1069
1016
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
1070
1017
  "connections.";
1071
1018
  const char* const additional_constraints_local_connector_secure = "{}";
1072
- const char* const description_max_inflight_pings_strict_limit =
1073
- "If set, the max inflight pings limit is strictly enforced.";
1074
- const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
1075
1019
  const char* const description_memory_optimization_01 = "Memory Optimization";
1076
1020
  const char* const additional_constraints_memory_optimization_01 = "{}";
1077
1021
  const char* const description_memory_optimization_02 = "Memory Optimization 02";
@@ -1100,6 +1044,10 @@ const char* const description_optimization_03 = "Optimization";
1100
1044
  const char* const additional_constraints_optimization_03 = "{}";
1101
1045
  const char* const description_optimization_04 = "Optimization";
1102
1046
  const char* const additional_constraints_optimization_04 = "{}";
1047
+ const char* const description_optimization_05 = "Optimization";
1048
+ const char* const additional_constraints_optimization_05 = "{}";
1049
+ const char* const description_optimization_06 = "Optimization";
1050
+ const char* const additional_constraints_optimization_06 = "{}";
1103
1051
  const char* const description_otel_export_telemetry_domains =
1104
1052
  "Export telemetry domains in OpenTelemetry metrics.";
1105
1053
  const char* const additional_constraints_otel_export_telemetry_domains = "{}";
@@ -1191,11 +1139,6 @@ const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
1191
1139
  const char* const description_subchannel_connection_scaling =
1192
1140
  "Subchannel connection scaling support.";
1193
1141
  const char* const additional_constraints_subchannel_connection_scaling = "{}";
1194
- const char* const description_subchannel_wrapper_cleanup_on_orphan =
1195
- "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
1196
- "gets orphaned.";
1197
- const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
1198
- "{}";
1199
1142
  const char* const description_tcp_frame_size_tuning =
1200
1143
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
1201
1144
  "would not indicate completion of a read operation until a specified "
@@ -1233,6 +1176,9 @@ const char* const description_xds_server_filter_chain_per_route =
1233
1176
  "xDS servers use a separate filter chain for each route.";
1234
1177
  const char* const additional_constraints_xds_server_filter_chain_per_route =
1235
1178
  "{}";
1179
+ const uint8_t required_experiments_xds_server_filter_chain_per_route[] = {
1180
+ static_cast<uint8_t>(
1181
+ grpc_core::kExperimentIdV2NonOwningWakerImplementation)};
1236
1182
  } // namespace
1237
1183
 
1238
1184
  namespace grpc_core {
@@ -1258,11 +1204,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
1258
1204
  {"chaotic_good_send_supported_features",
1259
1205
  description_chaotic_good_send_supported_features,
1260
1206
  additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
1261
- false, true},
1207
+ true, true},
1262
1208
  {"custom_frame_check", description_custom_frame_check,
1263
1209
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
1264
- {"error_flatten", description_error_flatten,
1265
- additional_constraints_error_flatten, nullptr, 0, true, false},
1266
1210
  {"event_engine_client", description_event_engine_client,
1267
1211
  additional_constraints_event_engine_client, nullptr, 0, true, false},
1268
1212
  {"event_engine_dns", description_event_engine_dns,
@@ -1282,10 +1226,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1282
1226
  description_event_engine_for_all_other_endpoints,
1283
1227
  additional_constraints_event_engine_for_all_other_endpoints,
1284
1228
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
1285
- {"event_engine_poller_for_python",
1286
- description_event_engine_poller_for_python,
1287
- additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
1288
- true},
1289
1229
  {"fail_recv_metadata_on_deadline_exceeded",
1290
1230
  description_fail_recv_metadata_on_deadline_exceeded,
1291
1231
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -1298,8 +1238,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1298
1238
  description_h2_max_deallocating_streams_headroom,
1299
1239
  additional_constraints_h2_max_deallocating_streams_headroom, nullptr, 0,
1300
1240
  false, true},
1301
- {"header_data_frame", description_header_data_frame,
1302
- additional_constraints_header_data_frame, nullptr, 0, true, true},
1303
1241
  {"inproc_cancel_stream", description_inproc_cancel_stream,
1304
1242
  additional_constraints_inproc_cancel_stream, nullptr, 0, true, true},
1305
1243
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
@@ -1307,22 +1245,18 @@ const ExperimentMetadata g_experiment_metadata[] = {
1307
1245
  true},
1308
1246
  {"local_connector_secure", description_local_connector_secure,
1309
1247
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
1310
- {"max_inflight_pings_strict_limit",
1311
- description_max_inflight_pings_strict_limit,
1312
- additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
1313
- true},
1314
1248
  {"memory_optimization_01", description_memory_optimization_01,
1315
1249
  additional_constraints_memory_optimization_01, nullptr, 0, false, false},
1316
1250
  {"memory_optimization_02", description_memory_optimization_02,
1317
1251
  additional_constraints_memory_optimization_02, nullptr, 0, false, false},
1318
1252
  {"message_size_refactoring", description_message_size_refactoring,
1319
- additional_constraints_message_size_refactoring, nullptr, 0, true, true},
1253
+ additional_constraints_message_size_refactoring, nullptr, 0, false, true},
1320
1254
  {"metadata_outstanding_token_refactor",
1321
1255
  description_metadata_outstanding_token_refactor,
1322
1256
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
1323
1257
  false, true},
1324
1258
  {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
1325
- additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
1259
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, false,
1326
1260
  true},
1327
1261
  {"monitoring_experiment", description_monitoring_experiment,
1328
1262
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
@@ -1336,6 +1270,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
1336
1270
  additional_constraints_optimization_03, nullptr, 0, true, true},
1337
1271
  {"optimization_04", description_optimization_04,
1338
1272
  additional_constraints_optimization_04, nullptr, 0, true, true},
1273
+ {"optimization_05", description_optimization_05,
1274
+ additional_constraints_optimization_05, nullptr, 0, false, true},
1275
+ {"optimization_06", description_optimization_06,
1276
+ additional_constraints_optimization_06, nullptr, 0, false, true},
1339
1277
  {"otel_export_telemetry_domains", description_otel_export_telemetry_domains,
1340
1278
  additional_constraints_otel_export_telemetry_domains, nullptr, 0, false,
1341
1279
  true},
@@ -1344,7 +1282,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1344
1282
  {"ph2_client_server", description_ph2_client_server,
1345
1283
  additional_constraints_ph2_client_server, nullptr, 0, false, true},
1346
1284
  {"ph2_perf_01", description_ph2_perf_01, additional_constraints_ph2_perf_01,
1347
- nullptr, 0, true, true},
1285
+ nullptr, 0, false, true},
1348
1286
  {"ph2_server", description_ph2_server, additional_constraints_ph2_server,
1349
1287
  nullptr, 0, false, true},
1350
1288
  {"pick_first_ignore_empty_updates",
@@ -1376,7 +1314,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1376
1314
  {"retry_in_callv3", description_retry_in_callv3,
1377
1315
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
1378
1316
  {"return_preexisting_errors", description_return_preexisting_errors,
1379
- additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
1317
+ additional_constraints_return_preexisting_errors, nullptr, 0, true, true},
1380
1318
  {"schedule_cancellation_over_write",
1381
1319
  description_schedule_cancellation_over_write,
1382
1320
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -1398,12 +1336,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
1398
1336
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
1399
1337
  true},
1400
1338
  {"subchannel_connection_scaling", description_subchannel_connection_scaling,
1401
- additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
1339
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
1402
1340
  true},
1403
- {"subchannel_wrapper_cleanup_on_orphan",
1404
- description_subchannel_wrapper_cleanup_on_orphan,
1405
- additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
1406
- true, true},
1407
1341
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
1408
1342
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
1409
1343
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -1434,8 +1368,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
1434
1368
  false, true},
1435
1369
  {"xds_server_filter_chain_per_route",
1436
1370
  description_xds_server_filter_chain_per_route,
1437
- additional_constraints_xds_server_filter_chain_per_route, nullptr, 0,
1438
- false, true},
1371
+ additional_constraints_xds_server_filter_chain_per_route,
1372
+ required_experiments_xds_server_filter_chain_per_route, 1, false, true},
1439
1373
  };
1440
1374
 
1441
1375
  } // namespace grpc_core