grpc 1.45.0 → 1.46.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +36 -29
  3. data/include/grpc/impl/codegen/grpc_types.h +7 -13
  4. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  5. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  6. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  7. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
  8. data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
  9. data/src/core/ext/filters/client_channel/client_channel.h +2 -0
  10. data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
  11. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
  12. data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
  13. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  14. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
  15. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
  16. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
  17. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
  18. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
  19. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
  20. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
  21. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
  22. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
  23. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  24. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  25. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
  26. data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
  27. data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
  28. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  29. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  30. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
  31. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
  32. data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
  33. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  34. data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
  35. data/src/core/ext/filters/http/client_authority_filter.h +6 -5
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
  37. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
  38. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
  39. data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
  40. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
  41. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
  42. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
  43. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
  44. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  45. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
  46. data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
  47. data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
  48. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
  49. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
  50. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
  51. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
  52. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
  53. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
  54. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
  55. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
  56. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
  57. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
  58. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
  59. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
  60. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
  61. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
  62. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
  63. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
  64. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
  65. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
  66. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
  67. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
  68. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
  69. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
  70. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
  71. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
  72. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
  73. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
  74. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
  75. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
  76. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
  77. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
  81. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
  82. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
  83. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
  85. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
  86. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
  87. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
  119. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
  120. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
  121. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
  122. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
  123. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
  124. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
  125. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
  126. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
  127. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
  128. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
  129. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
  130. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
  131. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
  132. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
  133. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
  134. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
  135. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
  136. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
  137. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
  138. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
  139. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
  140. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
  141. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
  142. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
  143. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
  144. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
  145. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
  146. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
  147. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
  148. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
  149. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
  150. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
  151. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
  152. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
  153. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
  154. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
  155. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
  156. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
  157. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
  158. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
  159. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
  160. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
  161. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
  162. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
  163. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
  164. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
  165. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
  166. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
  167. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
  169. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
  170. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
  171. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
  172. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
  173. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
  174. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
  175. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
  176. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
  177. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
  178. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
  179. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
  180. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
  181. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
  182. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
  183. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
  184. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
  185. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
  186. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
  187. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
  188. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
  189. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  190. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
  191. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
  192. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
  193. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
  194. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
  195. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
  196. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
  197. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
  198. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
  199. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
  200. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
  201. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
  202. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
  203. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
  204. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
  205. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
  206. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
  207. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
  208. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
  209. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
  210. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
  211. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
  212. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
  213. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
  214. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
  215. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
  216. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
  217. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
  218. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
  219. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
  220. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
  221. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
  222. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
  223. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
  224. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
  225. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
  226. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
  227. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
  228. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
  229. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
  230. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
  231. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
  232. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
  233. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
  234. data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
  235. data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
  236. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
  237. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
  238. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
  239. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
  240. data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
  241. data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
  242. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
  243. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
  244. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
  245. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
  246. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
  247. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
  248. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
  249. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
  250. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  251. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
  252. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
  253. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
  254. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
  255. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
  256. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
  257. data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
  258. data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
  259. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
  260. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
  261. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
  262. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
  263. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
  264. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
  265. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
  266. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
  267. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
  268. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
  269. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
  270. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
  271. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
  272. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
  273. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  274. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  275. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
  276. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
  277. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
  278. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
  279. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
  280. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
  281. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
  282. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
  283. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
  284. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
  285. data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
  286. data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
  287. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
  288. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
  289. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
  290. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
  291. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
  292. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
  293. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
  294. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
  295. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
  296. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
  297. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
  298. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
  299. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
  300. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
  301. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
  302. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
  303. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
  304. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
  305. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
  306. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
  307. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
  308. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
  309. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
  310. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
  311. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
  312. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
  313. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
  314. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
  315. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
  316. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
  317. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
  318. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
  319. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
  320. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
  321. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
  322. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
  323. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
  324. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
  325. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
  326. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
  327. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
  328. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
  329. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
  330. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
  331. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
  332. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
  333. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
  334. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
  335. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
  336. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
  337. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  338. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  339. data/src/core/ext/xds/certificate_provider_store.cc +8 -0
  340. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  341. data/src/core/ext/xds/xds_api.cc +20 -0
  342. data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
  343. data/src/core/ext/xds/xds_certificate_provider.h +8 -0
  344. data/src/core/ext/xds/xds_client.cc +83 -93
  345. data/src/core/ext/xds/xds_client.h +11 -4
  346. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  347. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  348. data/src/core/ext/xds/xds_common_types.cc +9 -9
  349. data/src/core/ext/xds/xds_common_types.h +3 -3
  350. data/src/core/ext/xds/xds_endpoint.cc +12 -5
  351. data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
  352. data/src/core/ext/xds/xds_listener.cc +1 -1
  353. data/src/core/ext/xds/xds_route_config.cc +162 -25
  354. data/src/core/ext/xds/xds_route_config.h +13 -10
  355. data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
  356. data/src/core/lib/avl/avl.h +68 -5
  357. data/src/core/lib/channel/call_tracer.h +4 -1
  358. data/src/core/lib/channel/channel_args.cc +138 -59
  359. data/src/core/lib/channel/channel_args.h +210 -9
  360. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
  361. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  362. data/src/core/lib/channel/channel_stack.h +2 -5
  363. data/src/core/lib/channel/channel_stack_builder.cc +0 -65
  364. data/src/core/lib/channel/channel_stack_builder.h +27 -6
  365. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  366. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  367. data/src/core/lib/channel/connected_channel.h +1 -0
  368. data/src/core/lib/channel/promise_based_filter.cc +495 -162
  369. data/src/core/lib/channel/promise_based_filter.h +55 -41
  370. data/src/core/lib/compression/compression_internal.cc +1 -7
  371. data/src/core/lib/debug/stats_data.cc +2 -6
  372. data/src/core/lib/debug/stats_data.h +18 -21
  373. data/src/core/lib/gpr/tls.h +1 -0
  374. data/src/core/lib/gprpp/bitset.h +12 -0
  375. data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
  376. data/src/core/lib/gprpp/match.h +73 -0
  377. data/src/core/lib/gprpp/overload.h +59 -0
  378. data/src/core/lib/gprpp/ref_counted.h +2 -0
  379. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  380. data/src/core/lib/gprpp/status_helper.cc +18 -2
  381. data/src/core/lib/gprpp/time.cc +12 -0
  382. data/src/core/lib/gprpp/time.h +1 -1
  383. data/src/core/lib/http/format_request.cc +1 -2
  384. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  385. data/src/core/lib/http/parser.cc +80 -9
  386. data/src/core/lib/http/parser.h +14 -1
  387. data/src/core/lib/iomgr/ev_posix.cc +6 -7
  388. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  389. data/src/core/lib/iomgr/port.h +0 -2
  390. data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
  391. data/src/core/lib/iomgr/tcp_posix.cc +93 -35
  392. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
  393. data/src/core/lib/json/json_util.h +3 -3
  394. data/src/core/lib/promise/call_push_pull.h +144 -0
  395. data/src/core/lib/promise/detail/status.h +2 -1
  396. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  397. data/src/core/lib/promise/latch.h +104 -0
  398. data/src/core/lib/resource_quota/api.cc +5 -30
  399. data/src/core/lib/resource_quota/api.h +1 -1
  400. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  401. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  402. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
  403. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
  404. data/src/core/lib/security/context/security_context.h +8 -1
  405. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  406. data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
  407. data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
  408. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  409. data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
  410. data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
  411. data/src/core/lib/security/credentials/credentials.h +16 -33
  412. data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
  413. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
  414. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
  415. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  416. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
  417. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
  418. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
  419. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  420. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
  421. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
  422. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  423. data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
  424. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
  425. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
  426. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
  427. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
  428. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
  429. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
  430. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
  431. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
  432. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
  433. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
  434. data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
  435. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
  436. data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
  437. data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
  438. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  439. data/src/core/lib/security/security_connector/security_connector.h +9 -0
  440. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
  441. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
  442. data/src/core/lib/security/transport/auth_filters.h +7 -7
  443. data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
  444. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  445. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  446. data/src/core/lib/security/transport/security_handshaker.cc +6 -4
  447. data/src/core/lib/surface/call.cc +1023 -903
  448. data/src/core/lib/surface/call.h +0 -14
  449. data/src/core/lib/surface/channel.cc +4 -3
  450. data/src/core/lib/surface/channel_init.cc +2 -3
  451. data/src/core/lib/surface/channel_init.h +2 -6
  452. data/src/core/lib/surface/init.cc +1 -1
  453. data/src/core/lib/surface/server.cc +3 -14
  454. data/src/core/lib/surface/server.h +1 -2
  455. data/src/core/lib/surface/version.cc +2 -2
  456. data/src/core/lib/transport/byte_stream.cc +2 -0
  457. data/src/core/lib/transport/metadata_batch.h +12 -8
  458. data/src/core/lib/transport/transport.h +20 -5
  459. data/src/core/lib/transport/transport_impl.h +4 -3
  460. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
  461. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
  462. data/src/core/tsi/ssl_transport_security.cc +75 -38
  463. data/src/core/tsi/ssl_transport_security.h +8 -2
  464. data/src/core/tsi/transport_security_interface.h +2 -0
  465. data/src/ruby/ext/grpc/extconf.rb +1 -1
  466. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  467. data/src/ruby/lib/grpc/grpc.rb +1 -1
  468. data/src/ruby/lib/grpc/version.rb +1 -1
  469. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  470. data/src/ruby/pb/test/client.rb +769 -0
  471. data/src/ruby/pb/test/server.rb +252 -0
  472. data/src/ruby/pb/test/xds_client.rb +415 -0
  473. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  474. data/third_party/upb/upb/decode.c +32 -16
  475. data/third_party/upb/upb/def.c +118 -55
  476. data/third_party/upb/upb/def.h +12 -3
  477. data/third_party/upb/upb/encode.c +14 -8
  478. data/third_party/upb/upb/json_encode.c +776 -0
  479. data/third_party/upb/upb/json_encode.h +62 -0
  480. data/third_party/upb/upb/msg.c +5 -7
  481. data/third_party/upb/upb/msg.h +1 -2
  482. data/third_party/upb/upb/msg_internal.h +49 -36
  483. data/third_party/upb/upb/port_def.inc +8 -0
  484. data/third_party/upb/upb/port_undef.inc +1 -0
  485. data/third_party/upb/upb/table.c +10 -6
  486. data/third_party/upb/upb/table_internal.h +2 -0
  487. data/third_party/upb/upb/upb.h +41 -11
  488. data/third_party/zlib/crc32.c +966 -292
  489. data/third_party/zlib/crc32.h +9441 -436
  490. data/third_party/zlib/deflate.c +78 -30
  491. data/third_party/zlib/deflate.h +12 -15
  492. data/third_party/zlib/gzguts.h +3 -2
  493. data/third_party/zlib/gzlib.c +5 -3
  494. data/third_party/zlib/gzread.c +5 -7
  495. data/third_party/zlib/gzwrite.c +25 -13
  496. data/third_party/zlib/infback.c +2 -1
  497. data/third_party/zlib/inffast.c +14 -14
  498. data/third_party/zlib/inflate.c +39 -8
  499. data/third_party/zlib/inflate.h +3 -2
  500. data/third_party/zlib/inftrees.c +3 -3
  501. data/third_party/zlib/trees.c +27 -48
  502. data/third_party/zlib/zlib.h +123 -100
  503. data/third_party/zlib/zutil.c +2 -2
  504. data/third_party/zlib/zutil.h +12 -9
  505. metadata +66 -45
  506. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
  507. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
  508. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  509. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
  510. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  511. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  512. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  513. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -106,7 +106,6 @@ class PriorityLb : public LoadBalancingPolicy {
106
106
  void ResetBackoffLocked();
107
107
  void DeactivateLocked();
108
108
  void MaybeReactivateLocked();
109
- void MaybeCancelFailoverTimerLocked();
110
109
 
111
110
  void Orphan() override;
112
111
 
@@ -122,9 +121,7 @@ class PriorityLb : public LoadBalancingPolicy {
122
121
  return connectivity_status_;
123
122
  }
124
123
 
125
- bool failover_timer_callback_pending() const {
126
- return failover_timer_callback_pending_;
127
- }
124
+ bool FailoverTimerPending() const { return failover_timer_ != nullptr; }
128
125
 
129
126
  private:
130
127
  // A simple wrapper for ref-counting a picker from the child policy.
@@ -170,6 +167,38 @@ class PriorityLb : public LoadBalancingPolicy {
170
167
  RefCountedPtr<ChildPriority> priority_;
171
168
  };
172
169
 
170
+ class DeactivationTimer : public InternallyRefCounted<DeactivationTimer> {
171
+ public:
172
+ explicit DeactivationTimer(RefCountedPtr<ChildPriority> child_priority);
173
+
174
+ void Orphan() override;
175
+
176
+ private:
177
+ static void OnTimer(void* arg, grpc_error_handle error);
178
+ void OnTimerLocked(grpc_error_handle);
179
+
180
+ RefCountedPtr<ChildPriority> child_priority_;
181
+ grpc_timer timer_;
182
+ grpc_closure on_timer_;
183
+ bool timer_pending_ = true;
184
+ };
185
+
186
+ class FailoverTimer : public InternallyRefCounted<FailoverTimer> {
187
+ public:
188
+ explicit FailoverTimer(RefCountedPtr<ChildPriority> child_priority);
189
+
190
+ void Orphan() override;
191
+
192
+ private:
193
+ static void OnTimer(void* arg, grpc_error_handle error);
194
+ void OnTimerLocked(grpc_error_handle);
195
+
196
+ RefCountedPtr<ChildPriority> child_priority_;
197
+ grpc_timer timer_;
198
+ grpc_closure on_timer_;
199
+ bool timer_pending_ = true;
200
+ };
201
+
173
202
  // Methods for dealing with the child policy.
174
203
  OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
175
204
  const grpc_channel_args* args);
