grpc 1.82.0 → 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 (153) 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/rbac/rbac_service_config_parser.cc +2 -1
  31. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -13
  32. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +11 -9
  33. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
  34. data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -2
  35. data/src/core/ext/transport/chttp2/transport/frame.cc +58 -1
  36. data/src/core/ext/transport/chttp2/transport/frame.h +13 -1
  37. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -4
  38. data/src/core/ext/transport/chttp2/transport/frame_security.cc +10 -1
  39. data/src/core/ext/transport/chttp2/transport/frame_security.h +2 -1
  40. data/src/core/ext/transport/chttp2/transport/goaway.cc +11 -1
  41. data/src/core/ext/transport/chttp2/transport/goaway.h +17 -1
  42. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -0
  43. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +117 -276
  44. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +44 -17
  45. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +382 -496
  46. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +75 -77
  47. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  48. data/src/core/ext/transport/chttp2/transport/http2_settings.h +30 -11
  49. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +24 -9
  50. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +26 -0
  51. data/src/core/ext/transport/chttp2/transport/http2_transport.h +2 -0
  52. data/src/core/ext/transport/chttp2/transport/internal.h +4 -0
  53. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  54. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +1 -1
  55. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +4 -10
  56. data/src/core/ext/transport/chttp2/transport/read_context.h +62 -20
  57. data/src/core/ext/transport/chttp2/transport/security_frame.h +1 -0
  58. data/src/core/ext/transport/chttp2/transport/stream.h +271 -120
  59. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +77 -61
  60. data/src/core/handshaker/security/secure_endpoint.cc +0 -13
  61. data/src/core/lib/channel/promise_based_filter.cc +77 -3
  62. data/src/core/lib/channel/promise_based_filter.h +238 -184
  63. data/src/core/lib/event_engine/extensions/receive_coalescing_extension.h +0 -4
  64. data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
  65. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +2 -12
  66. data/src/core/lib/event_engine/shim.cc +2 -16
  67. data/src/core/lib/event_engine/shim.h +0 -4
  68. data/src/core/lib/experiments/experiments.cc +51 -102
  69. data/src/core/lib/experiments/experiments.h +37 -59
  70. data/src/core/lib/iomgr/error.cc +3 -73
  71. data/src/core/lib/iomgr/error.h +8 -6
  72. data/src/core/lib/iomgr/error_cfstream.cc +1 -2
  73. data/src/core/lib/iomgr/ev_epoll1_linux.cc +2 -6
  74. data/src/core/lib/iomgr/ev_poll_posix.cc +2 -6
  75. data/src/core/lib/iomgr/tcp_posix.cc +2 -6
  76. data/src/core/lib/security/authorization/audit_logging.cc +2 -2
  77. data/src/core/lib/security/authorization/audit_logging.h +3 -3
  78. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +11 -13
  79. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  80. data/src/core/lib/security/authorization/matchers.cc +20 -20
  81. data/src/core/lib/security/authorization/matchers.h +15 -16
  82. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  83. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  84. data/src/core/lib/security/authorization/stdout_logger.h +6 -5
  85. data/src/core/lib/surface/call.cc +0 -8
  86. data/src/core/lib/surface/call.h +2 -0
  87. data/src/core/lib/surface/channel.cc +21 -2
  88. data/src/core/lib/surface/channel.h +14 -6
  89. data/src/core/lib/surface/filter_stack_call.cc +10 -29
  90. data/src/core/lib/surface/legacy_channel.cc +7 -7
  91. data/src/core/lib/surface/legacy_channel.h +3 -1
  92. data/src/core/lib/surface/version.cc +2 -2
  93. data/src/core/lib/transport/bdp_estimator.cc +13 -13
  94. data/src/core/lib/transport/bdp_estimator.h +9 -5
  95. data/src/core/lib/transport/error_utils.cc +26 -138
  96. data/src/core/lib/transport/promise_endpoint.h +2 -4
  97. data/src/core/load_balancing/grpclb/grpclb.cc +2 -1
  98. data/src/core/load_balancing/pick_first/pick_first.cc +33 -2
  99. data/src/core/load_balancing/pick_first/pick_first.h +6 -0
  100. data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -10
  101. data/src/core/load_balancing/rls/rls.cc +2 -1
  102. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +2 -7
  103. data/src/core/load_balancing/xds/cds.cc +80 -56
  104. data/src/core/load_balancing/xds/cds.h +21 -0
  105. data/src/core/mitigation_engine/mitigation.h +53 -0
  106. data/src/core/mitigation_engine/mitigation_provider.h +62 -0
  107. data/src/core/resolver/dns/dns_resolver_plugin.cc +1 -6
  108. data/src/core/resolver/xds/xds_resolver.cc +14 -11
  109. data/src/core/server/server.h +1 -4
  110. data/src/core/server/server_config_selector.h +5 -4
  111. data/src/core/server/server_config_selector_filter.cc +67 -80
  112. data/src/core/server/xds_server_config_fetcher.cc +681 -692
  113. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -12
  114. data/src/core/telemetry/call_tracer.cc +49 -2
  115. data/src/core/telemetry/call_tracer.h +1 -0
  116. data/src/core/telemetry/tcp_tracer.h +38 -0
  117. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  118. data/src/core/tsi/ssl_telemetry_utils.cc +343 -0
  119. data/src/core/tsi/ssl_telemetry_utils.h +74 -0
  120. data/src/core/tsi/ssl_transport_security.cc +577 -301
  121. data/src/core/tsi/ssl_transport_security.h +22 -6
  122. data/src/core/tsi/ssl_transport_security_utils.cc +2 -0
  123. data/src/core/tsi/transport_security.h +7 -0
  124. data/src/core/util/http_client/httpcli.cc +1 -4
  125. data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
  126. data/src/core/util/status_helper.cc +71 -192
  127. data/src/core/util/status_helper.h +16 -21
  128. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +2 -11
  129. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -7
  130. data/src/core/xds/grpc/xds_cluster_parser.cc +5 -16
  131. data/src/core/xds/grpc/xds_common_types.cc +94 -38
  132. data/src/core/xds/grpc/xds_common_types.h +33 -18
  133. data/src/core/xds/grpc/xds_common_types_parser.cc +168 -100
  134. data/src/core/xds/grpc/xds_common_types_parser.h +18 -1
  135. data/src/core/xds/grpc/xds_endpoint_parser.cc +6 -17
  136. data/src/core/xds/grpc/xds_http_filter_registry.cc +2 -10
  137. data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -12
  138. data/src/core/xds/grpc/xds_metadata_parser.cc +0 -2
  139. data/src/core/xds/grpc/xds_route_config_parser.cc +7 -11
  140. data/src/core/xds/grpc/xds_routing.cc +113 -82
  141. data/src/core/xds/grpc/xds_routing.h +70 -20
  142. data/src/core/xds/grpc/xds_server_grpc.cc +22 -13
  143. data/src/core/xds/grpc/xds_server_grpc.h +16 -2
  144. data/src/core/xds/grpc/xds_server_grpc_interface.h +10 -0
  145. data/src/core/xds/grpc/xds_transport_grpc.cc +123 -18
  146. data/src/core/xds/grpc/xds_transport_grpc.h +28 -4
  147. data/src/core/xds/xds_client/lrs_client.cc +3 -7
  148. data/src/core/xds/xds_client/xds_bootstrap.cc +4 -16
  149. data/src/core/xds/xds_client/xds_client.cc +2 -15
  150. data/src/core/xds/xds_client/xds_transport.h +3 -0
  151. data/src/ruby/lib/grpc/version.rb +1 -1
  152. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
  153. metadata +9 -1
