grpc 1.34.0 → 1.35.0.pre1

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 (458) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +808 -2787
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/grpc.h +14 -0
  6. data/include/grpc/grpc_security.h +61 -3
  7. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  8. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  9. data/include/grpc/impl/codegen/grpc_types.h +1 -1
  10. data/include/grpc/impl/codegen/log.h +0 -2
  11. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  12. data/include/grpc/slice_buffer.h +3 -3
  13. data/include/grpc/support/sync.h +3 -3
  14. data/include/grpc/support/time.h +7 -7
  15. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
  16. data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
  17. data/src/core/ext/filters/client_channel/client_channel.h +0 -4
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +4 -0
  20. data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
  21. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  22. data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
  23. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
  25. data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
  37. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +454 -16
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
  42. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
  43. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
  44. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
  45. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
  46. data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
  47. data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
  48. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  49. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
  50. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
  51. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  52. data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
  53. data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
  54. data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
  55. data/src/core/ext/filters/client_channel/subchannel.h +12 -18
  56. data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
  57. data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
  58. data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
  59. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  60. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  61. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  62. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
  63. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
  64. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
  65. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
  66. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
  67. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
  68. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
  69. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
  70. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
  71. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  72. data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
  73. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
  74. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  75. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
  76. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
  77. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
  81. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
  82. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
  83. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
  85. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
  86. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
  87. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +7 -0
  112. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
  113. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
  114. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
  115. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
  116. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
  117. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
  118. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
  119. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
  120. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
  121. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
  122. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
  123. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
  124. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
  125. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
  126. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
  127. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
  128. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
  129. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
  130. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
  131. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
  132. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
  133. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
  134. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
  135. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
  136. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
  137. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
  138. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
  139. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
  140. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
  141. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
  142. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
  143. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
  144. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
  145. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
  147. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  148. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
  149. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
  150. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
  151. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
  152. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
  153. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
  154. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
  155. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
  156. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
  157. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
  159. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
  160. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
  161. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
  162. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
  163. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  164. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
  165. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  166. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
  167. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
  168. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
  169. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
  170. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
  171. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  172. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
  173. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  174. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
  175. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
  176. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
  177. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
  178. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
  179. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
  180. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
  181. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
  182. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
  184. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
  185. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
  186. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
  187. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
  188. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
  189. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  190. data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
  191. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  192. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
  193. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
  194. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
  195. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  196. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
  197. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  198. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
  199. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
  200. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
  201. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  202. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
  203. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  204. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
  205. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  206. data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
  207. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
  208. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
  209. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
  210. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
  211. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  212. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
  213. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  214. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
  215. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  216. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
  217. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  218. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
  219. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  220. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
  221. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
  222. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
  223. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
  224. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  225. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
  226. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
  227. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
  228. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
  229. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
  230. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
  231. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
  232. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
  233. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
  234. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
  235. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
  236. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
  237. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
  238. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
  239. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
  240. data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
  241. data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
  242. data/src/core/ext/xds/certificate_provider_store.cc +10 -7
  243. data/src/core/ext/xds/certificate_provider_store.h +12 -7
  244. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
  245. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
  246. data/src/core/ext/xds/xds_api.cc +220 -31
  247. data/src/core/ext/xds/xds_api.h +41 -10
  248. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  249. data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
  250. data/src/core/ext/xds/xds_certificate_provider.h +40 -2
  251. data/src/core/ext/xds/xds_client.cc +31 -29
  252. data/src/core/ext/xds/xds_client.h +6 -1
  253. data/src/core/ext/xds/xds_client_stats.cc +2 -2
  254. data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
  255. data/src/core/lib/channel/channel_args.cc +8 -8
  256. data/src/core/lib/channel/channel_trace.h +1 -1
  257. data/src/core/lib/channel/channelz.cc +13 -14
  258. data/src/core/lib/channel/channelz.h +0 -1
  259. data/src/core/lib/channel/channelz_registry.h +0 -1
  260. data/src/core/lib/channel/handshaker.cc +2 -2
  261. data/src/core/lib/compression/compression_args.cc +3 -2
  262. data/src/core/lib/debug/stats.h +2 -2
  263. data/src/core/lib/debug/stats_data.h +13 -13
  264. data/src/core/lib/gpr/alloc.cc +3 -2
  265. data/src/core/lib/gpr/log.cc +53 -16
  266. data/src/core/lib/gpr/log_linux.cc +3 -1
  267. data/src/core/lib/gpr/log_posix.cc +3 -1
  268. data/src/core/lib/gpr/log_windows.cc +3 -1
  269. data/src/core/lib/gpr/spinlock.h +10 -2
  270. data/src/core/lib/gpr/string.cc +22 -21
  271. data/src/core/lib/gpr/string.h +5 -6
  272. data/src/core/lib/gpr/sync.cc +4 -4
  273. data/src/core/lib/gpr/time.cc +12 -12
  274. data/src/core/lib/gprpp/arena.h +3 -2
  275. data/src/core/lib/gprpp/ref_counted.h +2 -2
  276. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
  277. data/src/core/lib/gprpp/thd_posix.cc +6 -1
  278. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  279. data/src/core/lib/http/httpcli.cc +1 -1
  280. data/src/core/lib/http/httpcli.h +2 -3
  281. data/src/core/lib/http/httpcli_security_connector.cc +1 -1
  282. data/src/core/lib/http/parser.cc +1 -2
  283. data/src/core/lib/iomgr/call_combiner.cc +8 -5
  284. data/src/core/lib/iomgr/combiner.cc +2 -1
  285. data/src/core/lib/iomgr/endpoint.h +1 -1
  286. data/src/core/lib/iomgr/error.cc +15 -11
  287. data/src/core/lib/iomgr/error_internal.h +1 -1
  288. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
  289. data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
  290. data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
  291. data/src/core/lib/iomgr/exec_ctx.h +6 -4
  292. data/src/core/lib/iomgr/executor.cc +2 -1
  293. data/src/core/lib/iomgr/executor.h +1 -1
  294. data/src/core/lib/iomgr/executor/threadpool.h +1 -1
  295. data/src/core/lib/iomgr/iomgr.cc +1 -1
  296. data/src/core/lib/iomgr/load_file.h +1 -1
  297. data/src/core/lib/iomgr/lockfree_event.cc +19 -14
  298. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  299. data/src/core/lib/iomgr/parse_address.cc +52 -46
  300. data/src/core/lib/iomgr/parse_address.h +13 -9
  301. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
  302. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
  303. data/src/core/lib/iomgr/python_util.h +1 -1
  304. data/src/core/lib/iomgr/resolve_address.cc +4 -4
  305. data/src/core/lib/iomgr/resource_quota.cc +4 -4
  306. data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
  307. data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
  308. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  309. data/src/core/lib/iomgr/socket_mutator.cc +3 -2
  310. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  311. data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
  312. data/src/core/lib/iomgr/tcp_custom.cc +22 -17
  313. data/src/core/lib/iomgr/tcp_posix.cc +9 -6
  314. data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
  315. data/src/core/lib/iomgr/timer_custom.cc +3 -3
  316. data/src/core/lib/iomgr/timer_generic.cc +3 -3
  317. data/src/core/lib/iomgr/timer_manager.cc +2 -2
  318. data/src/core/lib/iomgr/udp_server.cc +1 -2
  319. data/src/core/lib/iomgr/udp_server.h +1 -2
  320. data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
  321. data/src/core/lib/json/json.h +10 -0
  322. data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
  323. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  324. data/src/core/lib/security/context/security_context.cc +4 -3
  325. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  326. data/src/core/lib/security/credentials/credentials.cc +6 -6
  327. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
  328. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
  329. data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
  330. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
  331. data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
  332. data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
  333. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  334. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
  335. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
  339. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  341. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
  342. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
  345. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
  346. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
  350. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
  351. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
  352. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
  353. data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
  354. data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
  355. data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
  356. data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
  357. data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
  358. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
  359. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
  360. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
  361. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
  362. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  363. data/src/core/lib/security/security_connector/security_connector.cc +3 -2
  364. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
  365. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  366. data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
  367. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
  368. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
  369. data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
  370. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  371. data/src/core/lib/slice/slice_intern.cc +4 -5
  372. data/src/core/lib/slice/slice_internal.h +2 -2
  373. data/src/core/lib/surface/call.cc +32 -24
  374. data/src/core/lib/surface/call_details.cc +8 -8
  375. data/src/core/lib/surface/channel.cc +16 -10
  376. data/src/core/lib/surface/channel.h +3 -2
  377. data/src/core/lib/surface/channel_init.cc +1 -1
  378. data/src/core/lib/surface/completion_queue.cc +23 -18
  379. data/src/core/lib/surface/completion_queue.h +16 -16
  380. data/src/core/lib/surface/init.cc +6 -5
  381. data/src/core/lib/surface/lame_client.cc +20 -46
  382. data/src/core/lib/surface/lame_client.h +4 -0
  383. data/src/core/lib/surface/server.cc +59 -15
  384. data/src/core/lib/surface/server.h +37 -5
  385. data/src/core/lib/surface/version.cc +1 -1
  386. data/src/core/lib/transport/authority_override.cc +6 -4
  387. data/src/core/lib/transport/authority_override.h +5 -2
  388. data/src/core/lib/transport/connectivity_state.h +6 -4
  389. data/src/core/lib/transport/error_utils.h +1 -1
  390. data/src/core/lib/transport/metadata_batch.h +4 -4
  391. data/src/core/lib/transport/static_metadata.cc +1 -1
  392. data/src/core/lib/transport/status_metadata.cc +4 -3
  393. data/src/core/lib/transport/transport.h +7 -7
  394. data/src/core/lib/uri/uri_parser.cc +131 -249
  395. data/src/core/lib/uri/uri_parser.h +57 -21
  396. data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
  397. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  398. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  399. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  400. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
  401. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  402. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  403. data/src/core/tsi/fake_transport_security.cc +5 -3
  404. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  405. data/src/core/tsi/ssl_transport_security.cc +62 -49
  406. data/src/core/tsi/ssl_transport_security.h +6 -6
  407. data/src/core/tsi/transport_security.cc +6 -6
  408. data/src/core/tsi/transport_security_interface.h +1 -1
  409. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  410. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
  411. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
  412. data/src/ruby/lib/grpc/version.rb +1 -1
  413. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
  414. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
  415. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
  416. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  417. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  418. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
  419. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  420. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  421. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  422. data/third_party/upb/upb/decode.c +248 -167
  423. data/third_party/upb/upb/decode.h +20 -1
  424. data/third_party/upb/upb/decode.int.h +163 -0
  425. data/third_party/upb/upb/decode_fast.c +1040 -0
  426. data/third_party/upb/upb/decode_fast.h +126 -0
  427. data/third_party/upb/upb/def.c +525 -516
  428. data/third_party/upb/upb/def.h +16 -31
  429. data/third_party/upb/upb/def.hpp +37 -123
  430. data/third_party/upb/upb/encode.c +227 -169
  431. data/third_party/upb/upb/encode.h +27 -2
  432. data/third_party/upb/upb/json_decode.c +1443 -0
  433. data/third_party/upb/upb/json_decode.h +23 -0
  434. data/third_party/upb/upb/json_encode.c +713 -0
  435. data/third_party/upb/upb/json_encode.h +36 -0
  436. data/third_party/upb/upb/msg.c +167 -88
  437. data/third_party/upb/upb/msg.h +174 -34
  438. data/third_party/upb/upb/port_def.inc +74 -61
  439. data/third_party/upb/upb/port_undef.inc +3 -7
  440. data/third_party/upb/upb/reflection.c +36 -19
  441. data/third_party/upb/upb/table.c +34 -197
  442. data/third_party/upb/upb/table.int.h +14 -5
  443. data/third_party/upb/upb/text_encode.c +45 -22
  444. data/third_party/upb/upb/text_encode.h +4 -1
  445. data/third_party/upb/upb/upb.c +18 -41
  446. data/third_party/upb/upb/upb.h +36 -7
  447. data/third_party/upb/upb/upb.hpp +4 -4
  448. data/third_party/upb/upb/upb.int.h +29 -0
  449. metadata +60 -46
  450. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
  451. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
  452. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  453. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
  454. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
  455. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
  456. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
  457. data/src/core/lib/gprpp/map.h +0 -53
  458. data/third_party/upb/upb/port.c +0 -26