@@ -178,13 +207,6 @@ class PriorityLb : public LoadBalancingPolicy {
178
207
  grpc_connectivity_state state, const absl::Status& status,
179
208
  std::unique_ptr<SubchannelPicker> picker);
180
209
 
181
- void StartFailoverTimerLocked();
182
-
183
- static void OnFailoverTimer(void* arg, grpc_error_handle error);
184
- void OnFailoverTimerLocked(grpc_error_handle error);
185
- static void OnDeactivationTimer(void* arg, grpc_error_handle error);
186
- void OnDeactivationTimerLocked(grpc_error_handle error);
187
-
188
210
  RefCountedPtr<PriorityLb> priority_policy_;
189
211
  const std::string name_;
190
212
  bool ignore_reresolution_requests_ = false;
@@ -195,15 +217,8 @@ class PriorityLb : public LoadBalancingPolicy {
195
217
  absl::Status connectivity_status_;
196
218
  RefCountedPtr<RefCountedPicker> picker_wrapper_;
197
219
 
198
- // States for delayed removal.
199
- grpc_timer deactivation_timer_;
200
- grpc_closure on_deactivation_timer_;
201
- bool deactivation_timer_callback_pending_ = false;
202
-
203
- // States of failover.
204
- grpc_timer failover_timer_;
205
- grpc_closure on_failover_timer_;
206
- bool failover_timer_callback_pending_ = false;
220
+ OrphanablePtr<DeactivationTimer> deactivation_timer_;
221
+ OrphanablePtr<FailoverTimer> failover_timer_;
207
222
  };