@@ -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
@@ -120,9 +114,6 @@ const char* const description_local_connector_secure =
120
114
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
121
115
  "connections.";
122
116
  const char* const additional_constraints_local_connector_secure = "{}";
123
- const char* const description_max_inflight_pings_strict_limit =
124
- "If set, the max inflight pings limit is strictly enforced.";
125
- const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
126
117
  const char* const description_memory_optimization_01 = "Memory Optimization";
127
118
  const char* const additional_constraints_memory_optimization_01 = "{}";
128
119
  const char* const description_memory_optimization_02 = "Memory Optimization 02";
@@ -151,6 +142,10 @@ const char* const description_optimization_03 = "Optimization";
151
142
  const char* const additional_constraints_optimization_03 = "{}";
152
143
  const char* const description_optimization_04 = "Optimization";
153
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 = "{}";
154
149
  const char* const description_otel_export_telemetry_domains =
155
150
  "Export telemetry domains in OpenTelemetry metrics.";
156
151
  const char* const additional_constraints_otel_export_telemetry_domains = "{}";
@@ -242,11 +237,6 @@ const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
242
237
  const char* const description_subchannel_connection_scaling =
243
238
  "Subchannel connection scaling support.";
244
239
  const char* const additional_constraints_subchannel_connection_scaling = "{}";
