grpc 1.33.0.pre1 → 1.34.0

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 (533) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +342 -134
  3. data/include/grpc/grpc.h +1 -2
  4. data/include/grpc/grpc_security.h +149 -172
  5. data/include/grpc/impl/codegen/grpc_types.h +9 -2
  6. data/include/grpc/impl/codegen/port_platform.h +22 -55
  7. data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
  8. data/src/core/ext/filters/client_channel/config_selector.h +2 -3
  9. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
  10. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  13. data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
  28. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  29. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
  37. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  38. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
  39. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
  41. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  42. data/src/core/ext/filters/client_channel/server_address.h +0 -4
  43. data/src/core/ext/filters/client_channel/service_config.cc +3 -1
  44. data/src/core/ext/filters/client_channel/service_config.h +1 -1
  45. data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
  46. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  47. data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
  48. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  49. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  50. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  51. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  53. data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
  54. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
  56. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  59. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  61. data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
  62. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
  64. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  65. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  66. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  67. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  68. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  69. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  70. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  71. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  72. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  73. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  74. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  75. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  76. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  77. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  78. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  79. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  80. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  81. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  86. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  94. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  101. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  102. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  103. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  104. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  106. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  107. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  109. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  110. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  114. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  119. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  125. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  136. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  137. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  138. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  139. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  140. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  141. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  142. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  143. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  144. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  145. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  146. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  147. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  148. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  149. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  150. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  151. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  152. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  153. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  154. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  155. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  156. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  157. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  158. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  159. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  160. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  161. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  162. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  163. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  164. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  165. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  166. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  167. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  168. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  169. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  170. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  171. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  172. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  173. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  174. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  175. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  176. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  177. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  178. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  179. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  180. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  181. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  182. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  183. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  184. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  185. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  186. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  187. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  188. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  189. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  190. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  191. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  193. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  194. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  195. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  196. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  197. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  198. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  199. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  200. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  201. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  202. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  203. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  204. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  205. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  206. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  207. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  208. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  209. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  210. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  211. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  212. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  213. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  214. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  215. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  216. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  217. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  218. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  219. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  220. data/src/core/ext/xds/certificate_provider_factory.h +7 -5
  221. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  222. data/src/core/ext/xds/certificate_provider_store.h +65 -8
  223. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  224. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  225. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
  226. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
  227. data/src/core/ext/xds/xds_api.cc +241 -718
  228. data/src/core/ext/xds/xds_api.h +50 -9
  229. data/src/core/ext/xds/xds_bootstrap.cc +172 -25
  230. data/src/core/ext/xds/xds_bootstrap.h +23 -7
  231. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  232. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  233. data/src/core/ext/xds/xds_client.cc +161 -128
  234. data/src/core/ext/xds/xds_client.h +12 -11
  235. data/src/core/ext/xds/xds_client_stats.cc +41 -4
  236. data/src/core/ext/xds/xds_client_stats.h +2 -2
  237. data/src/core/lib/channel/channel_args.cc +2 -1
  238. data/src/core/lib/channel/channel_trace.cc +4 -2
  239. data/src/core/lib/channel/channelz.h +2 -2
  240. data/src/core/lib/channel/handshaker.h +2 -2
  241. data/src/core/lib/compression/compression.cc +8 -4
  242. data/src/core/lib/compression/compression_internal.cc +10 -5
  243. data/src/core/lib/compression/compression_internal.h +2 -1
  244. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  245. data/src/core/lib/debug/stats_data.cc +1 -0
  246. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  247. data/src/core/lib/gpr/log_linux.cc +17 -3
  248. data/src/core/lib/gpr/log_posix.cc +13 -1
  249. data/src/core/lib/gpr/log_windows.cc +16 -4
  250. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  251. data/src/core/lib/gpr/string.cc +1 -1
  252. data/src/core/lib/gpr/time_precise.cc +3 -2
  253. data/src/core/lib/gpr/tls.h +4 -0
  254. data/src/core/lib/gpr/tls_msvc.h +2 -0
  255. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  256. data/src/core/lib/gpr/useful.h +5 -4
  257. data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
  258. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  259. data/src/core/lib/gprpp/examine_stack.h +46 -0
  260. data/src/core/lib/gprpp/fork.cc +2 -2
  261. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  262. data/src/core/lib/gprpp/orphanable.h +4 -8
  263. data/src/core/lib/gprpp/ref_counted.h +40 -46
  264. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
  265. data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
  266. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  267. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  268. data/src/core/lib/gprpp/thd.h +2 -2
  269. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  270. data/src/core/lib/http/parser.cc +46 -25
  271. data/src/core/lib/iomgr/error.cc +2 -1
  272. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  273. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  274. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  275. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  276. data/src/core/lib/iomgr/parse_address.cc +84 -6
  277. data/src/core/lib/iomgr/parse_address.h +20 -0
  278. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  279. data/src/core/lib/iomgr/python_util.h +3 -3
  280. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  281. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  282. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  283. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  284. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  285. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  286. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  287. data/src/core/lib/json/json.h +2 -2
  288. data/src/core/lib/json/json_reader.cc +8 -4
  289. data/src/core/lib/json/json_util.h +167 -0
  290. data/src/core/lib/json/json_writer.cc +2 -1
  291. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
  292. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
  293. data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
  294. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
  295. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
  296. data/src/core/lib/security/context/security_context.h +3 -1
  297. data/src/core/lib/security/credentials/credentials.cc +1 -1
  298. data/src/core/lib/security/credentials/credentials.h +3 -3
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  307. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  308. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  309. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  310. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  312. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
  313. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
  314. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  315. data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
  316. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  317. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  318. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  319. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  320. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  321. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  322. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  323. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  324. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  325. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  326. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  327. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  328. data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
  329. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  330. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  331. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  332. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  333. data/src/core/lib/security/util/json_util.h +1 -0
  334. data/src/core/lib/slice/slice.cc +7 -4
  335. data/src/core/lib/slice/slice_buffer.cc +2 -1
  336. data/src/core/lib/slice/slice_intern.cc +2 -2
  337. data/src/core/lib/surface/call.cc +9 -8
  338. data/src/core/lib/surface/completion_queue.cc +7 -6
  339. data/src/core/lib/surface/server.cc +4 -2
  340. data/src/core/lib/surface/server.h +2 -2
  341. data/src/core/lib/surface/validate_metadata.h +3 -0
  342. data/src/core/lib/surface/version.cc +2 -2
  343. data/src/core/lib/transport/authority_override.h +2 -0
  344. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  345. data/src/core/lib/transport/byte_stream.h +3 -3
  346. data/src/core/lib/transport/connectivity_state.h +3 -3
  347. data/src/core/lib/transport/metadata.h +2 -2
  348. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  349. data/src/core/lib/transport/transport.cc +5 -3
  350. data/src/core/lib/transport/transport.h +1 -1
  351. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  352. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
  353. data/src/core/tsi/fake_transport_security.cc +1 -0
  354. data/src/core/tsi/local_transport_security.cc +5 -1
  355. data/src/core/tsi/local_transport_security.h +6 -7
  356. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  357. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  358. data/src/core/tsi/ssl_transport_security.cc +14 -7
  359. data/src/core/tsi/ssl_transport_security.h +3 -0
  360. data/src/core/tsi/transport_security.cc +4 -2
  361. data/src/ruby/ext/grpc/extconf.rb +1 -1
  362. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
  363. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
  364. data/src/ruby/lib/grpc/version.rb +1 -1
  365. data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
  366. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  367. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  368. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  369. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  370. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  371. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  372. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
  373. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  374. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  375. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  377. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  378. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  379. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  380. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  381. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  382. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  383. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  384. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  385. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  386. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  387. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  388. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  389. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  390. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  391. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  392. data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
  393. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
  394. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  395. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
  396. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  397. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
  398. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
  399. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  400. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
  401. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
  402. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
  403. data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
  404. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
  405. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
  406. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
  407. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
  409. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
  410. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  411. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  412. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
  413. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
  414. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  416. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
  417. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  418. data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
  419. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  420. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  421. data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
  423. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  424. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  425. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  426. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  427. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  428. data/third_party/abseil-cpp/absl/status/status.cc +4 -6
  429. data/third_party/abseil-cpp/absl/status/status.h +502 -113
  430. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  431. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
  433. data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
  434. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  435. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  436. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  437. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  439. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  452. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  453. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  455. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  456. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  457. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  458. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  459. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  460. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  461. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  462. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
  463. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
  464. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
  465. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
  466. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
  467. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
  468. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
  469. data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  471. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  472. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  473. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  485. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  486. data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
  487. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  488. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  489. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  490. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  491. data/third_party/boringssl-with-bazel/err_data.c +340 -336
  492. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  494. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
  495. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
  497. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
  498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
  499. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  505. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
  506. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  507. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  508. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  509. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  511. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
  512. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  513. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
  514. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
  515. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  516. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  517. data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
  524. data/third_party/upb/upb/def.c +2169 -0
  525. data/third_party/upb/upb/def.h +330 -0
  526. data/third_party/upb/upb/def.hpp +525 -0
  527. data/third_party/upb/upb/reflection.c +391 -0
  528. data/third_party/upb/upb/reflection.h +168 -0
  529. data/third_party/upb/upb/text_encode.c +398 -0
  530. data/third_party/upb/upb/text_encode.h +35 -0
  531. metadata +227 -37
  532. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
  533. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -209,7 +209,7 @@ class ChannelData {
209
209
  grpc_closure* on_complete,
210
210
  grpc_closure* watcher_timer_init);