208
223
 
209
224
  ~PriorityLb() override;
@@ -229,6 +244,8 @@ class PriorityLb : public LoadBalancingPolicy {
229
244
  // Internal state.
230
245
  bool shutting_down_ = false;
231
246
 
247
+ bool update_in_progress_ = false;
248
+
232
249
  std::map<std::string, OrphanablePtr<ChildPriority>> children_;
233
250
  // The priority that is being used.
234
251
  uint32_t current_priority_ = UINT32_MAX;
@@ -308,6 +325,7 @@ void PriorityLb::UpdateLocked(UpdateArgs args) {
308
325
  // Update addresses.
309
326
  addresses_ = MakeHierarchicalAddressMap(args.addresses);
310
327
  // Check all existing children against the new config.
328
+ update_in_progress_ = true;
311
329
  for (const auto& p : children_) {
312
330
  const std::string& child_name = p.first;
313
331
  auto& child = p.second;
@@ -321,6 +339,7 @@ void PriorityLb::UpdateLocked(UpdateArgs args) {
321
339
  config_it->second.ignore_reresolution_requests);
322
340
  }
323
341
  }
342
+ update_in_progress_ = false;
324
343
  // Try to get connected.
325
344
  TryNextPriorityLocked(/*report_connecting=*/children_.empty());
326
345
  }