245
- const char* const description_subchannel_wrapper_cleanup_on_orphan =
246
- "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
247
- "gets orphaned.";
248
- const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
249
- "{}";
250
240
  const char* const description_tcp_frame_size_tuning =
251
241
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
252
242
  "would not indicate completion of a read operation until a specified "
@@ -284,6 +274,9 @@ const char* const description_xds_server_filter_chain_per_route =
284
274
  "xDS servers use a separate filter chain for each route.";
285
275
  const char* const additional_constraints_xds_server_filter_chain_per_route =
286
276
  "{}";
277
+ const uint8_t required_experiments_xds_server_filter_chain_per_route[] = {
278
+ static_cast<uint8_t>(
279
+ grpc_core::kExperimentIdV2NonOwningWakerImplementation)};
287
280
  } // namespace
288
281
 
289
282
  namespace grpc_core {
@@ -309,11 +302,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
309
302
  {"chaotic_good_send_supported_features",
310
303
  description_chaotic_good_send_supported_features,
311
304
  additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
312
- false, true},
305
+ true, true},
313
306
  {"custom_frame_check", description_custom_frame_check,
314
307
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
315
- {"error_flatten", description_error_flatten,
316
- additional_constraints_error_flatten, nullptr, 0, true, false},
317
308
  {"event_engine_client", description_event_engine_client,
318
309
  additional_constraints_event_engine_client, nullptr, 0, true, false},
319
310
  {"event_engine_dns", description_event_engine_dns,
@@ -333,10 +324,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
333
324
  description_event_engine_for_all_other_endpoints,
334
325
  additional_constraints_event_engine_for_all_other_endpoints,
335
326
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
336
- {"event_engine_poller_for_python",
337
- description_event_engine_poller_for_python,
338
- additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
339
- true},
340
327
  {"fail_recv_metadata_on_deadline_exceeded",
341
328
  description_fail_recv_metadata_on_deadline_exceeded,
342
329
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -356,10 +343,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
356
343
  true},
357
344
  {"local_connector_secure", description_local_connector_secure,
358
345
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
359
- {"max_inflight_pings_strict_limit",
360
- description_max_inflight_pings_strict_limit,
361
- additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
362
- true},
363
346
  {"memory_optimization_01", description_memory_optimization_01,
364
347
  additional_constraints_memory_optimization_01, nullptr, 0, false, false},
365
348
  {"memory_optimization_02", description_memory_optimization_02,
@@ -371,7 +354,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
371
354
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
372
355
  false, true},
373
356
  {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
374
- additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
357
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, false,
375
358
  true},
376
359
  {"monitoring_experiment", description_monitoring_experiment,
377
360
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
@@ -385,6 +368,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
385
368
  additional_constraints_optimization_03, nullptr, 0, true, true},
386
369
  {"optimization_04", description_optimization_04,
387
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},
388
375
  {"otel_export_telemetry_domains", description_otel_export_telemetry_domains,
389
376
  additional_constraints_otel_export_telemetry_domains, nullptr, 0, false,
390
377
  true},
@@ -425,7 +412,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
425
412
  {"retry_in_callv3", description_retry_in_callv3,
426
413
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
427
414
  {"return_preexisting_errors", description_return_preexisting_errors,
428
- additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
415
+ additional_constraints_return_preexisting_errors, nullptr, 0, true, true},
429
416
  {"schedule_cancellation_over_write",
430
417
  description_schedule_cancellation_over_write,
431
418
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -447,12 +434,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
447
434
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
448
435
  true},
449
436
  {"subchannel_connection_scaling", description_subchannel_connection_scaling,
450
- additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
437
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
451
438
  true},
452
- {"subchannel_wrapper_cleanup_on_orphan",
453
- description_subchannel_wrapper_cleanup_on_orphan,
454
- additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
455
- true, true},
456
439
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
457
440
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
458
441
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -483,8 +466,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
483
466
  false, true},
484
467
  {"xds_server_filter_chain_per_route",
485
468
  description_xds_server_filter_chain_per_route,
486
- additional_constraints_xds_server_filter_chain_per_route, nullptr, 0,
487
- false, true},
469
+ additional_constraints_xds_server_filter_chain_per_route,
470
+ required_experiments_xds_server_filter_chain_per_route, 1, false, true},
488
471
  };
489
472
 
490
473
  } // namespace grpc_core