@@ -1,68 +0,0 @@
1
- /*
2
- *
3
- * Copyright 2016-2017 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
18
-
19
- #include <grpc/support/port_platform.h>
20
-
21
- #if GRPC_ARES != 1
22
-
23
- #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
24
-
25
- struct grpc_ares_request {
26
- char val;
27
- };
28
-
29
- static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
30
- const char* dns_server, const char* name, const char* default_port,
31
- grpc_pollset_set* interested_parties, grpc_closure* on_done,
32
- std::unique_ptr<grpc_core::ServerAddressList>* addrs,
33
- std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
34
- char** service_config_json, int query_timeout_ms,
35
- std::shared_ptr<grpc_core::WorkSerializer> work_serializer) {
36
- return NULL;
37
- }
38
-
39
- grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
40
- const char* dns_server, const char* name, const char* default_port,
41
- grpc_pollset_set* interested_parties, grpc_closure* on_done,
42
- std::unique_ptr<grpc_core::ServerAddressList>* addrs,
43
- std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
44
- char** service_config_json, int query_timeout_ms,
45
- std::shared_ptr<grpc_core::WorkSerializer> work_serializer) =
46
- grpc_dns_lookup_ares_locked_impl;
47
-
48
- static void grpc_cancel_ares_request_locked_impl(grpc_ares_request* r) {}
49
-
50
- void (*grpc_cancel_ares_request_locked)(grpc_ares_request* r) =
51
- grpc_cancel_ares_request_locked_impl;
52
-
53
- grpc_error* grpc_ares_init(void) { return GRPC_ERROR_NONE; }
54
-
55
- void grpc_ares_cleanup(void) {}
56
-
57
- static void grpc_resolve_address_ares_impl(const char* name,
58
- const char* default_port,
59
- grpc_pollset_set* interested_parties,
60
- grpc_closure* on_done,
61
- grpc_resolved_addresses** addrs) {}
62
-
63
- void (*grpc_resolve_address_ares)(
64
- const char* name, const char* default_port,
65
- grpc_pollset_set* interested_parties, grpc_closure* on_done,
66
- grpc_resolved_addresses** addrs) = grpc_resolve_address_ares_impl;
67
-
68
- #endif /* GRPC_ARES != 1 */
@@ -1,355 +0,0 @@
1
- /*
2
- *
3
- * Copyright 2015 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
18
-
19
- #include <grpc/support/port_platform.h>
20
-
21
- #include "src/core/ext/filters/client_channel/resolving_lb_policy.h"
22
-
23
- #include <inttypes.h>
24
- #include <limits.h>
25
- #include <stdbool.h>
26
- #include <stdio.h>
27
- #include <string.h>
28
-
29
- #include "absl/strings/str_cat.h"
30
- #include "absl/strings/str_join.h"
31
-
32
- #include <grpc/support/alloc.h>
33
- #include <grpc/support/log.h>
34
- #include <grpc/support/string_util.h>
35
- #include <grpc/support/sync.h>
36
-
37
- #include "src/core/ext/filters/client_channel/backup_poller.h"
38
- #include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
39
- #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
40
- #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
41
- #include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
42
- #include "src/core/ext/filters/client_channel/resolver_registry.h"
43
- #include "src/core/ext/filters/client_channel/retry_throttle.h"
44
- #include "src/core/ext/filters/client_channel/server_address.h"
45
- #include "src/core/ext/filters/client_channel/service_config.h"
46
- #include "src/core/ext/filters/client_channel/subchannel.h"
47
- #include "src/core/ext/filters/deadline/deadline_filter.h"
48
- #include "src/core/lib/backoff/backoff.h"
49
- #include "src/core/lib/channel/channel_args.h"
50
- #include "src/core/lib/channel/connected_channel.h"
51
- #include "src/core/lib/channel/status_util.h"
52
- #include "src/core/lib/gpr/string.h"
53
- #include "src/core/lib/gprpp/manual_constructor.h"
54
- #include "src/core/lib/gprpp/sync.h"
55
- #include "src/core/lib/iomgr/iomgr.h"
56
- #include "src/core/lib/iomgr/polling_entity.h"
57
- #include "src/core/lib/profiling/timers.h"
58
- #include "src/core/lib/slice/slice_internal.h"
59
- #include "src/core/lib/slice/slice_string_helpers.h"
60
- #include "src/core/lib/surface/channel.h"
61
- #include "src/core/lib/transport/connectivity_state.h"
62
- #include "src/core/lib/transport/error_utils.h"
63
- #include "src/core/lib/transport/metadata.h"
64
- #include "src/core/lib/transport/metadata_batch.h"
65
- #include "src/core/lib/transport/static_metadata.h"
66
- #include "src/core/lib/transport/status_metadata.h"
67
-
68
- namespace grpc_core {
69
-
70
- //
71
- // ResolvingLoadBalancingPolicy::ResolverResultHandler
72
- //
73
-
74
- class ResolvingLoadBalancingPolicy::ResolverResultHandler
75
- : public Resolver::ResultHandler {
76
- public:
77
- explicit ResolverResultHandler(
78
- RefCountedPtr<ResolvingLoadBalancingPolicy> parent)
79
- : parent_(std::move(parent)) {}
80
-
81
- ~ResolverResultHandler() override {
82
- if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
83
- gpr_log(GPR_INFO, "resolving_lb=%p: resolver shutdown complete",
84
- parent_.get());
85
- }
86
- }
87
-
88
- void ReturnResult(Resolver::Result result) override {
89
- parent_->OnResolverResultChangedLocked(std::move(result));
90
- }
91
-
92
- void ReturnError(grpc_error* error) override {
93
- parent_->OnResolverError(error);
94
- }
95
-
96
- private:
97
- RefCountedPtr<ResolvingLoadBalancingPolicy> parent_;
98
- };
99
-
100
- //
101
- // ResolvingLoadBalancingPolicy::ResolvingControlHelper
102
- //
103
-
104
- class ResolvingLoadBalancingPolicy::ResolvingControlHelper
105
- : public LoadBalancingPolicy::ChannelControlHelper {
106
- public:
107
- explicit ResolvingControlHelper(
108
- RefCountedPtr<ResolvingLoadBalancingPolicy> parent)
109
- : parent_(std::move(parent)) {}
110
-
111
- RefCountedPtr<SubchannelInterface> CreateSubchannel(
112
- ServerAddress address, const grpc_channel_args& args) override {
113
- if (parent_->resolver_ == nullptr) return nullptr; // Shutting down.
114
- return parent_->channel_control_helper()->CreateSubchannel(
115
- std::move(address), args);
116
- }
117
-
118
- void UpdateState(grpc_connectivity_state state, const absl::Status& status,
119
- std::unique_ptr<SubchannelPicker> picker) override {
120
- if (parent_->resolver_ == nullptr) return; // Shutting down.
121
- parent_->channel_control_helper()->UpdateState(state, status,
122
- std::move(picker));
123
- }
124
-
125
- void RequestReresolution() override {
126
- if (parent_->resolver_ == nullptr) return; // Shutting down.
127
- if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
128
- gpr_log(GPR_INFO, "resolving_lb=%p: started name re-resolving",
129
- parent_.get());
130
- }
131
- parent_->resolver_->RequestReresolutionLocked();
132
- }
133
-
134
- void AddTraceEvent(TraceSeverity severity,
135
- absl::string_view message) override {
136
- if (parent_->resolver_ == nullptr) return; // Shutting down.
137
- parent_->channel_control_helper()->AddTraceEvent(severity, message);
138
- }
139
-
140
- private:
141
- RefCountedPtr<ResolvingLoadBalancingPolicy> parent_;
142
- };
143
-
144
- //
145
- // ResolvingLoadBalancingPolicy
146
- //
147
-
148
- ResolvingLoadBalancingPolicy::ResolvingLoadBalancingPolicy(
149
- Args args, TraceFlag* tracer, grpc_core::UniquePtr<char> target_uri,
150
- ChannelConfigHelper* helper)
151
- : LoadBalancingPolicy(std::move(args)),
152
- tracer_(tracer),
153
- target_uri_(std::move(target_uri)),
154
- helper_(helper) {
155
- GPR_ASSERT(helper_ != nullptr);
156
- resolver_ = ResolverRegistry::CreateResolver(
157
- target_uri_.get(), args.args, interested_parties(), work_serializer(),
158
- absl::make_unique<ResolverResultHandler>(Ref()));
159
- // Since the validity of args has been checked when create the channel,
160
- // CreateResolver() must return a non-null result.
161
- GPR_ASSERT(resolver_ != nullptr);
162
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
163
- gpr_log(GPR_INFO, "resolving_lb=%p: starting name resolution", this);
164
- }
165
- channel_control_helper()->UpdateState(GRPC_CHANNEL_CONNECTING, absl::Status(),
166
- absl::make_unique<QueuePicker>(Ref()));
167
- resolver_->StartLocked();
168
- }
169
-
170
- ResolvingLoadBalancingPolicy::~ResolvingLoadBalancingPolicy() {
171
- GPR_ASSERT(resolver_ == nullptr);
172
- GPR_ASSERT(lb_policy_ == nullptr);
173
- }
174
-
175
- void ResolvingLoadBalancingPolicy::ShutdownLocked() {
176
- if (resolver_ != nullptr) {
177
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
178
- gpr_log(GPR_INFO, "resolving_lb=%p: shutting down resolver=%p", this,
179
- resolver_.get());
180
- }
181
- resolver_.reset();
182
- if (lb_policy_ != nullptr) {
183
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
184
- gpr_log(GPR_INFO, "resolving_lb=%p: shutting down lb_policy=%p", this,
185
- lb_policy_.get());
186
- }
187
- grpc_pollset_set_del_pollset_set(lb_policy_->interested_parties(),
188
- interested_parties());
189
- lb_policy_.reset();
190
- }
191
- }
192
- }
193
-
194
- void ResolvingLoadBalancingPolicy::ExitIdleLocked() {
195
- if (lb_policy_ != nullptr) lb_policy_->ExitIdleLocked();
196
- }
197
-
198
- void ResolvingLoadBalancingPolicy::ResetBackoffLocked() {
199
- if (resolver_ != nullptr) {
200
- resolver_->ResetBackoffLocked();
201
- resolver_->RequestReresolutionLocked();
202
- }
203
- if (lb_policy_ != nullptr) lb_policy_->ResetBackoffLocked();
204
- }
205
-
206
- void ResolvingLoadBalancingPolicy::OnResolverError(grpc_error* error) {
207
- if (resolver_ == nullptr) {
208
- GRPC_ERROR_UNREF(error);
209
- return;
210
- }
211
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
212
- gpr_log(GPR_INFO, "resolving_lb=%p: resolver transient failure: %s", this,
213
- grpc_error_string(error));
214
- }
215
- // If we already have an LB policy from a previous resolution
216
- // result, then we continue to let it set the connectivity state.
217
- // Otherwise, we go into TRANSIENT_FAILURE.
218
- if (lb_policy_ == nullptr) {
219
- grpc_error* state_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
220
- "Resolver transient failure", &error, 1);
221
- helper_->ResolverTransientFailure(GRPC_ERROR_REF(state_error));
222
- channel_control_helper()->UpdateState(
223
- GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(state_error),
224
- absl::make_unique<TransientFailurePicker>(state_error));
225
- }
226
- GRPC_ERROR_UNREF(error);
227
- }
228
-
229
- void ResolvingLoadBalancingPolicy::CreateOrUpdateLbPolicyLocked(
230
- RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
231
- Resolver::Result result) {
232
- // Construct update.
233
- UpdateArgs update_args;
234
- update_args.addresses = std::move(result.addresses);
235
- update_args.config = std::move(lb_policy_config);
236
- // Remove the config selector from channel args so that we're not holding
237
- // unnecessary refs that cause it to be destroyed somewhere other than in the
238
- // WorkSerializer.
239
- const char* arg_name = GRPC_ARG_CONFIG_SELECTOR;
240
- update_args.args =
241
- grpc_channel_args_copy_and_remove(result.args, &arg_name, 1);
242
- // Create policy if needed.
243
- if (lb_policy_ == nullptr) {
244
- lb_policy_ = CreateLbPolicyLocked(*update_args.args);
245
- }
246
- // Update the policy.
247
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
248
- gpr_log(GPR_INFO, "resolving_lb=%p: Updating child policy %p", this,
249
- lb_policy_.get());
250
- }
251
- lb_policy_->UpdateLocked(std::move(update_args));
252
- }
253
-
254
- // Creates a new LB policy.
255
- OrphanablePtr<LoadBalancingPolicy>
256
- ResolvingLoadBalancingPolicy::CreateLbPolicyLocked(
257
- const grpc_channel_args& args) {
258
- LoadBalancingPolicy::Args lb_policy_args;
259
- lb_policy_args.work_serializer = work_serializer();
260
- lb_policy_args.channel_control_helper =
261
- absl::make_unique<ResolvingControlHelper>(Ref());
262
- lb_policy_args.args = &args;
263
- OrphanablePtr<LoadBalancingPolicy> lb_policy =
264
- MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args), tracer_);
265
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
266
- gpr_log(GPR_INFO, "resolving_lb=%p: created new LB policy %p", this,
267
- lb_policy.get());
268
- }
269
- grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
270
- interested_parties());
271
- return lb_policy;
272
- }
273
-
274
- void ResolvingLoadBalancingPolicy::MaybeAddTraceMessagesForAddressChangesLocked(
275
- bool resolution_contains_addresses, TraceStringVector* trace_strings) {
276
- if (!resolution_contains_addresses &&
277
- previous_resolution_contained_addresses_) {
278
- trace_strings->push_back("Address list became empty");
279
- } else if (resolution_contains_addresses &&
280
- !previous_resolution_contained_addresses_) {
281
- trace_strings->push_back("Address list became non-empty");
282
- }
283
- previous_resolution_contained_addresses_ = resolution_contains_addresses;
284
- }
285
-
286
- void ResolvingLoadBalancingPolicy::ConcatenateAndAddChannelTraceLocked(
287
- const TraceStringVector& trace_strings) const {
288
- if (!trace_strings.empty()) {
289
- std::string message =
290
- absl::StrCat("Resolution event: ", absl::StrJoin(trace_strings, ", "));
291
- channel_control_helper()->AddTraceEvent(ChannelControlHelper::TRACE_INFO,
292
- message);
293
- }
294
- }
295
-
296
- void ResolvingLoadBalancingPolicy::OnResolverResultChangedLocked(
297
- Resolver::Result result) {
298
- // Handle race conditions.
299
- if (resolver_ == nullptr) return;
300
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
301
- gpr_log(GPR_INFO, "resolving_lb=%p: got resolver result", this);
302
- }
303
- // We only want to trace the address resolution in the follow cases:
304
- // (a) Address resolution resulted in service config change.
305
- // (b) Address resolution that causes number of backends to go from
306
- // zero to non-zero.
307
- // (c) Address resolution that causes number of backends to go from
308
- // non-zero to zero.
309
- // (d) Address resolution that causes a new LB policy to be created.
310
- //
311
- // We track a list of strings to eventually be concatenated and traced.
312
- TraceStringVector trace_strings;
313
- MaybeAddTraceMessagesForAddressChangesLocked(!result.addresses.empty(),
314
- &trace_strings);
315
- // The result of grpc_error_string() is owned by the error itself.
316
- // We're storing that string in trace_strings, so we need to make sure
317
- // that the error lives until we're done with the string.
318
- grpc_error* service_config_error =
319
- GRPC_ERROR_REF(result.service_config_error);
320
- if (service_config_error != GRPC_ERROR_NONE) {
321
- trace_strings.push_back(grpc_error_string(service_config_error));
322
- }
323
- // Choose the service config.
324
- ChannelConfigHelper::ChooseServiceConfigResult service_config_result;
325
- if (helper_ != nullptr) {
326
- service_config_result = helper_->ChooseServiceConfig(result);
327
- } else {
328
- service_config_result.lb_policy_config = child_lb_config_;
329
- }
330
- if (service_config_result.no_valid_service_config) {
331
- // We received an invalid service config and we don't have a
332
- // previous service config to fall back to.
333
- OnResolverError(GRPC_ERROR_REF(service_config_error));
334
- trace_strings.push_back("no valid service config");
335
- } else {
336
- // Create or update LB policy, as needed.
337
- CreateOrUpdateLbPolicyLocked(
338
- std::move(service_config_result.lb_policy_config), std::move(result));
339
- if (service_config_result.service_config_changed) {
340
- // Tell channel to start using new service config for calls.
341
- // This needs to happen after the LB policy has been updated, since
342
- // the ConfigSelector may need the LB policy to know about new
343
- // destinations before it can send RPCs to those destinations.
344
- if (helper_ != nullptr) helper_->StartUsingServiceConfigForCalls();
345
- // TODO(ncteisen): might be worth somehow including a snippet of the
346
- // config in the trace, at the risk of bloating the trace logs.
347
- trace_strings.push_back("Service config changed");
348
- }
349
- }
350
- // Add channel trace event.
351
- ConcatenateAndAddChannelTraceLocked(trace_strings);
352
- GRPC_ERROR_UNREF(service_config_error);
353
- }
354
-
355
- } // namespace grpc_core
@@ -1,138 +0,0 @@
1
- /*
2
- *
3
- * Copyright 2018 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
18
-
19
- #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVING_LB_POLICY_H
20
- #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVING_LB_POLICY_H
21
-
22
- #include <grpc/support/port_platform.h>
23
-
24
- #include "absl/container/inlined_vector.h"
25
-
26
- #include "src/core/ext/filters/client_channel/config_selector.h"
27
- #include "src/core/ext/filters/client_channel/lb_policy.h"
28
- #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
29
- #include "src/core/ext/filters/client_channel/resolver.h"
30
- #include "src/core/lib/channel/channel_args.h"
31
- #include "src/core/lib/channel/channel_stack.h"
32
- #include "src/core/lib/debug/trace.h"
33
- #include "src/core/lib/gprpp/orphanable.h"
34
- #include "src/core/lib/iomgr/call_combiner.h"
35
- #include "src/core/lib/iomgr/closure.h"
36
- #include "src/core/lib/iomgr/polling_entity.h"
37
- #include "src/core/lib/iomgr/pollset_set.h"
38
- #include "src/core/lib/transport/connectivity_state.h"
39
- #include "src/core/lib/transport/metadata_batch.h"
40
-
41
- namespace grpc_core {
42
-
43
- // An LB policy that wraps a resolver and a child LB policy to make use
44
- // of the addresses returned by the resolver.
45
- //
46
- // When used in the client_channel code, the resolver will attempt to
47
- // fetch the service config, and the child LB policy name and config
48
- // will be determined based on the service config.
49
- //
50
- // When used in an LB policy implementation that needs to do another
51
- // round of resolution before creating a child policy, the resolver does
52
- // not fetch the service config, and the caller must pre-determine the
53
- // child LB policy and config to use.
54
- class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
55
- public:
56
- class ChannelConfigHelper {
57
- public:
58
- struct ChooseServiceConfigResult {
59
- // Set to true if the service config has changed since the last result.
60
- bool service_config_changed = false;
61
- // Set to true if we don't have a valid service config to use.
62
- // This tells the ResolvingLoadBalancingPolicy to put the channel
63
- // into TRANSIENT_FAILURE.
64
- bool no_valid_service_config = false;
65
- // The LB policy config to use.
66
- RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config;
67
- };
68
-
69
- virtual ~ChannelConfigHelper() = default;
70
-
71
- // Chooses the service config for the channel.
72
- virtual ChooseServiceConfigResult ChooseServiceConfig(
73
- const Resolver::Result& result) = 0;
74
-
75
- // Starts using the service config for calls.
76
- virtual void StartUsingServiceConfigForCalls() = 0;
77
-
78
- // Indicates a resolver transient failure.
79
- virtual void ResolverTransientFailure(grpc_error* error) = 0;
80
- };
81
-
82
- ResolvingLoadBalancingPolicy(Args args, TraceFlag* tracer,
83
- grpc_core::UniquePtr<char> target_uri,
84
- ChannelConfigHelper* helper);
85
-
86
- const char* name() const override { return "resolving_lb"; }
87
-
88
- // No-op -- should never get updates from the channel.
89
- // TODO(roth): Need to support updating child LB policy's config for xds
90
- // use case.
91
- void UpdateLocked(UpdateArgs /*args*/) override {}
92
-
93
- void ExitIdleLocked() override;
94
-
95
- void ResetBackoffLocked() override;
96
-
97
- private:
98
- using TraceStringVector = absl::InlinedVector<const char*, 3>;
99
-
100
- class ResolverResultHandler;
101
- class ResolvingControlHelper;
102
-
103
- ~ResolvingLoadBalancingPolicy() override;
104
-
105
- void ShutdownLocked() override;
106
-
107
- void OnResolverError(grpc_error* error);
108
- void CreateOrUpdateLbPolicyLocked(
109
- RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
110
- Resolver::Result result);
111
- OrphanablePtr<LoadBalancingPolicy> CreateLbPolicyLocked(
112
- const grpc_channel_args& args);
113
- void MaybeAddTraceMessagesForAddressChangesLocked(
114
- bool resolution_contains_addresses, TraceStringVector* trace_strings);
115
- void ConcatenateAndAddChannelTraceLocked(
116
- const TraceStringVector& trace_strings) const;
117
- void OnResolverResultChangedLocked(Resolver::Result result);
118
-
119
- // Passed in from caller at construction time.
120
- TraceFlag* tracer_;
121
- grpc_core::UniquePtr<char> target_uri_;
122
- ChannelConfigHelper* helper_;
123
-
124
- // Resolver and associated state.
125
- OrphanablePtr<Resolver> resolver_;
126
- bool previous_resolution_contained_addresses_ = false;
127
-
128
- // Determined by resolver results.
129
- grpc_core::UniquePtr<char> child_policy_name_;
130
- RefCountedPtr<LoadBalancingPolicy::Config> child_lb_config_;
131
-
132
- // Child LB policy.
133
- OrphanablePtr<LoadBalancingPolicy> lb_policy_;
134
- };
135
-
136
- } // namespace grpc_core
137
-
138
- #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVING_LB_POLICY_H */