@@ -336,6 +355,12 @@ uint32_t PriorityLb::GetChildPriorityLocked(
336
355
 
337
356
  void PriorityLb::HandleChildConnectivityStateChangeLocked(
338
357
  ChildPriority* child) {
358
+ // If we're in the process of propagating an update from our parent to
359
+ // our children, ignore any updates that come from the children. We
360
+ // will instead choose a new priority once the update has been seen by
361
+ // all children. This ensures that we don't incorrectly do the wrong
362
+ // thing while state is inconsistent.
363
+ if (update_in_progress_) return;
339
364
  // Special case for the child that was the current child before the
340
365
  // most recent update.
341
366
  if (child == current_child_from_before_update_) {
@@ -451,7 +476,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) {
451
476
  }
452
477
  // Child is not READY or IDLE.
453
478
  // If its failover timer is still pending, give it time to fire.
454
- if (child->failover_timer_callback_pending()) {
479
+ if (child->FailoverTimerPending()) {
455
480
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
456
481
  gpr_log(GPR_INFO,
457
482
  "[priority_lb %p] priority %u, child %s: child still "
@@ -501,6 +526,132 @@ void PriorityLb::SelectPriorityLocked(uint32_t priority) {
501
526
  child->GetPicker());
502
527
  }
503
528
 
529
+ //
530
+ // PriorityLb::ChildPriority::DeactivationTimer
531
+ //
532
+
533
+ PriorityLb::ChildPriority::DeactivationTimer::DeactivationTimer(
534
+ RefCountedPtr<PriorityLb::ChildPriority> child_priority)
535
+ : child_priority_(std::move(child_priority)) {
536
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
537
+ gpr_log(GPR_INFO,
538
+ "[priority_lb %p] child %s (%p): deactivating -- will remove in "
539
+ "%" PRId64 "ms",
540
+ child_priority_->priority_policy_.get(),
541
+ child_priority_->name_.c_str(), child_priority_.get(),
542
+ kChildRetentionInterval.millis());
543
+ }
544
+ GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr);
545
+ Ref(DEBUG_LOCATION, "Timer").release();
546
+ grpc_timer_init(&timer_, ExecCtx::Get()->Now() + kChildRetentionInterval,
547
+ &on_timer_);
548
+ }
549
+
550
+ void PriorityLb::ChildPriority::DeactivationTimer::Orphan() {
551
+ if (timer_pending_) {
552
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
553
+ gpr_log(GPR_INFO, "[priority_lb %p] child %s (%p): reactivating",
554
+ child_priority_->priority_policy_.get(),
555
+ child_priority_->name_.c_str(), child_priority_.get());
556
+ }
557
+ timer_pending_ = false;
558
+ grpc_timer_cancel(&timer_);
559
+ }
560
+ Unref();
561
+ }
562
+
563
+ void PriorityLb::ChildPriority::DeactivationTimer::OnTimer(
564
+ void* arg, grpc_error_handle error) {
565
+ auto* self = static_cast<DeactivationTimer*>(arg);
566
+ (void)GRPC_ERROR_REF(error); // ref owned by lambda
567
+ self->child_priority_->priority_policy_->work_serializer()->Run(
568
+ [self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
569
+ }
570
+
571
+ void PriorityLb::ChildPriority::DeactivationTimer::OnTimerLocked(
572
+ grpc_error_handle error) {
573
+ if (error == GRPC_ERROR_NONE && timer_pending_) {
574
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
575
+ gpr_log(GPR_INFO,
576
+ "[priority_lb %p] child %s (%p): deactivation timer fired, "
577
+ "deleting child",
578
+ child_priority_->priority_policy_.get(),
579
+ child_priority_->name_.c_str(), child_priority_.get());
580
+ }
581
+ timer_pending_ = false;
582
+ child_priority_->priority_policy_->DeleteChild(child_priority_.get());
583
+ }
584
+ Unref(DEBUG_LOCATION, "Timer");
585
+ GRPC_ERROR_UNREF(error);
586
+ }
587
+
588
+ //
589
+ // PriorityLb::ChildPriority::FailoverTimer
590
+ //
591
+
592
+ PriorityLb::ChildPriority::FailoverTimer::FailoverTimer(
593
+ RefCountedPtr<PriorityLb::ChildPriority> child_priority)
594
+ : child_priority_(std::move(child_priority)) {
595
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
596
+ gpr_log(
597
+ GPR_INFO,
598
+ "[priority_lb %p] child %s (%p): starting failover timer for %" PRId64
599
+ "ms",
600
+ child_priority_->priority_policy_.get(), child_priority_->name_.c_str(),
601
+ child_priority_.get(),
602
+ child_priority_->priority_policy_->child_failover_timeout_.millis());
603
+ }
604
+ GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr);
605
+ Ref(DEBUG_LOCATION, "Timer").release();
606
+ grpc_timer_init(
607
+ &timer_,
608
+ ExecCtx::Get()->Now() +
609
+ child_priority_->priority_policy_->child_failover_timeout_,
610
+ &on_timer_);
611
+ }
612
+
613
+ void PriorityLb::ChildPriority::FailoverTimer::Orphan() {
614
+ if (timer_pending_) {
615
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
616
+ gpr_log(GPR_INFO,
617
+ "[priority_lb %p] child %s (%p): cancelling failover timer",
618
+ child_priority_->priority_policy_.get(),
619
+ child_priority_->name_.c_str(), child_priority_.get());
620
+ }
621
+ timer_pending_ = false;
622
+ grpc_timer_cancel(&timer_);
623
+ }
624
+ Unref();
625
+ }
626
+
627
+ void PriorityLb::ChildPriority::FailoverTimer::OnTimer(
628
+ void* arg, grpc_error_handle error) {
629
+ auto* self = static_cast<FailoverTimer*>(arg);
630
+ (void)GRPC_ERROR_REF(error); // ref owned by lambda
631
+ self->child_priority_->priority_policy_->work_serializer()->Run(
632
+ [self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
633
+ }
634
+
635
+ void PriorityLb::ChildPriority::FailoverTimer::OnTimerLocked(
636
+ grpc_error_handle error) {
637
+ if (error == GRPC_ERROR_NONE && timer_pending_) {
638
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
639
+ gpr_log(GPR_INFO,
640
+ "[priority_lb %p] child %s (%p): failover timer fired, "
641
+ "reporting TRANSIENT_FAILURE",
642
+ child_priority_->priority_policy_.get(),
643
+ child_priority_->name_.c_str(), child_priority_.get());
644
+ }
645
+ timer_pending_ = false;
646
+ child_priority_->OnConnectivityStateUpdateLocked(
647
+ GRPC_CHANNEL_TRANSIENT_FAILURE,
648
+ absl::Status(absl::StatusCode::kUnavailable, "failover timer fired"),
649
+ nullptr);
650
+ }
651
+ Unref(DEBUG_LOCATION, "Timer");
652
+ GRPC_ERROR_UNREF(error);
653
+ }
654
+
504
655
  //
505
656
  // PriorityLb::ChildPriority
506
657
  //
@@ -512,12 +663,8 @@ PriorityLb::ChildPriority::ChildPriority(
512
663
  gpr_log(GPR_INFO, "[priority_lb %p] creating child %s (%p)",
513
664
  priority_policy_.get(), name_.c_str(), this);
514
665
  }
515
- GRPC_CLOSURE_INIT(&on_failover_timer_, OnFailoverTimer, this,
516
- grpc_schedule_on_exec_ctx);
517
- GRPC_CLOSURE_INIT(&on_deactivation_timer_, OnDeactivationTimer, this,
518
- grpc_schedule_on_exec_ctx);
519
666
  // Start the failover timer.
520
- StartFailoverTimerLocked();
667
+ failover_timer_ = MakeOrphanable<FailoverTimer>(Ref());
521
668
  }