@@ -522,9 +505,6 @@ const char* const additional_constraints_chaotic_good_send_supported_features =
522
505
  const char* const description_custom_frame_check =
523
506
  "Adding checks to custom HTTP2 frame.";
524
507
  const char* const additional_constraints_custom_frame_check = "{}";
525
- const char* const description_error_flatten =
526
- "Flatten errors to ordinary absl::Status form.";
527
- const char* const additional_constraints_error_flatten = "{}";
528
508
  const char* const description_event_engine_client =
529
509
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
530
510
  const char* const additional_constraints_event_engine_client = "{}";
@@ -560,9 +540,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
560
540
  static_cast<uint8_t>(
561
541
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
562
542
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
563
- const char* const description_event_engine_poller_for_python =
564
- "Enable event engine poller in gRPC Python";
565
- const char* const additional_constraints_event_engine_poller_for_python = "{}";
566
543
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
567
544
  "Fail recv initial metadata when the deadline is exceeded.";
568
545
  const char* const
@@ -588,9 +565,6 @@ const char* const description_local_connector_secure =
588
565
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
589
566
  "connections.";
590
567
  const char* const additional_constraints_local_connector_secure = "{}";
591
- const char* const description_max_inflight_pings_strict_limit =
592
- "If set, the max inflight pings limit is strictly enforced.";
593
- const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
594
568
  const char* const description_memory_optimization_01 = "Memory Optimization";
595
569
  const char* const additional_constraints_memory_optimization_01 = "{}";
596
570
  const char* const description_memory_optimization_02 = "Memory Optimization 02";
@@ -619,6 +593,10 @@ const char* const description_optimization_03 = "Optimization";
619
593
  const char* const additional_constraints_optimization_03 = "{}";
620
594
  const char* const description_optimization_04 = "Optimization";
621
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 = "{}";
622
600
  const char* const description_otel_export_telemetry_domains =
623
601
  "Export telemetry domains in OpenTelemetry metrics.";
624
602
  const char* const additional_constraints_otel_export_telemetry_domains = "{}";
@@ -710,11 +688,6 @@ const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
710
688
  const char* const description_subchannel_connection_scaling =
711
689
  "Subchannel connection scaling support.";
712
690
  const char* const additional_constraints_subchannel_connection_scaling = "{}";
713
- const char* const description_subchannel_wrapper_cleanup_on_orphan =
714
- "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
715
- "gets orphaned.";
716
- const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
717
- "{}";
718
691
  const char* const description_tcp_frame_size_tuning =
719
692
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
720
693
  "would not indicate completion of a read operation until a specified "
@@ -752,6 +725,9 @@ const char* const description_xds_server_filter_chain_per_route =
752
725
  "xDS servers use a separate filter chain for each route.";
753
726
  const char* const additional_constraints_xds_server_filter_chain_per_route =
754
727
  "{}";
728
+ const uint8_t required_experiments_xds_server_filter_chain_per_route[] = {
729
+ static_cast<uint8_t>(
730
+ grpc_core::kExperimentIdV2NonOwningWakerImplementation)};
755
731
  } // namespace