211
211
 
212
- ~ExternalConnectivityWatcher();
212
+ ~ExternalConnectivityWatcher() override;
213
213
 
214
214
  // Removes the watcher from the external_watchers_ map.
215
215
  static void RemoveWatcherFromExternalWatchersMap(ChannelData* chand,
@@ -882,9 +882,6 @@ class CallData {
882
882
  // ChannelData::SubchannelWrapper
883
883
  //
884
884
 
885
- using ServerAddressAttributeMap =
886
- std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>;
887
-
888
885
  // This class is a wrapper for Subchannel that hides details of the
889
886
  // channel's implementation (such as the health check service name and
890
887
  // connected subchannel) from the LB policy API.
@@ -896,13 +893,14 @@ using ServerAddressAttributeMap =
896
893
  class ChannelData::SubchannelWrapper : public SubchannelInterface {
897
894
  public:
898
895
  SubchannelWrapper(ChannelData* chand, Subchannel* subchannel,
899
- grpc_core::UniquePtr<char> health_check_service_name,
900
- ServerAddressAttributeMap attributes)
901
- : SubchannelInterface(&grpc_client_channel_routing_trace),
896
+ grpc_core::UniquePtr<char> health_check_service_name)
897
+ : SubchannelInterface(
898
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
899
+ ? "SubchannelWrapper"
900
+ : nullptr),
902
901
  chand_(chand),
903
902
  subchannel_(subchannel),
904
- health_check_service_name_(std::move(health_check_service_name)),
905
- attributes_(std::move(attributes)) {
903
+ health_check_service_name_(std::move(health_check_service_name)) {
906
904
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
907
905
  gpr_log(GPR_INFO,
908
906
  "chand=%p: creating subchannel wrapper %p for subchannel %p",
@@ -921,7 +919,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
921
919
  chand_->subchannel_wrappers_.insert(this);
922
920
  }
923
921
 
924
- ~SubchannelWrapper() {
922
+ ~SubchannelWrapper() override {
925
923
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
926
924
  gpr_log(GPR_INFO,
927
925
  "chand=%p: destroying subchannel wrapper %p for subchannel %p",
@@ -984,13 +982,6 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
984
982
  return subchannel_->channel_args();
985
983
  }
986
984
 
987
- const ServerAddress::AttributeInterface* GetAttribute(
988
- const char* key) const override {
989
- auto it = attributes_.find(key);
990
- if (it == attributes_.end()) return nullptr;
991
- return it->second.get();
992
- }
993
-
994
985
  void ThrottleKeepaliveTime(int new_keepalive_time) {
995
986
  subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
996
987
  }
@@ -1071,7 +1062,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
1071
1062
  parent_(std::move(parent)),
1072
1063
  last_seen_state_(initial_state) {}
1073
1064
 
1074
- ~WatcherWrapper() {
1065
+ ~WatcherWrapper() override {
1075
1066
  auto* parent = parent_.release(); // ref owned by lambda
1076
1067
  parent->chand_->work_serializer_->Run(
1077
1068
  [parent]() { parent->Unref(DEBUG_LOCATION, "WatcherWrapper"); },
@@ -1188,7 +1179,6 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
1188
1179
  ChannelData* chand_;
1189
1180
  Subchannel* subchannel_;
1190
1181
  grpc_core::UniquePtr<char> health_check_service_name_;
1191
- ServerAddressAttributeMap attributes_;
1192
1182
  // Maps from the address of the watcher passed to us by the LB policy
1193
1183
  // to the address of the WrapperWatcher that we passed to the underlying
1194
1184
  // subchannel. This is needed so that when the LB policy calls
@@ -1363,18 +1353,6 @@ class ChannelData::ConnectivityWatcherRemover {
1363
1353
  // ChannelData::ClientChannelControlHelper
1364
1354
  //
1365
1355
 
1366
- } // namespace
1367
-
1368
- // Allows accessing the attributes from a ServerAddress.
1369
- class ChannelServerAddressPeer {
1370
- public:
1371
- static ServerAddressAttributeMap GetAttributes(ServerAddress* address) {
1372
- return std::move(address->attributes_);
1373
- }
1374
- };
1375
-
1376
- namespace {
1377
-
1378
1356
  class ChannelData::ClientChannelControlHelper
1379
1357
  : public LoadBalancingPolicy::ChannelControlHelper {
1380
1358
  public:
@@ -1426,8 +1404,7 @@ class ChannelData::ClientChannelControlHelper
1426
1404
  subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
1427
1405
  // Create and return wrapper for the subchannel.
1428
1406
  return MakeRefCounted<SubchannelWrapper>(
1429
- chand_, subchannel, std::move(health_check_service_name),
1430
- ChannelServerAddressPeer::GetAttributes(&address));
1407
+ chand_, subchannel, std::move(health_check_service_name));
1431
1408
  }
1432
1409
 
1433
1410
  void UpdateState(
@@ -2164,7 +2141,7 @@ void ChannelData::RemoveConnectivityWatcher(
2164
2141
 
2165
2142
  CallData::CallData(grpc_call_element* elem, const ChannelData& chand,
2166
2143
  const grpc_call_element_args& args)
2167
- : deadline_state_(elem, args.call_stack, args.call_combiner,
2144
+ : deadline_state_(elem, args,
2168
2145
  GPR_LIKELY(chand.deadline_checking_enabled())
2169
2146
  ? args.deadline
2170
2147
  : GRPC_MILLIS_INF_FUTURE),
@@ -24,8 +24,7 @@
24
24
 
25
25
  #include "absl/strings/string_view.h"
26
26
 
27
- #include <grpc/impl/codegen/grpc_types.h>
28
- #include <grpc/impl/codegen/slice.h>
27
+ #include <grpc/grpc.h>
29
28
 
30
29
  #include "src/core/ext/filters/client_channel/service_config.h"
31
30
  #include "src/core/ext/filters/client_channel/service_config_parser.h"
@@ -66,7 +65,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
66
65
  std::function<void()> on_call_committed;
67
66
  };
68
67
 
69
- virtual ~ConfigSelector() = default;
68
+ ~ConfigSelector() override = default;
70
69
 
71
70
  virtual const char* name() const = 0;
72
71
 
@@ -51,7 +51,10 @@ HealthCheckClient::HealthCheckClient(
51
51
  grpc_pollset_set* interested_parties,
52
52
  RefCountedPtr<channelz::SubchannelNode> channelz_node,
53
53
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
54
- : InternallyRefCounted<HealthCheckClient>(&grpc_health_check_client_trace),
54
+ : InternallyRefCounted<HealthCheckClient>(
55
+ GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)
56
+ ? "HealthCheckClient"
57
+ : nullptr),
55
58
  service_name_(service_name),
56
59
  connected_subchannel_(std::move(connected_subchannel)),
57
60
  interested_parties_(interested_parties),
@@ -50,7 +50,7 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
50
50
  RefCountedPtr<channelz::SubchannelNode> channelz_node,
51
51
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
52
52
 
53
- ~HealthCheckClient();
53
+ ~HealthCheckClient() override;
54
54
 
55
55
  void Orphan() override;
56
56
 
@@ -60,7 +60,7 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
60
60
  public:
61
61
  CallState(RefCountedPtr<HealthCheckClient> health_check_client,
62
62
  grpc_pollset_set* interested_parties_);
63
- ~CallState();
63
+ ~CallState() override;
64
64
 
65
65
  void Orphan() override;
66
66
 
@@ -54,7 +54,7 @@ class HttpConnectHandshaker : public Handshaker {
54
54
  const char* name() const override { return "http_connect"; }
55
55
 
56
56
  private:
57
- virtual ~HttpConnectHandshaker();
57
+ ~HttpConnectHandshaker() override;
58
58
  void CleanupArgsForFailureLocked();
59
59
  void HandshakeFailedLocked(grpc_error* error);
60
60
  static void OnWriteDone(void* arg, grpc_error* error);
@@ -32,7 +32,11 @@ DebugOnlyTraceFlag grpc_trace_lb_policy_refcount(false, "lb_policy_refcount");
32
32
  //
33
33
 
34
34
  LoadBalancingPolicy::LoadBalancingPolicy(Args args, intptr_t initial_refcount)
35
- : InternallyRefCounted(&grpc_trace_lb_policy_refcount, initial_refcount),
35
+ : InternallyRefCounted(
36
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_lb_policy_refcount)
37
+ ? "LoadBalancingPolicy"
38
+ : nullptr,
39
+ initial_refcount),
36
40
  work_serializer_(std::move(args.work_serializer)),
37
41
  interested_parties_(grpc_pollset_set_create()),
38
42
  channel_control_helper_(std::move(args.channel_control_helper)) {}
@@ -301,7 +301,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
301
301
  /// return the parameters they need.
302
302
  class Config : public RefCounted<Config> {
303
303
  public:
304
- virtual ~Config() = default;
304
+ ~Config() override = default;
305
305
 
306
306
  // Returns the load balancing policy name
307
307
  virtual const char* name() const = 0;
@@ -341,7 +341,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
341
341
  };
342
342
 
343
343
  explicit LoadBalancingPolicy(Args args, intptr_t initial_refcount = 1);
344
- virtual ~LoadBalancingPolicy();
344
+ ~LoadBalancingPolicy() override;
345
345
 
346
346
  // Not copyable nor movable.
347
347
  LoadBalancingPolicy(const LoadBalancingPolicy&) = delete;
@@ -376,7 +376,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
376
376
  explicit QueuePicker(RefCountedPtr<LoadBalancingPolicy> parent)
377
377
  : parent_(std::move(parent)) {}
378
378
 
379
- ~QueuePicker() { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
379
+ ~QueuePicker() override { parent_.reset(DEBUG_LOCATION, "QueuePicker"); }
380
380
 
381
381
  PickResult Pick(PickArgs args) override;
382
382
 
@@ -36,7 +36,7 @@ class ChildPolicyHandler::Helper
36
36
  explicit Helper(RefCountedPtr<ChildPolicyHandler> parent)
37
37
  : parent_(std::move(parent)) {}
38
38
 
39
- ~Helper() { parent_.reset(DEBUG_LOCATION, "Helper"); }
39
+ ~Helper() override { parent_.reset(DEBUG_LOCATION, "Helper"); }
40
40
 
41
41
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
42
42
  ServerAddress address, const grpc_channel_args& args) override {
@@ -36,7 +36,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
36
36
  ChildPolicyHandler(Args args, TraceFlag* tracer)
37
37
  : LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
38
38
 
39
- virtual const char* name() const override { return "child_policy_handler"; }
39
+ const char* name() const override { return "child_policy_handler"; }
40
40
 
41
41
  void UpdateLocked(UpdateArgs args) override;
42
42
  void ExitIdleLocked() override;
@@ -164,7 +164,7 @@ class GrpcLb : public LoadBalancingPolicy {
164
164
  public:
165
165
  explicit BalancerCallState(
166
166
  RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
167
- ~BalancerCallState();
167
+ ~BalancerCallState() override;
168
168
 
169
169
  // It's the caller's responsibility to ensure that Orphan() is called from
170
170
  // inside the combiner.
@@ -235,6 +235,23 @@ class GrpcLb : public LoadBalancingPolicy {
235
235
  grpc_closure client_load_report_closure_;
236
236
  };
237
237
 
238
+ class SubchannelWrapper : public DelegatingSubchannel {
239
+ public:
240
+ SubchannelWrapper(RefCountedPtr<SubchannelInterface> subchannel,
241
+ std::string lb_token,
242
+ RefCountedPtr<GrpcLbClientStats> client_stats)
243
+ : DelegatingSubchannel(std::move(subchannel)),
244
+ lb_token_(std::move(lb_token)),
245
+ client_stats_(std::move(client_stats)) {}
246
+
247
+ const std::string& lb_token() const { return lb_token_; }
248
+ GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
249
+
250
+ private:
251
+ std::string lb_token_;
252
+ RefCountedPtr<GrpcLbClientStats> client_stats_;
253
+ };
254
+
238
255
  class TokenAndClientStatsAttribute
239
256
  : public ServerAddress::AttributeInterface {
240
257
  public:
@@ -262,7 +279,9 @@ class GrpcLb : public LoadBalancingPolicy {
262
279
  }
263
280
 
264
281
  const std::string& lb_token() const { return lb_token_; }
265
- GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
282
+ RefCountedPtr<GrpcLbClientStats> client_stats() const {
283
+ return client_stats_;
284
+ }
266
285
 
267
286
  private:
268
287
  std::string lb_token_;
@@ -310,21 +329,16 @@ class GrpcLb : public LoadBalancingPolicy {
310
329
 
311
330
  class Picker : public SubchannelPicker {
312
331
  public:
313
- Picker(GrpcLb* parent, RefCountedPtr<Serverlist> serverlist,
332
+ Picker(RefCountedPtr<Serverlist> serverlist,
314
333
  std::unique_ptr<SubchannelPicker> child_picker,
315
334
  RefCountedPtr<GrpcLbClientStats> client_stats)
316
- : parent_(parent),
317
- serverlist_(std::move(serverlist)),
335
+ : serverlist_(std::move(serverlist)),
318
336
  child_picker_(std::move(child_picker)),
319
337
  client_stats_(std::move(client_stats)) {}
320
338
 
321
339
  PickResult Pick(PickArgs args) override;
322
340
 
323
341
  private:
324
- // Storing the address for logging, but not holding a ref.
325
- // DO NOT DEFERENCE!
326
- GrpcLb* parent_;
327
-
328
342
  // Serverlist to be used for determining drops.
329
343
  RefCountedPtr<Serverlist> serverlist_;
330
344
 
@@ -355,7 +369,7 @@ class GrpcLb : public LoadBalancingPolicy {
355
369
  : AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
356
370
  parent_(std::move(parent)) {}
357
371
 
358
- ~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
372
+ ~StateWatcher() override { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
359
373
 
360
374
  private:
361
375
  void OnConnectivityStateChange(grpc_connectivity_state new_state,
@@ -381,7 +395,7 @@ class GrpcLb : public LoadBalancingPolicy {
381
395
  RefCountedPtr<GrpcLb> parent_;
382
396
  };
383
397
 
384
- ~GrpcLb();
398
+ ~GrpcLb() override;
385
399
 
386
400
  void ShutdownLocked() override;
387
401
 
@@ -591,7 +605,8 @@ const char* GrpcLb::Serverlist::ShouldDrop() {
591
605
  GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
592
606
  PickResult result;
593
607
  // Check if we should drop the call.
594
- const char* drop_token = serverlist_->ShouldDrop();
608
+ const char* drop_token =
609
+ serverlist_ == nullptr ? nullptr : serverlist_->ShouldDrop();
595
610
  if (drop_token != nullptr) {
596
611
  // Update client load reporting stats to indicate the number of
597
612
  // dropped calls. Note that we have to do this here instead of in
@@ -609,17 +624,11 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
609
624
  // If pick succeeded, add LB token to initial metadata.
610
625
  if (result.type == PickResult::PICK_COMPLETE &&
611
626
  result.subchannel != nullptr) {
612
- const TokenAndClientStatsAttribute* attribute =
613
- static_cast<const TokenAndClientStatsAttribute*>(
614
- result.subchannel->GetAttribute(kGrpcLbAddressAttributeKey));
615
- if (attribute == nullptr) {
616
- gpr_log(GPR_ERROR, "[grpclb %p picker %p] No LB token for subchannel %p",
617
- parent_, this, result.subchannel.get());
618
- abort();
619
- }
627
+ const SubchannelWrapper* subchannel_wrapper =
628
+ static_cast<SubchannelWrapper*>(result.subchannel.get());
620
629
  // Encode client stats object into metadata for use by
621
630
  // client_load_reporting filter.
622
- GrpcLbClientStats* client_stats = attribute->client_stats();
631
+ GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
623
632
  if (client_stats != nullptr) {
624
633
  client_stats->Ref().release(); // Ref passed via metadata.
625
634
  // The metadata value is a hack: we pretend the pointer points to
@@ -635,10 +644,14 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
635
644
  // Create a new copy on the call arena, since the subchannel list
636
645
  // may get refreshed between when we return this pick and when the
637
646
  // initial metadata goes out on the wire.
638
- char* lb_token = static_cast<char*>(
639
- args.call_state->Alloc(attribute->lb_token().size() + 1));
640
- strcpy(lb_token, attribute->lb_token().c_str());
641
- args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
647
+ if (!subchannel_wrapper->lb_token().empty()) {
648
+ char* lb_token = static_cast<char*>(
649
+ args.call_state->Alloc(subchannel_wrapper->lb_token().size() + 1));
650
+ strcpy(lb_token, subchannel_wrapper->lb_token().c_str());
651
+ args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
652
+ }
653
+ // Unwrap subchannel to pass up to the channel.
654
+ result.subchannel = subchannel_wrapper->wrapped_subchannel();
642
655
  }
643
656
  return result;
644
657
  }
@@ -650,8 +663,21 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
650
663
  RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
651
664
  ServerAddress address, const grpc_channel_args& args) {
652
665
  if (parent_->shutting_down_) return nullptr;
653
- return parent_->channel_control_helper()->CreateSubchannel(std::move(address),
654
- args);
666
+ const TokenAndClientStatsAttribute* attribute =
667
+ static_cast<const TokenAndClientStatsAttribute*>(
668
+ address.GetAttribute(kGrpcLbAddressAttributeKey));
669
+ if (attribute == nullptr) {
670
+ gpr_log(GPR_ERROR,
671
+ "[grpclb %p] no TokenAndClientStatsAttribute for address %p",
672
+ parent_.get(), address.ToString().c_str());
673
+ abort();
674
+ }
675
+ std::string lb_token = attribute->lb_token();
676
+ RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
677
+ return MakeRefCounted<SubchannelWrapper>(
678
+ parent_->channel_control_helper()->CreateSubchannel(std::move(address),
679
+ args),
680
+ std::move(lb_token), std::move(client_stats));
655
681
  }
656
682
 
657
683
  void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
@@ -662,56 +688,37 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
662
688
  parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
663
689
  // Enter fallback mode if needed.
664
690
  parent_->MaybeEnterFallbackModeAfterStartup();
665
- // There are three cases to consider here:
666
- // 1. We're in fallback mode. In this case, we're always going to use
667
- // the child policy's result, so we pass its picker through as-is.
668
- // 2. The serverlist contains only drop entries. In this case, we
669
- // want to use our own picker so that we can return the drops.
670
- // 3. Not in fallback mode and serverlist is not all drops (i.e., it
671
- // may be empty or contain at least one backend address). There are
672
- // two sub-cases:
673
- // a. The child policy is reporting state READY. In this case, we wrap
674
- // the child's picker in our own, so that we can handle drops and LB
675
- // token metadata for each pick.
676
- // b. The child policy is reporting a state other than READY. In this
677
- // case, we don't want to use our own picker, because we don't want
678
- // to process drops for picks that yield a QUEUE result; this would
679
- // result in dropping too many calls, since we will see the
680
- // queued picks multiple times, and we'd consider each one a
681
- // separate call for the drop calculation.
682
- //
683
- // Cases 1 and 3b: return picker from the child policy as-is.
684
- if (parent_->serverlist_ == nullptr ||
685
- (!parent_->serverlist_->ContainsAllDropEntries() &&
686
- state != GRPC_CHANNEL_READY)) {
687
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
688
- gpr_log(GPR_INFO,
689
- "[grpclb %p helper %p] state=%s (%s) passing "
690
- "child picker %p as-is",
691
- parent_.get(), this, ConnectivityStateName(state),
692
- status.ToString().c_str(), picker.get());
693
- }
694
- parent_->channel_control_helper()->UpdateState(state, status,
695
- std::move(picker));
696
- return;
697
- }
698
- // Cases 2 and 3a: wrap picker from the child in our own picker.
699
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
700
- gpr_log(GPR_INFO,
701
- "[grpclb %p helper %p] state=%s (%s) wrapping child "
702
- "picker %p",
703
- parent_.get(), this, ConnectivityStateName(state),
704
- status.ToString().c_str(), picker.get());
691
+ // We pass the serverlist to the picker so that it can handle drops.
692
+ // However, we don't want to handle drops in the case where the child
693
+ // policy is reporting a state other than READY (unless we are
694
+ // dropping *all* calls), because we don't want to process drops for picks
695
+ // that yield a QUEUE result; this would result in dropping too many calls,
696
+ // since we will see the queued picks multiple times, and we'd consider each
697
+ // one a separate call for the drop calculation. So in this case, we pass
698
+ // a null serverlist to the picker, which tells it not to do drops.
699
+ RefCountedPtr<Serverlist> serverlist;
700
+ if (state == GRPC_CHANNEL_READY ||
701
+ (parent_->serverlist_ != nullptr &&
702
+ parent_->serverlist_->ContainsAllDropEntries())) {
703
+ serverlist = parent_->serverlist_;
705
704
  }
706
705
  RefCountedPtr<GrpcLbClientStats> client_stats;
707
706
  if (parent_->lb_calld_ != nullptr &&
708
707
  parent_->lb_calld_->client_stats() != nullptr) {
709
708
  client_stats = parent_->lb_calld_->client_stats()->Ref();
710
709
  }
710
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
711
+ gpr_log(GPR_INFO,
712
+ "[grpclb %p helper %p] state=%s (%s) wrapping child "
713
+ "picker %p (serverlist=%p, client_stats=%p)",
714
+ parent_.get(), this, ConnectivityStateName(state),
715
+ status.ToString().c_str(), picker.get(), serverlist.get(),
716
+ client_stats.get());
717
+ }
711
718
  parent_->channel_control_helper()->UpdateState(
712
719
  state, status,
713
- absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
714
- std::move(picker), std::move(client_stats)));
720
+ absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
721
+ std::move(client_stats)));
715
722
  }
716
723
 
717
724
  void GrpcLb::Helper::RequestReresolution() {
@@ -738,7 +745,9 @@ void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
738
745
 
739
746
  GrpcLb::BalancerCallState::BalancerCallState(
740
747
  RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy)
741
- : InternallyRefCounted<BalancerCallState>(&grpc_lb_glb_trace),
748
+ : InternallyRefCounted<BalancerCallState>(
749
+ GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
750
+ : nullptr),
742
751
  grpclb_policy_(std::move(parent_grpclb_policy)) {
743
752
  GPR_ASSERT(grpclb_policy_ != nullptr);
744
753
  GPR_ASSERT(!grpclb_policy()->shutting_down_);
@@ -932,7 +941,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
932
941
  if (num_calls_started == 0 && num_calls_finished == 0 &&
933
942
  num_calls_finished_with_client_failed_to_send == 0 &&
934
943
  num_calls_finished_known_received == 0 &&
935
- (drop_token_counts == nullptr || drop_token_counts->size() == 0)) {
944
+ (drop_token_counts == nullptr || drop_token_counts->empty())) {
936
945
  if (last_client_load_report_counters_were_zero_) {
937
946
  ScheduleNextClientLoadReportLocked();
938
947
  return;