522
669
 
523
670
  void PriorityLb::ChildPriority::Orphan() {
@@ -525,10 +672,8 @@ void PriorityLb::ChildPriority::Orphan() {
525
672
  gpr_log(GPR_INFO, "[priority_lb %p] child %s (%p): orphaned",
526
673
  priority_policy_.get(), name_.c_str(), this);
527
674
  }
528
- MaybeCancelFailoverTimerLocked();
529
- if (deactivation_timer_callback_pending_) {
530
- grpc_timer_cancel(&deactivation_timer_);
531
- }
675
+ failover_timer_.reset();
676
+ deactivation_timer_.reset();
532
677
  // Remove the child policy's interested_parties pollset_set from the
533
678
  // xDS policy.
534
679
  grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
@@ -537,9 +682,6 @@ void PriorityLb::ChildPriority::Orphan() {
537
682
  // Drop our ref to the child's picker, in case it's holding a ref to
538
683
  // the child.
539
684
  picker_wrapper_.reset();
540
- if (deactivation_timer_callback_pending_) {
541
- grpc_timer_cancel(&deactivation_timer_);
542
- }
543
685
  Unref(DEBUG_LOCATION, "ChildPriority+Orphan");
544
686
  }
545
687
 
@@ -600,9 +742,8 @@ PriorityLb::ChildPriority::CreateChildPolicyLocked(
600
742
  }
601
743
 
602
744
  void PriorityLb::ChildPriority::ExitIdleLocked() {
603
- if (connectivity_state_ == GRPC_CHANNEL_IDLE &&
604
- !failover_timer_callback_pending_) {
605
- StartFailoverTimerLocked();
745
+ if (connectivity_state_ == GRPC_CHANNEL_IDLE && failover_timer_ == nullptr) {
746
+ failover_timer_ = MakeOrphanable<FailoverTimer>(Ref());
606
747
  }
607
748
  child_policy_->ExitIdleLocked();
608
749
  }
@@ -628,122 +769,21 @@ void PriorityLb::ChildPriority::OnConnectivityStateUpdateLocked(
628
769
  // If READY or IDLE or TRANSIENT_FAILURE, cancel failover timer.
629
770
  if (state == GRPC_CHANNEL_READY || state == GRPC_CHANNEL_IDLE ||
630
771
  state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
631
- MaybeCancelFailoverTimerLocked();
772
+ failover_timer_.reset();
632
773
  }
633
774
  // Notify the parent policy.
634
775
  priority_policy_->HandleChildConnectivityStateChangeLocked(this);
635
776
  }
636
777
 
637
- void PriorityLb::ChildPriority::StartFailoverTimerLocked() {
638
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
639
- gpr_log(
640
- GPR_INFO,
641
- "[priority_lb %p] child %s (%p): starting failover timer for %" PRId64
642
- "ms",
643
- priority_policy_.get(), name_.c_str(), this,
644
- priority_policy_->child_failover_timeout_.millis());
645
- }
646
- Ref(DEBUG_LOCATION, "ChildPriority+OnFailoverTimerLocked").release();
647
- grpc_timer_init(
648
- &failover_timer_,
649
- ExecCtx::Get()->Now() + priority_policy_->child_failover_timeout_,
650
- &on_failover_timer_);
651
- failover_timer_callback_pending_ = true;
652
- }
653
-
654
- void PriorityLb::ChildPriority::MaybeCancelFailoverTimerLocked() {
655
- if (failover_timer_callback_pending_) {
656
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
657
- gpr_log(GPR_INFO,
658
- "[priority_lb %p] child %s (%p): cancelling failover timer",
659
- priority_policy_.get(), name_.c_str(), this);
660
- }
661
- grpc_timer_cancel(&failover_timer_);
662
- failover_timer_callback_pending_ = false;
663
- }
664
- }
665
-
666
- void PriorityLb::ChildPriority::OnFailoverTimer(void* arg,
667
- grpc_error_handle error) {
668
- ChildPriority* self = static_cast<ChildPriority*>(arg);
669
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
670
- self->priority_policy_->work_serializer()->Run(
671
- [self, error]() { self->OnFailoverTimerLocked(error); }, DEBUG_LOCATION);
672
- }
673
-
674
- void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error_handle error) {
675
- if (error == GRPC_ERROR_NONE && failover_timer_callback_pending_ &&
676
- !priority_policy_->shutting_down_) {
677
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
678
- gpr_log(GPR_INFO,
679
- "[priority_lb %p] child %s (%p): failover timer fired, "
680
- "reporting TRANSIENT_FAILURE",
681
- priority_policy_.get(), name_.c_str(), this);
682
- }
683
- failover_timer_callback_pending_ = false;
684
- OnConnectivityStateUpdateLocked(
685
- GRPC_CHANNEL_TRANSIENT_FAILURE,
686
- absl::Status(absl::StatusCode::kUnavailable, "failover timer fired"),
687
- nullptr);
688
- }
689
- Unref(DEBUG_LOCATION, "ChildPriority+OnFailoverTimerLocked");
690
- GRPC_ERROR_UNREF(error);
691
- }
692
-
693
778
  void PriorityLb::ChildPriority::DeactivateLocked() {
694
779
  // If already deactivated, don't do it again.
695
- if (deactivation_timer_callback_pending_) return;
696
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
697
- gpr_log(GPR_INFO,
698
- "[priority_lb %p] child %s (%p): deactivating -- will remove in "
699
- "%" PRId64 "ms.",
700
- priority_policy_.get(), name_.c_str(), this,
701
- kChildRetentionInterval.millis());
702
- }
703
- MaybeCancelFailoverTimerLocked();
704
- // Start a timer to delete the child.
705
- Ref(DEBUG_LOCATION, "ChildPriority+timer").release();
706
- grpc_timer_init(&deactivation_timer_,
707
- ExecCtx::Get()->Now() + kChildRetentionInterval,
708
- &on_deactivation_timer_);
709
- deactivation_timer_callback_pending_ = true;
780
+ if (deactivation_timer_ != nullptr) return;
781
+ failover_timer_.reset();
782
+ deactivation_timer_ = MakeOrphanable<DeactivationTimer>(Ref());
710
783
  }