756
732
 
757
733
  namespace grpc_core {
@@ -777,11 +753,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
777
753
  {"chaotic_good_send_supported_features",
778
754
  description_chaotic_good_send_supported_features,
779
755
  additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
780
- false, true},
756
+ true, true},
781
757
  {"custom_frame_check", description_custom_frame_check,
782
758
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
783
- {"error_flatten", description_error_flatten,
784
- additional_constraints_error_flatten, nullptr, 0, true, false},
785
759
  {"event_engine_client", description_event_engine_client,
786
760
  additional_constraints_event_engine_client, nullptr, 0, true, false},
787
761
  {"event_engine_dns", description_event_engine_dns,
@@ -801,10 +775,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
801
775
  description_event_engine_for_all_other_endpoints,
802
776
  additional_constraints_event_engine_for_all_other_endpoints,
803
777
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
804
- {"event_engine_poller_for_python",
805
- description_event_engine_poller_for_python,
806
- additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
807
- true},
808
778
  {"fail_recv_metadata_on_deadline_exceeded",
809
779
  description_fail_recv_metadata_on_deadline_exceeded,
810
780
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -824,10 +794,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
824
794
  true},
825
795
  {"local_connector_secure", description_local_connector_secure,
826
796
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
827
- {"max_inflight_pings_strict_limit",
828
- description_max_inflight_pings_strict_limit,
829
- additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
830
- true},
831
797
  {"memory_optimization_01", description_memory_optimization_01,
832
798
  additional_constraints_memory_optimization_01, nullptr, 0, false, false},
833
799
  {"memory_optimization_02", description_memory_optimization_02,
@@ -839,7 +805,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
839
805
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
840
806
  false, true},
841
807
  {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
842
- additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
808
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, false,
843
809
  true},
844
810
  {"monitoring_experiment", description_monitoring_experiment,
845
811
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
@@ -853,6 +819,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
853
819
  additional_constraints_optimization_03, nullptr, 0, true, true},
854
820
  {"optimization_04", description_optimization_04,
855
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},
856
826
  {"otel_export_telemetry_domains", description_otel_export_telemetry_domains,
857
827
  additional_constraints_otel_export_telemetry_domains, nullptr, 0, false,
858
828
  true},
@@ -893,7 +863,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
893
863
  {"retry_in_callv3", description_retry_in_callv3,
894
864
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
895
865
  {"return_preexisting_errors", description_return_preexisting_errors,
896
- additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
866
+ additional_constraints_return_preexisting_errors, nullptr, 0, true, true},
897
867
  {"schedule_cancellation_over_write",
898
868
  description_schedule_cancellation_over_write,
899
869
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -915,12 +885,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
915
885
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
916
886
  true},
917
887
  {"subchannel_connection_scaling", description_subchannel_connection_scaling,
918
- additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
888
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
919
889
  true},
920
- {"subchannel_wrapper_cleanup_on_orphan",
921
- description_subchannel_wrapper_cleanup_on_orphan,
922
- additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
923
- true, true},
924
890
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
925
891
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
926
892
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -951,8 +917,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
951
917
  false, true},
952
918
  {"xds_server_filter_chain_per_route",
953
919
  description_xds_server_filter_chain_per_route,
954
- additional_constraints_xds_server_filter_chain_per_route, nullptr, 0,
955
- false, true},
920
+ additional_constraints_xds_server_filter_chain_per_route,
921
+ required_experiments_xds_server_filter_chain_per_route, 1, false, true},
956
922
  };
957
923
 
958
924
  } // namespace grpc_core
@@ -990,9 +956,6 @@ const char* const additional_constraints_chaotic_good_send_supported_features =
990
956
  const char* const description_custom_frame_check =
991
957
  "Adding checks to custom HTTP2 frame.";
992
958
  const char* const additional_constraints_custom_frame_check = "{}";
993
- const char* const description_error_flatten =
994
- "Flatten errors to ordinary absl::Status form.";
995
- const char* const additional_constraints_error_flatten = "{}";
996
959
  const char* const description_event_engine_client =
997
960
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
998
961
  const char* const additional_constraints_event_engine_client = "{}";
@@ -1028,9 +991,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
1028
991
  static_cast<uint8_t>(
1029
992
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
1030
993
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
1031
- const char* const description_event_engine_poller_for_python =
1032
- "Enable event engine poller in gRPC Python";
1033
- const char* const additional_constraints_event_engine_poller_for_python = "{}";
1034
994
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
1035
995
  "Fail recv initial metadata when the deadline is exceeded.";
1036
996
  const char* const
@@ -1056,9 +1016,6 @@ const char* const description_local_connector_secure =
1056
1016
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
1057
1017
  "connections.";
1058
1018
  const char* const additional_constraints_local_connector_secure = "{}";
1059
- const char* const description_max_inflight_pings_strict_limit =
1060
- "If set, the max inflight pings limit is strictly enforced.";
1061
- const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
1062
1019
  const char* const description_memory_optimization_01 = "Memory Optimization";
1063
1020
  const char* const additional_constraints_memory_optimization_01 = "{}";
1064
1021
  const char* const description_memory_optimization_02 = "Memory Optimization 02";
@@ -1087,6 +1044,10 @@ const char* const description_optimization_03 = "Optimization";
1087
1044
  const char* const additional_constraints_optimization_03 = "{}";
1088
1045
  const char* const description_optimization_04 = "Optimization";
1089
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 = "{}";
1090
1051
  const char* const description_otel_export_telemetry_domains =
1091
1052
  "Export telemetry domains in OpenTelemetry metrics.";
1092
1053
  const char* const additional_constraints_otel_export_telemetry_domains = "{}";
@@ -1178,11 +1139,6 @@ const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
1178
1139
  const char* const description_subchannel_connection_scaling =
1179
1140
  "Subchannel connection scaling support.";
1180
1141
  const char* const additional_constraints_subchannel_connection_scaling = "{}";
1181
- const char* const description_subchannel_wrapper_cleanup_on_orphan =
1182
- "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
1183
- "gets orphaned.";
1184
- const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
1185
- "{}";
1186
1142
  const char* const description_tcp_frame_size_tuning =
1187
1143
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
1188
1144
  "would not indicate completion of a read operation until a specified "
@@ -1220,6 +1176,9 @@ const char* const description_xds_server_filter_chain_per_route =
1220
1176
  "xDS servers use a separate filter chain for each route.";
1221
1177
  const char* const additional_constraints_xds_server_filter_chain_per_route =
1222
1178
  "{}";
1179
+ const uint8_t required_experiments_xds_server_filter_chain_per_route[] = {
1180
+ static_cast<uint8_t>(
1181
+ grpc_core::kExperimentIdV2NonOwningWakerImplementation)};
1223
1182
  } // namespace
1224
1183
 