711
784
 
712
785
  void PriorityLb::ChildPriority::MaybeReactivateLocked() {
713
- if (deactivation_timer_callback_pending_) {
714
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
715
- gpr_log(GPR_INFO, "[priority_lb %p] child %s (%p): reactivating",
716
- priority_policy_.get(), name_.c_str(), this);
717
- }
718
- deactivation_timer_callback_pending_ = false;
719
- grpc_timer_cancel(&deactivation_timer_);
720
- }
721
- }
722
-
723
- void PriorityLb::ChildPriority::OnDeactivationTimer(void* arg,
724
- grpc_error_handle error) {
725
- ChildPriority* self = static_cast<ChildPriority*>(arg);
726
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
727
- self->priority_policy_->work_serializer()->Run(
728
- [self, error]() { self->OnDeactivationTimerLocked(error); },
729
- DEBUG_LOCATION);
730
- }
731
-
732
- void PriorityLb::ChildPriority::OnDeactivationTimerLocked(
733
- grpc_error_handle error) {
734
- if (error == GRPC_ERROR_NONE && deactivation_timer_callback_pending_ &&
735
- !priority_policy_->shutting_down_) {
736
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
737
- gpr_log(GPR_INFO,
738
- "[priority_lb %p] child %s (%p): deactivation timer fired, "
739
- "deleting child",
740
- priority_policy_.get(), name_.c_str(), this);
741
- }
742
- deactivation_timer_callback_pending_ = false;
743
- priority_policy_->DeleteChild(this);
744
- }
745
- Unref(DEBUG_LOCATION, "ChildPriority+timer");
746
- GRPC_ERROR_UNREF(error);
786
+ deactivation_timer_.reset();
747
787
  }
748
788
 
749
789
  //
@@ -521,12 +521,8 @@ void RingHash::RingHashSubchannelList::StartWatchingLocked() {
521
521
  subchannel(i)->StartConnectivityWatchLocked();
522
522
  }
523
523
  }
524
- RingHash* p = static_cast<RingHash*>(policy());
525
- // Sending up the initial picker while all subchannels are in IDLE state.
526
- p->channel_control_helper()->UpdateState(
527
- GRPC_CHANNEL_READY, absl::Status(),
528
- absl::make_unique<Picker>(p->Ref(DEBUG_LOCATION, "RingHashPicker"),
529
- p->ring_));
524
+ // Send updated state to parent based on reported subchannel states.
525
+ UpdateRingHashConnectivityStateLocked();
530
526
  }
531
527
 
532
528
  void RingHash::RingHashSubchannelList::UpdateStateCountersLocked(
@@ -83,7 +83,7 @@ TraceFlag grpc_lb_rls_trace(false, "rls_lb");
83
83
 
84
84
  namespace {
85
85
 
86
- const char* kRls = "rls";
86
+ const char* kRls = "rls_experimental";
87
87
  const char kGrpc[] = "grpc";
88
88
  const char* kRlsRequestPath = "/grpc.lookup.v1.RouteLookupService/RouteLookup";
89
89
  const char* kFakeTargetFieldValue = "fake_target_field_value";
@@ -2530,18 +2530,9 @@ class RlsLbFactory : public LoadBalancingPolicyFactory {
2530
2530
  }
2531
2531
  };
2532
2532
 
2533
- bool RlsEnabled() {
2534
- char* value = gpr_getenv("GRPC_EXPERIMENTAL_ENABLE_RLS_LB_POLICY");
2535
- bool parsed_value;
2536
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
2537
- gpr_free(value);
2538
- return parse_succeeded && parsed_value;
2539
- }
2540
-
2541
2533
  } // namespace
2542
2534
 
2543
2535
  void RlsLbPluginInit() {
2544
- if (!RlsEnabled()) return;
2545
2536
  LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory(
2546
2537
  absl::make_unique<RlsLbFactory>());
2547
2538
  }