1225
1184
  namespace grpc_core {
@@ -1245,11 +1204,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
1245
1204
  {"chaotic_good_send_supported_features",
1246
1205
  description_chaotic_good_send_supported_features,
1247
1206
  additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
1248
- false, true},
1207
+ true, true},
1249
1208
  {"custom_frame_check", description_custom_frame_check,
1250
1209
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
1251
- {"error_flatten", description_error_flatten,
1252
- additional_constraints_error_flatten, nullptr, 0, true, false},
1253
1210
  {"event_engine_client", description_event_engine_client,
1254
1211
  additional_constraints_event_engine_client, nullptr, 0, true, false},
1255
1212
  {"event_engine_dns", description_event_engine_dns,
@@ -1269,10 +1226,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1269
1226
  description_event_engine_for_all_other_endpoints,
1270
1227
  additional_constraints_event_engine_for_all_other_endpoints,
1271
1228
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
1272
- {"event_engine_poller_for_python",
1273
- description_event_engine_poller_for_python,
1274
- additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
1275
- true},
1276
1229
  {"fail_recv_metadata_on_deadline_exceeded",
1277
1230
  description_fail_recv_metadata_on_deadline_exceeded,
1278
1231
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -1292,10 +1245,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1292
1245
  true},
1293
1246
  {"local_connector_secure", description_local_connector_secure,
1294
1247
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
1295
- {"max_inflight_pings_strict_limit",
1296
- description_max_inflight_pings_strict_limit,
1297
- additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
1298
- true},
1299
1248
  {"memory_optimization_01", description_memory_optimization_01,
1300
1249
  additional_constraints_memory_optimization_01, nullptr, 0, false, false},
1301
1250
  {"memory_optimization_02", description_memory_optimization_02,
@@ -1307,7 +1256,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1307
1256
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
1308
1257
  false, true},
1309
1258
  {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
1310
- additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
1259
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, false,
1311
1260
  true},
1312
1261
  {"monitoring_experiment", description_monitoring_experiment,
1313
1262
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
@@ -1321,6 +1270,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
1321
1270
  additional_constraints_optimization_03, nullptr, 0, true, true},
1322
1271
  {"optimization_04", description_optimization_04,
1323
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},
1324
1277
  {"otel_export_telemetry_domains", description_otel_export_telemetry_domains,
1325
1278
  additional_constraints_otel_export_telemetry_domains, nullptr, 0, false,
1326
1279
  true},
@@ -1361,7 +1314,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1361
1314
  {"retry_in_callv3", description_retry_in_callv3,
1362
1315
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
1363
1316
  {"return_preexisting_errors", description_return_preexisting_errors,
1364
- additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
1317
+ additional_constraints_return_preexisting_errors, nullptr, 0, true, true},
1365
1318
  {"schedule_cancellation_over_write",
1366
1319
  description_schedule_cancellation_over_write,
1367
1320
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -1383,12 +1336,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
1383
1336
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
1384
1337
  true},
1385
1338
  {"subchannel_connection_scaling", description_subchannel_connection_scaling,
1386
- additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
1339
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
1387
1340
  true},
1388
- {"subchannel_wrapper_cleanup_on_orphan",
1389
- description_subchannel_wrapper_cleanup_on_orphan,
1390
- additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
1391
- true, true},
1392
1341
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
1393
1342
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
1394
1343
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -1419,8 +1368,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
1419
1368
  false, true},
1420
1369
  {"xds_server_filter_chain_per_route",
1421
1370
  description_xds_server_filter_chain_per_route,
1422
- additional_constraints_xds_server_filter_chain_per_route, nullptr, 0,
1423
- false, true},
1371
+ additional_constraints_xds_server_filter_chain_per_route,
1372
+ required_experiments_xds_server_filter_chain_per_route, 1, false, true},
1424
1373
  };
1425
1374
 
1426
1375
  } // namespace grpc_core