diff --git a/third_party/BUILD b/third_party/BUILD index dea0fa904d6f9a..d45f5ecf97e5cb 100644 --- a/third_party/BUILD +++ b/third_party/BUILD @@ -16,6 +16,7 @@ filegroup( "//third_party/css/font_awesome:srcs", "//third_party/def_parser:srcs", "//third_party/grpc:srcs", + "//third_party/grpc-java:srcs", "//third_party/ijar:srcs", "//third_party/jarjar:srcs", "//third_party/java/android_databinding:srcs", @@ -588,12 +589,12 @@ UNNECESSARY_DYNAMIC_LIBRARIES = select({ genrule( name = "filter_netty_dynamic_libs", srcs = select({ - "//src/conditions:darwin_arm64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-aarch_64.jar"], - "//src/conditions:darwin_x86_64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-x86_64.jar"], - "//src/conditions:linux_aarch64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-aarch_64.jar"], - "//src/conditions:linux_x86_64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-x86_64.jar"], - "//src/conditions:windows": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-windows-x86_64.jar"], - "//conditions:default": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final.jar"], + "//src/conditions:darwin_arm64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-aarch_64.jar"], + "//src/conditions:darwin_x86_64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-x86_64.jar"], + "//src/conditions:linux_aarch64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-aarch_64.jar"], + "//src/conditions:linux_x86_64": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-x86_64.jar"], + "//src/conditions:windows": ["netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-windows-x86_64.jar"], + "//conditions:default": [], }), outs = ["netty_tcnative/netty-tcnative-filtered.jar"], cmd = "cp $< $@ && " + @@ -606,38 +607,43 @@ distrib_java_import( name = "netty", enable_distributions = ["debian"], jars = [ - "netty/netty-buffer-4.1.69.Final.jar", - "netty/netty-codec-4.1.69.Final.jar", - "netty/netty-codec-http2-4.1.69.Final.jar", - "netty/netty-codec-http-4.1.69.Final.jar", - "netty/netty-common-4.1.69.Final.jar", - "netty/netty-handler-4.1.69.Final.jar", - "netty/netty-handler-proxy-4.1.69.Final.jar", - "netty/netty-resolver-4.1.69.Final.jar", - "netty/netty-resolver-dns-4.1.69.Final.jar", - "netty/netty-transport-4.1.69.Final.jar", - "netty/netty-transport-sctp-4.1.69.Final.jar", + "netty/netty-buffer-4.1.75.Final.jar", + "netty/netty-codec-4.1.75.Final.jar", + "netty/netty-codec-http2-4.1.75.Final.jar", + "netty/netty-codec-http-4.1.75.Final.jar", + "netty/netty-common-4.1.75.Final.jar", + "netty/netty-handler-4.1.75.Final.jar", + "netty/netty-handler-proxy-4.1.75.Final.jar", + "netty/netty-resolver-4.1.75.Final.jar", + "netty/netty-resolver-dns-4.1.75.Final.jar", + "netty/netty-transport-4.1.75.Final.jar", + "netty/netty-transport-classes-epoll-4.1.75.Final.jar", + "netty/netty-transport-classes-kqueue-4.1.75.Final.jar", + "netty/netty-transport-sctp-4.1.75.Final.jar", ] + select({ - "//src/conditions:darwin_arm64": ["netty/netty-transport-native-unix-common-4.1.69.Final-osx-aarch_64.jar"], - "//src/conditions:darwin_x86_64": ["netty/netty-transport-native-unix-common-4.1.69.Final-osx-x86_64.jar"], - "//src/conditions:linux_aarch64": ["netty/netty-transport-native-unix-common-4.1.69.Final-linux-aarch_64.jar"], - "//src/conditions:linux_x86_64": ["netty/netty-transport-native-unix-common-4.1.69.Final-linux-x86_64.jar"], - "//conditions:default": ["netty/netty-transport-native-unix-common-4.1.69.Final.jar"], + "//src/conditions:darwin_arm64": ["netty/netty-transport-native-unix-common-4.1.75.Final-osx-aarch_64.jar"], + "//src/conditions:darwin_x86_64": ["netty/netty-transport-native-unix-common-4.1.75.Final-osx-x86_64.jar"], + "//src/conditions:linux_aarch64": ["netty/netty-transport-native-unix-common-4.1.75.Final-linux-aarch_64.jar"], + "//src/conditions:linux_x86_64": ["netty/netty-transport-native-unix-common-4.1.75.Final-linux-x86_64.jar"], + "//conditions:default": ["netty/netty-transport-native-unix-common-4.1.75.Final.jar"], }) + select({ - "//src/conditions:darwin_arm64": ["netty/netty-transport-native-kqueue-4.1.69.Final-osx-aarch_64.jar"], - "//src/conditions:darwin_x86_64": ["netty/netty-transport-native-kqueue-4.1.69.Final-osx-x86_64.jar"], - "//conditions:default": ["netty/netty-transport-native-kqueue-4.1.69.Final.jar"], + "//src/conditions:darwin_arm64": ["netty/netty-transport-native-kqueue-4.1.75.Final-osx-aarch_64.jar"], + "//src/conditions:darwin_x86_64": ["netty/netty-transport-native-kqueue-4.1.75.Final-osx-x86_64.jar"], + "//conditions:default": [], }) + select({ - "//src/conditions:linux_aarch64": ["netty/netty-transport-native-epoll-4.1.69.Final-linux-aarch_64.jar"], - "//src/conditions:linux_x86_64": ["netty/netty-transport-native-epoll-4.1.69.Final-linux-x86_64.jar"], - "//conditions:default": ["netty/netty-transport-native-epoll-4.1.69.Final.jar"], + "//src/conditions:linux_aarch64": ["netty/netty-transport-native-epoll-4.1.75.Final-linux-aarch_64.jar"], + "//src/conditions:linux_x86_64": ["netty/netty-transport-native-epoll-4.1.75.Final-linux-x86_64.jar"], + "//conditions:default": [], }), ) distrib_java_import( name = "netty_tcnative", enable_distributions = ["debian"], - jars = [":netty_tcnative/netty-tcnative-filtered.jar"], + jars = [ + "netty_tcnative/netty-tcnative-classes-2.0.51.Final.jar", + ":netty_tcnative/netty-tcnative-filtered.jar", + ], ) distrib_java_import( diff --git a/third_party/grpc-java/BUILD b/third_party/grpc-java/BUILD new file mode 100644 index 00000000000000..dddcc18d519c22 --- /dev/null +++ b/third_party/grpc-java/BUILD @@ -0,0 +1,67 @@ +# gRPC Bazel BUILD file. +# +# Copyright 2016 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//tools/distributions:distribution_rules.bzl", "distrib_cc_binary", "distrib_jar_filegroup", "distrib_java_import") + +licenses(["notice"]) # Apache v2 + +package(default_visibility = ["//visibility:public"]) + +filegroup( + name = "srcs", + srcs = glob(["**"]), +) + +distrib_jar_filegroup( + name = "bootstrap-grpc-jars", + srcs = [ + "grpc-api-1.45.1.jar", + "grpc-auth-1.45.1.jar", + "grpc-context-1.45.1.jar", + "grpc-core-1.45.1.jar", + "grpc-netty-1.45.1.jar", + "grpc-protobuf-1.45.1.jar", + "grpc-protobuf-lite-1.45.1.jar", + "grpc-stub-1.45.1.jar", + ], + enable_distributions = ["debian"], +) + +distrib_java_import( + name = "grpc-jar", + enable_distributions = ["debian"], + jars = [":bootstrap-grpc-jars"], + runtime_deps = [ + "//third_party:netty", + "//third_party:opencensus-api", + "//third_party:perfmark-api", + ], + deps = [ + "//third_party:guava", + ], +) + +distrib_cc_binary( + name = "grpc-java-plugin", + srcs = [ + "compiler/src/java_plugin/cpp/java_generator.cpp", + "compiler/src/java_plugin/cpp/java_generator.h", + "compiler/src/java_plugin/cpp/java_plugin.cpp", + ], + copts = ["-w"], + enable_distributions = ["debian"], + deps = ["//third_party/protobuf:protoc_lib"], +) diff --git a/third_party/grpc-java/LICENSE b/third_party/grpc-java/LICENSE new file mode 100644 index 00000000000000..d645695673349e --- /dev/null +++ b/third_party/grpc-java/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/grpc-java/NOTICE.txt b/third_party/grpc-java/NOTICE.txt new file mode 100644 index 00000000000000..f70c5620cf75a7 --- /dev/null +++ b/third_party/grpc-java/NOTICE.txt @@ -0,0 +1,62 @@ +Copyright 2014 The gRPC Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +----------------------------------------------------------------------- + +This product contains a modified portion of 'OkHttp', an open source +HTTP & SPDY client for Android and Java applications, which can be obtained +at: + + * LICENSE: + * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) + * HOMEPAGE: + * https://github.com/square/okhttp + * LOCATION_IN_GRPC: + * okhttp/third_party/okhttp + +This product contains a modified portion of 'Envoy', an open source +cloud-native high-performance edge/middle/service proxy, which can be +obtained at: + + * LICENSE: + * xds/third_party/envoy/LICENSE (Apache License 2.0) + * NOTICE: + * xds/third_party/envoy/NOTICE + * HOMEPAGE: + * https://www.envoyproxy.io + * LOCATION_IN_GRPC: + * xds/third_party/envoy + +This product contains a modified portion of 'protoc-gen-validate (PGV)', +an open source protoc plugin to generate polyglot message validators, +which can be obtained at: + + * LICENSE: + * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) + * NOTICE: + * xds/third_party/protoc-gen-validate/NOTICE + * HOMEPAGE: + * https://github.com/envoyproxy/protoc-gen-validate + * LOCATION_IN_GRPC: + * xds/third_party/protoc-gen-validate + +This product contains a modified portion of 'udpa', +an open source universal data plane API, which can be obtained at: + + * LICENSE: + * xds/third_party/udpa/LICENSE (Apache License 2.0) + * HOMEPAGE: + * https://github.com/cncf/udpa + * LOCATION_IN_GRPC: + * xds/third_party/udpa diff --git a/third_party/grpc-java/README.bazel.md b/third_party/grpc-java/README.bazel.md new file mode 100644 index 00000000000000..cb5834d1ad2c68 --- /dev/null +++ b/third_party/grpc-java/README.bazel.md @@ -0,0 +1,17 @@ +# Bazel + Java gRPC + +This directory contains the Java gRPC libraries needed by Bazel, sourced from +. + +| Repo | Current | +| ---------------- | --------- | +| `grpc/grpc-java` | `v1.45.1` | + +## Updating `third_party/grpc/grpc-java` + +This requires 1 pull request which does: + +- Update the Java plugin: + 1. Checkout tag `v${GRPC_VERSION_NUM}` from + 2. `cp -R /compiler/src/java_plugin third_party/grpc-java/compiler/src` +- Update the required jars by [retrieving the version from Maven central](https://repo1.maven.org/maven2/io/grpc/) diff --git a/third_party/grpc-java/README.md b/third_party/grpc-java/README.md new file mode 100644 index 00000000000000..e6c06bde2366b7 --- /dev/null +++ b/third_party/grpc-java/README.md @@ -0,0 +1,253 @@ +gRPC-Java - An RPC library and framework +======================================== + +gRPC-Java works with JDK 7. gRPC-Java clients are supported on Android API +levels 16 and up (Jelly Bean and later). Deploying gRPC servers on an Android +device is not supported. + +TLS usage typically requires using Java 8, or Play Services Dynamic Security +Provider on Android. Please see the [Security Readme](SECURITY.md). + + + + + + + + + + +
Homepage:grpc.io
Mailing List:grpc-io@googlegroups.com
+ +[![Join the chat at https://gitter.im/grpc/grpc](https://badges.gitter.im/grpc/grpc.svg)](https://gitter.im/grpc/grpc?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Build Status](https://travis-ci.org/grpc/grpc-java.svg?branch=master)](https://travis-ci.org/grpc/grpc-java) +[![Line Coverage Status](https://coveralls.io/repos/grpc/grpc-java/badge.svg?branch=master&service=github)](https://coveralls.io/github/grpc/grpc-java?branch=master) +[![Branch-adjusted Line Coverage Status](https://codecov.io/gh/grpc/grpc-java/branch/master/graph/badge.svg)](https://codecov.io/gh/grpc/grpc-java) + +Getting Started +--------------- + +For a guided tour, take a look at the [quick start +guide](https://grpc.io/docs/languages/java/quickstart) or the more explanatory [gRPC +basics](https://grpc.io/docs/languages/java/basics). + +The [examples](https://github.com/grpc/grpc-java/tree/v1.41.0/examples) and the +[Android example](https://github.com/grpc/grpc-java/tree/v1.41.0/examples/android) +are standalone projects that showcase the usage of gRPC. + +Download +-------- + +Download [the JARs][]. Or for Maven with non-Android, add to your `pom.xml`: +```xml + + io.grpc + grpc-netty-shaded + 1.41.0 + + + io.grpc + grpc-protobuf + 1.41.0 + + + io.grpc + grpc-stub + 1.41.0 + + + org.apache.tomcat + annotations-api + 6.0.53 + provided + +``` + +Or for Gradle with non-Android, add to your dependencies: +```gradle +implementation 'io.grpc:grpc-netty-shaded:1.41.0' +implementation 'io.grpc:grpc-protobuf:1.41.0' +implementation 'io.grpc:grpc-stub:1.41.0' +compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // necessary for Java 9+ +``` + +For Android client, use `grpc-okhttp` instead of `grpc-netty-shaded` and +`grpc-protobuf-lite` instead of `grpc-protobuf`: +```gradle +implementation 'io.grpc:grpc-okhttp:1.41.0' +implementation 'io.grpc:grpc-protobuf-lite:1.41.0' +implementation 'io.grpc:grpc-stub:1.41.0' +compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // necessary for Java 9+ +``` + +[the JARs]: +https://search.maven.org/search?q=g:io.grpc%20AND%20v:1.41.0 + +Development snapshots are available in [Sonatypes's snapshot +repository](https://oss.sonatype.org/content/repositories/snapshots/). + +Generated Code +-------------- + +For protobuf-based codegen, you can put your proto files in the `src/main/proto` +and `src/test/proto` directories along with an appropriate plugin. + +For protobuf-based codegen integrated with the Maven build system, you can use +[protobuf-maven-plugin][] (Eclipse and NetBeans users should also look at +`os-maven-plugin`'s +[IDE documentation](https://github.com/trustin/os-maven-plugin#issues-with-eclipse-m2e-or-other-ides)): +```xml + + + + kr.motd.maven + os-maven-plugin + 1.6.2 + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.6.1 + + com.google.protobuf:protoc:3.17.3:exe:${os.detected.classifier} + grpc-java + io.grpc:protoc-gen-grpc-java:1.41.0:exe:${os.detected.classifier} + + + + + compile + compile-custom + + + + + + +``` + +[protobuf-maven-plugin]: https://www.xolstice.org/protobuf-maven-plugin/ + +For non-Android protobuf-based codegen integrated with the Gradle build system, +you can use [protobuf-gradle-plugin][]: +```gradle +plugins { + id 'com.google.protobuf' version '0.8.17' +} + +protobuf { + protoc { + artifact = "com.google.protobuf:protoc:3.17.3" + } + plugins { + grpc { + artifact = 'io.grpc:protoc-gen-grpc-java:1.41.0' + } + } + generateProtoTasks { + all()*.plugins { + grpc {} + } + } +} +``` + +[protobuf-gradle-plugin]: https://github.com/google/protobuf-gradle-plugin + +The prebuilt protoc-gen-grpc-java binary uses glibc on Linux. If you are +compiling on Alpine Linux, you may want to use the [Alpine grpc-java package][] +which uses musl instead. + +[Alpine grpc-java package]: https://pkgs.alpinelinux.org/package/edge/testing/x86_64/grpc-java + +For Android protobuf-based codegen integrated with the Gradle build system, also +use protobuf-gradle-plugin but specify the 'lite' options: + +```gradle +plugins { + id 'com.google.protobuf' version '0.8.17' +} + +protobuf { + protoc { + artifact = "com.google.protobuf:protoc:3.17.3" + } + plugins { + grpc { + artifact = 'io.grpc:protoc-gen-grpc-java:1.41.0' + } + } + generateProtoTasks { + all().each { task -> + task.builtins { + java { option 'lite' } + } + task.plugins { + grpc { option 'lite' } + } + } + } +} + +``` + +API Stability +------------- + +APIs annotated with `@Internal` are for internal use by the gRPC library and +should not be used by gRPC users. APIs annotated with `@ExperimentalApi` are +subject to change in future releases, and library code that other projects +may depend on should not use these APIs. + +We recommend using the +[grpc-java-api-checker](https://github.com/grpc/grpc-java-api-checker) +(an [Error Prone](https://github.com/google/error-prone) plugin) +to check for usages of `@ExperimentalApi` and `@Internal` in any library code +that depends on gRPC. It may also be used to check for `@Internal` usage or +unintended `@ExperimentalApi` consumption in non-library code. + +How to Build +------------ + +If you are making changes to gRPC-Java, see the [compiling +instructions](COMPILING.md). + +High-level Components +--------------------- + +At a high level there are three distinct layers to the library: *Stub*, +*Channel*, and *Transport*. + +### Stub + +The Stub layer is what is exposed to most developers and provides type-safe +bindings to whatever datamodel/IDL/interface you are adapting. gRPC comes with +a [plugin](https://github.com/google/grpc-java/blob/master/compiler) to the +protocol-buffers compiler that generates Stub interfaces out of `.proto` files, +but bindings to other datamodel/IDL are easy and encouraged. + +### Channel + +The Channel layer is an abstraction over Transport handling that is suitable for +interception/decoration and exposes more behavior to the application than the +Stub layer. It is intended to be easy for application frameworks to use this +layer to address cross-cutting concerns such as logging, monitoring, auth, etc. + +### Transport + +The Transport layer does the heavy lifting of putting and taking bytes off the +wire. The interfaces to it are abstract just enough to allow plugging in of +different implementations. Note the transport layer API is considered internal +to gRPC and has weaker API guarantees than the core API under package `io.grpc`. + +gRPC comes with three Transport implementations: + +1. The Netty-based transport is the main transport implementation based on + [Netty](https://netty.io). It is for both the client and the server. +2. The OkHttp-based transport is a lightweight transport based on + [OkHttp](https://square.github.io/okhttp/). It is mainly for use on Android + and is for client only. +3. The in-process transport is for when a server is in the same process as the + client. It is useful for testing, while also being safe for production use. diff --git a/third_party/grpc/compiler/src/java_plugin/cpp/java_generator.cpp b/third_party/grpc-java/compiler/src/java_plugin/cpp/java_generator.cpp similarity index 95% rename from third_party/grpc/compiler/src/java_plugin/cpp/java_generator.cpp rename to third_party/grpc-java/compiler/src/java_plugin/cpp/java_generator.cpp index facb95de145cef..6882940378f0fc 100644 --- a/third_party/grpc/compiler/src/java_plugin/cpp/java_generator.cpp +++ b/third_party/grpc-java/compiler/src/java_plugin/cpp/java_generator.cpp @@ -713,11 +713,13 @@ static void PrintStub( if (client_streaming) { p->Print( *vars, - "return asyncUnimplementedStreamingCall($method_method_name$(), responseObserver);\n"); + "return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(" + "$method_method_name$(), responseObserver);\n"); } else { p->Print( *vars, - "asyncUnimplementedUnaryCall($method_method_name$(), responseObserver);\n"); + "io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(" + "$method_method_name$(), responseObserver);\n"); } break; default: @@ -729,10 +731,10 @@ static void PrintStub( GRPC_CODEGEN_CHECK(!client_streaming) << "Blocking client streaming interface is not available"; if (server_streaming) { - (*vars)["calls_method"] = "blockingServerStreamingCall"; + (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.blockingServerStreamingCall"; (*vars)["params"] = "request"; } else { - (*vars)["calls_method"] = "blockingUnaryCall"; + (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.blockingUnaryCall"; (*vars)["params"] = "request"; } p->Print( @@ -743,18 +745,18 @@ static void PrintStub( case ASYNC_CALL: if (server_streaming) { if (client_streaming) { - (*vars)["calls_method"] = "asyncBidiStreamingCall"; + (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncBidiStreamingCall"; (*vars)["params"] = "responseObserver"; } else { - (*vars)["calls_method"] = "asyncServerStreamingCall"; + (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncServerStreamingCall"; (*vars)["params"] = "request, responseObserver"; } } else { if (client_streaming) { - (*vars)["calls_method"] = "asyncClientStreamingCall"; + (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncClientStreamingCall"; (*vars)["params"] = "responseObserver"; } else { - (*vars)["calls_method"] = "asyncUnaryCall"; + (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncUnaryCall"; (*vars)["params"] = "request, responseObserver"; } } @@ -769,7 +771,7 @@ static void PrintStub( << "Future interface doesn't support streaming. " << "client_streaming=" << client_streaming << ", " << "server_streaming=" << server_streaming; - (*vars)["calls_method"] = "futureUnaryCall"; + (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.futureUnaryCall"; p->Print( *vars, "return $calls_method$(\n" @@ -1031,15 +1033,15 @@ static void PrintBindServiceMethodBody(const ServiceDescriptor* service, bool server_streaming = method->server_streaming(); if (client_streaming) { if (server_streaming) { - (*vars)["calls_method"] = "asyncBidiStreamingCall"; + (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncBidiStreamingCall"; } else { - (*vars)["calls_method"] = "asyncClientStreamingCall"; + (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncClientStreamingCall"; } } else { if (server_streaming) { - (*vars)["calls_method"] = "asyncServerStreamingCall"; + (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncServerStreamingCall"; } else { - (*vars)["calls_method"] = "asyncUnaryCall"; + (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncUnaryCall"; } } p->Print(*vars, ".addMethod(\n"); @@ -1084,7 +1086,8 @@ static void PrintService(const ServiceDescriptor* service, *vars, "@$Generated$(\n" " value = \"by gRPC proto compiler$grpc_version$\",\n" - " comments = \"Source: $file_name$\")\n"); + " comments = \"Source: $file_name$\")\n" + "@$GrpcGenerated$\n"); if (service->options().deprecated()) { p->Print(*vars, "@$Deprecated$\n"); @@ -1160,33 +1163,7 @@ static void PrintService(const ServiceDescriptor* service, void PrintImports(Printer* p) { p->Print( "import static " - "io.grpc.MethodDescriptor.generateFullMethodName;\n" - "import static " - "io.grpc.stub.ClientCalls.asyncBidiStreamingCall;\n" - "import static " - "io.grpc.stub.ClientCalls.asyncClientStreamingCall;\n" - "import static " - "io.grpc.stub.ClientCalls.asyncServerStreamingCall;\n" - "import static " - "io.grpc.stub.ClientCalls.asyncUnaryCall;\n" - "import static " - "io.grpc.stub.ClientCalls.blockingServerStreamingCall;\n" - "import static " - "io.grpc.stub.ClientCalls.blockingUnaryCall;\n" - "import static " - "io.grpc.stub.ClientCalls.futureUnaryCall;\n" - "import static " - "io.grpc.stub.ServerCalls.asyncBidiStreamingCall;\n" - "import static " - "io.grpc.stub.ServerCalls.asyncClientStreamingCall;\n" - "import static " - "io.grpc.stub.ServerCalls.asyncServerStreamingCall;\n" - "import static " - "io.grpc.stub.ServerCalls.asyncUnaryCall;\n" - "import static " - "io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;\n" - "import static " - "io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;\n\n"); + "io.grpc.MethodDescriptor.generateFullMethodName;\n\n"); } void GenerateService(const ServiceDescriptor* service, @@ -1225,6 +1202,7 @@ void GenerateService(const ServiceDescriptor* service, vars["StreamObserver"] = "io.grpc.stub.StreamObserver"; vars["Iterator"] = "java.util.Iterator"; vars["Generated"] = "javax.annotation.Generated"; + vars["GrpcGenerated"] = "io.grpc.stub.annotations.GrpcGenerated"; vars["ListenableFuture"] = "com.google.common.util.concurrent.ListenableFuture"; diff --git a/third_party/grpc/compiler/src/java_plugin/cpp/java_generator.h b/third_party/grpc-java/compiler/src/java_plugin/cpp/java_generator.h similarity index 100% rename from third_party/grpc/compiler/src/java_plugin/cpp/java_generator.h rename to third_party/grpc-java/compiler/src/java_plugin/cpp/java_generator.h diff --git a/third_party/grpc/compiler/src/java_plugin/cpp/java_plugin.cpp b/third_party/grpc-java/compiler/src/java_plugin/cpp/java_plugin.cpp similarity index 100% rename from third_party/grpc/compiler/src/java_plugin/cpp/java_plugin.cpp rename to third_party/grpc-java/compiler/src/java_plugin/cpp/java_plugin.cpp diff --git a/third_party/grpc-java/grpc-api-1.45.1.jar b/third_party/grpc-java/grpc-api-1.45.1.jar new file mode 100644 index 00000000000000..1aadcf989e2c1e Binary files /dev/null and b/third_party/grpc-java/grpc-api-1.45.1.jar differ diff --git a/third_party/grpc-java/grpc-auth-1.45.1.jar b/third_party/grpc-java/grpc-auth-1.45.1.jar new file mode 100644 index 00000000000000..800f4d2dbaba01 Binary files /dev/null and b/third_party/grpc-java/grpc-auth-1.45.1.jar differ diff --git a/third_party/grpc-java/grpc-context-1.45.1.jar b/third_party/grpc-java/grpc-context-1.45.1.jar new file mode 100644 index 00000000000000..091429b8a03f07 Binary files /dev/null and b/third_party/grpc-java/grpc-context-1.45.1.jar differ diff --git a/third_party/grpc-java/grpc-core-1.45.1.jar b/third_party/grpc-java/grpc-core-1.45.1.jar new file mode 100644 index 00000000000000..8573983e95f22b Binary files /dev/null and b/third_party/grpc-java/grpc-core-1.45.1.jar differ diff --git a/third_party/grpc-java/grpc-netty-1.45.1.jar b/third_party/grpc-java/grpc-netty-1.45.1.jar new file mode 100644 index 00000000000000..5be81e040f5750 Binary files /dev/null and b/third_party/grpc-java/grpc-netty-1.45.1.jar differ diff --git a/third_party/grpc-java/grpc-protobuf-1.45.1.jar b/third_party/grpc-java/grpc-protobuf-1.45.1.jar new file mode 100644 index 00000000000000..21ff986051d04a Binary files /dev/null and b/third_party/grpc-java/grpc-protobuf-1.45.1.jar differ diff --git a/third_party/grpc-java/grpc-protobuf-lite-1.45.1.jar b/third_party/grpc-java/grpc-protobuf-lite-1.45.1.jar new file mode 100644 index 00000000000000..99c15a786bc423 Binary files /dev/null and b/third_party/grpc-java/grpc-protobuf-lite-1.45.1.jar differ diff --git a/third_party/grpc-java/grpc-stub-1.45.1.jar b/third_party/grpc-java/grpc-stub-1.45.1.jar new file mode 100644 index 00000000000000..e147c697086144 Binary files /dev/null and b/third_party/grpc-java/grpc-stub-1.45.1.jar differ diff --git a/third_party/grpc/BUILD b/third_party/grpc/BUILD index 09d036555fcc64..d52ecc6da5f93d 100644 --- a/third_party/grpc/BUILD +++ b/third_party/grpc/BUILD @@ -14,12 +14,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//tools/distributions:distribution_rules.bzl", "distrib_cc_binary", "distrib_jar_filegroup", "distrib_java_import") - licenses(["notice"]) # Apache v2 exports_files([ - "grpc_1.31.1.patch", "grpc_1.41.0.patch", "grpc_1.41.0.win_arm64.patch" ]) @@ -33,45 +30,22 @@ filegroup( ], ) -distrib_jar_filegroup( - name = "bootstrap-grpc-jars", - srcs = [ - "grpc-api-1.41.0.jar", - "grpc-auth-1.41.0.jar", - "grpc-context-1.41.0.jar", - "grpc-core-1.41.0.jar", - "grpc-netty-1.41.0.jar", - "grpc-protobuf-1.41.0.jar", - "grpc-protobuf-lite-1.41.0.jar", - "grpc-stub-1.41.0.jar", - ], - enable_distributions = ["debian"], +# TODO: Remove after migrating non-third-party imports to use `third_party/grpc-java` directly. +alias( + name = "bootstrap-grpc-jars", + actual = "//third_party/grpc-java:bootstrap-grpc-jars", ) -distrib_java_import( - name = "grpc-jar", - enable_distributions = ["debian"], - jars = [":bootstrap-grpc-jars"], - runtime_deps = [ - "//third_party:netty", - "//third_party:opencensus-api", - "//third_party:perfmark-api", - ], - deps = [ - "//third_party:guava", - ], +# TODO: Remove after migrating non-third-party imports to use `third_party/grpc-java` directly. +alias( + name = "grpc-jar", + actual = "//third_party/grpc-java:grpc-jar", ) -distrib_cc_binary( - name = "grpc-java-plugin", - srcs = [ - "compiler/src/java_plugin/cpp/java_generator.cpp", - "compiler/src/java_plugin/cpp/java_generator.h", - "compiler/src/java_plugin/cpp/java_plugin.cpp", - ], - copts = ["-w"], - enable_distributions = ["debian"], - deps = ["//third_party/protobuf:protoc_lib"], +# TODO: Remove after migrating non-third-party imports to use `third_party/grpc-java` directly. +alias( + name = "grpc-java-plugin", + actual = "//third_party/grpc-java:grpc-java-plugin", ) alias( diff --git a/third_party/grpc/NOTICE.txt b/third_party/grpc/NOTICE.txt index ee67bad4ba4c68..530197749e9d38 100644 --- a/third_party/grpc/NOTICE.txt +++ b/third_party/grpc/NOTICE.txt @@ -1,41 +1,13 @@ -Copyright 2014, Google Inc. All rights reserved. +Copyright 2014 gRPC authors. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. + http://www.apache.org/licenses/LICENSE-2.0 - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp \ No newline at end of file +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/third_party/grpc/PATENTS b/third_party/grpc/PATENTS deleted file mode 100644 index 619f9dbfe637f6..00000000000000 --- a/third_party/grpc/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the GRPC project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of GRPC, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of GRPC. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of GRPC or any code incorporated within this -implementation of GRPC constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of GRPC -shall terminate as of the date such litigation is filed. diff --git a/third_party/grpc/README.bazel.md b/third_party/grpc/README.bazel.md index 4798ec2e290b3f..9d94d14230f32c 100644 --- a/third_party/grpc/README.bazel.md +++ b/third_party/grpc/README.bazel.md @@ -1,30 +1,33 @@ -# How to update the C++ sources of gRPC: +# Bazel + gRPC -1. Update the gRPC definitions in WORKSPACE file, currently we use - https://github.com/grpc/grpc/archive/v1.41.0.tar.gz -2. Update the gRPC patch file if necessary, it mostly helps avoid unnecessary dependencies. -3. Update third_party/grpc/BUILD to redirect targets to @com_github_grpc_grpc if necessary. +This directory contains the gRPC libraries needed by Bazel, sourced from +. -# How to update the BUILD/bzl sources of gRPC: +| Repo | Current | +| ---------------- | --------- | +| `grpc/grpc` | `v1.41.0` | -1. `git clone http://github.com/grpc/grpc.git` in a convenient directory -2. `git checkout ` (current is `v1.41.0`, commithash `fc662b7964384b701af5bd3ce6994d2180080eb4`) -3. `mkdir -p third_party/grpc/bazel` -4. `cp /bazel/{BUILD,cc_grpc_library.bzl,generate_cc.bzl,protobuf.bzl} third_party/grpc/bazel` -5. In the `third_party/grpc` directory, apply local patches: - `patch -p3 < bazel_1.41.0.patch` +## Updating `third_party/grpc` + +This requires 3 pull requests: -# How to update the Java plugin: +1. Update `third_party/grpc` to include files from new version -1. Checkout tag `v1.41.0` from https://github.com/grpc/grpc-java -2. `cp -R /compiler/src/java_plugin third_party/grpc/compiler/src` +2. Switch `distdir_deps.bzl`, `scripts/bootstrap/compile.sh`, and any other references to new version -# How to update the Java code: +3. Remove older version from `third_party/grpc` -Download the necessary jars at version `1.41.0` from maven central. +### How to update the C++ sources of gRPC -# Submitting the change needs 3 pull requests +1. Update the gRPC patch file if necessary, it mostly helps avoid unnecessary dependencies. +2. Update `third_party/grpc/BUILD` to redirect targets to `@com_github_grpc_grpc` if necessary. +3. In a separate PR, update the gRPC definitions in the `distdir_deps.bzl` file. -1. Update third_party/grpc to include files from new version -2. Switch distdir_deps.bzl, scripts/bootstrap/compile.sh and any other references to new version -3. Remove older version from third_party/grpc +### How to update the BUILD/bzl sources of gRPC + +1. `git clone http://github.com/grpc/grpc.git` in a convenient directory +2. `git checkout v${GRPC_VERSION_NUM}` +3. `mkdir -p third_party/grpc/bazel` +4. `cp /bazel/{BUILD,cc_grpc_library.bzl,generate_cc.bzl,protobuf.bzl} third_party/grpc/bazel` +5. In the `third_party/grpc/grpc` directory, apply local patches: + `patch -p4 < bazel_${GRPC_VERSION_NUM}.patch` \ No newline at end of file diff --git a/third_party/grpc/README.md b/third_party/grpc/README.md index 186678b5443127..85a9d7b5783e2d 100644 --- a/third_party/grpc/README.md +++ b/third_party/grpc/README.md @@ -1,14 +1,12 @@ -gRPC-Java - An RPC library and framework -======================================== +gRPC - An RPC library and framework +=================================== -gRPC-Java works with JDK 6. TLS usage typically requires using Java 8, or Play -Services Dynamic Security Provider on Android. Please see the [Security -Readme](SECURITY.md). +gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC enables client and server applications to communicate transparently, and simplifies the building of connected systems. - + @@ -16,211 +14,74 @@ Readme](SECURITY.md).
Homepage:www.grpc.iogrpc.io
Mailing List:
-[![Build Status](https://travis-ci.org/grpc/grpc-java.svg?branch=master)](https://travis-ci.org/grpc/grpc-java) -[![Coverage Status](https://coveralls.io/repos/grpc/grpc-java/badge.svg?branch=master&service=github)](https://coveralls.io/github/grpc/grpc-java?branch=master) - -Download --------- - -Download [the JAR][]. Or for Maven, add to your `pom.xml`: -```xml - - io.grpc - grpc-all - 0.13.2 - -``` - -Or for Gradle, add to your dependencies: -```gradle -compile 'io.grpc:grpc-all:0.13.2' -``` - -For Android client, you only need to depend on the needed sub-projects, such as: -```gradle -compile 'io.grpc:grpc-okhttp:0.13.2' -compile 'io.grpc:grpc-protobuf-nano:0.13.2' -compile 'io.grpc:grpc-stub:0.13.2' -``` - -[the JAR]: https://search.maven.org/remote_content?g=io.grpc&a=grpc-all&v=0.13.2 - -Development snapshots are available in [Sonatypes's snapshot -repository](https://oss.sonatype.org/content/repositories/snapshots/). - -For protobuf-based codegen, you can put your proto files in the `src/main/proto` -and `src/test/proto` directories along with an appropriate plugin. - -For protobuf-based codegen integrated with the Maven build system, you can use -[protobuf-maven-plugin][]: -```xml - - - - kr.motd.maven - os-maven-plugin - 1.4.1.Final - - - - - org.xolstice.maven.plugins - protobuf-maven-plugin - 0.5.0 - - - com.google.protobuf:protoc:3.0.0-beta-2:exe:${os.detected.classifier} - grpc-java - io.grpc:protoc-gen-grpc-java:0.13.2:exe:${os.detected.classifier} - - - - - compile - compile-custom - - - - - - -``` - -[protobuf-maven-plugin]: https://www.xolstice.org/protobuf-maven-plugin/ - -For protobuf-based codegen integrated with the Gradle build system, you can use -[protobuf-gradle-plugin][]: -```gradle -apply plugin: 'java' -apply plugin: 'com.google.protobuf' - -buildscript { - repositories { - mavenCentral() - } - dependencies { - classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.4' - } -} - -protobuf { - protoc { - // The version of protoc must match protobuf-java. If you don't depend on - // protobuf-java directly, you will be transitively depending on the - // protobuf-java version that grpc depends on. - artifact = "com.google.protobuf:protoc:3.0.0-beta-2" - } - plugins { - grpc { - artifact = 'io.grpc:protoc-gen-grpc-java:0.13.2' - } - } - generateProtoTasks { - all()*.plugins { - grpc {} - } - } -} -``` - -[protobuf-gradle-plugin]: https://github.com/google/protobuf-gradle-plugin - -How to Build ------------- - -If you are making changes to gRPC-Java, see the [compiling -instructions](COMPILING.md). - -Navigating Around the Source ----------------------------- - -Here's a quick readers' guide to the code to help folks get started. At a high -level there are three distinct layers to the library: __Stub__, __Channel__ & -__Transport__. - -### Stub - -The Stub layer is what is exposed to most developers and provides type-safe -bindings to whatever datamodel/IDL/interface you are adapting. gRPC comes with -a [plugin](https://github.com/google/grpc-java/blob/master/compiler) to the -protocol-buffers compiler that generates Stub interfaces out of `.proto` files, -but bindings to other datamodel/IDL should be trivial to add and are welcome. - -#### Key Interfaces - -[Stream Observer](https://github.com/google/grpc-java/blob/master/stub/src/main/java/io/grpc/stub/StreamObserver.java) - -### Channel - -The Channel layer is an abstraction over Transport handling that is suitable for -interception/decoration and exposes more behavior to the application than the -Stub layer. It is intended to be easy for application frameworks to use this -layer to address cross-cutting concerns such as logging, monitoring, auth etc. -Flow-control is also exposed at this layer to allow more sophisticated -applications to interact with it directly. - -#### Common - -* [Metadata - headers & trailers](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/Metadata.java) -* [Status - error code namespace & handling](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/Status.java) - -#### Client -* [Channel - client side binding](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/Channel.java) -* [Client Call](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/ClientCall.java) -* [Client Interceptor](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/ClientInterceptor.java) - -#### Server -* [Server call handler - analog to Channel on server](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/ServerCallHandler.java) -* [Server Call](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/ServerCall.java) - - -### Transport - -The Transport layer does the heavy lifting of putting and taking bytes off the -wire. The interfaces to it are abstract just enough to allow plugging in of -different implementations. Transports are modeled as `Stream` factories. The -variation in interface between a server Stream and a client Stream exists to -codify their differing semantics for cancellation and error reporting. +[![Join the chat at https://gitter.im/grpc/grpc](https://badges.gitter.im/grpc/grpc.svg)](https://gitter.im/grpc/grpc?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -Note the transport layer API is considered internal to gRPC and has weaker API -guarantees than the core API under package `io.grpc`. +# To start using gRPC -gRPC comes with three Transport implementations: +To maximize usability, gRPC supports the standard method for adding dependencies to a user's chosen language (if there is one). +In most languages, the gRPC runtime comes as a package available in a user's language package manager. -1. The [Netty-based](https://github.com/google/grpc-java/blob/master/netty) - transport is the main transport implementation based on - [Netty](http://netty.io). It is for both the client and the server. -2. The [OkHttp-based](https://github.com/google/grpc-java/blob/master/okhttp) - transport is a lightweight transport based on - [OkHttp](http://square.github.io/okhttp/). It is mainly for use on Android - and is for client only. -3. The - [inProcess](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/inprocess) - transport is for when a server is in the same process as the client. It is - useful for testing. +For instructions on how to use the language-specific gRPC runtime for a project, please refer to these documents -#### Common + * [C++](src/cpp): follow the instructions under the `src/cpp` directory + * [C#](src/csharp): NuGet package `Grpc` + * [Dart](https://github.com/grpc/grpc-dart): pub package `grpc` + * [Go](https://github.com/grpc/grpc-go): `go get google.golang.org/grpc` + * [Java](https://github.com/grpc/grpc-java): Use JARs from Maven Central Repository + * [Kotlin](https://github.com/grpc/grpc-kotlin): Use JARs from Maven Central Repository + * [Node](https://github.com/grpc/grpc-node): `npm install grpc` + * [Objective-C](src/objective-c): Add `gRPC-ProtoRPC` dependency to podspec + * [PHP](src/php): `pecl install grpc` + * [Python](src/python/grpcio): `pip install grpcio` + * [Ruby](src/ruby): `gem install grpc` + * [WebJS](https://github.com/grpc/grpc-web): follow the grpc-web instructions -* [Stream](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/internal/Stream.java) -* [Stream Listener](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/internal/StreamListener.java) +Per-language quickstart guides and tutorials can be found in the [documentation section on the grpc.io website](https://grpc.io/docs/). Code examples are available in the [examples](examples) directory. -#### Client +Precompiled bleeding-edge package builds of gRPC `master` branch's `HEAD` are uploaded daily to [packages.grpc.io](https://packages.grpc.io). -* [Client Stream](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/internal/ClientStream.java) -* [Client Stream Listener](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/internal/ClientStreamListener.java) +# To start developing gRPC -#### Server +Contributions are welcome! -* [Server Stream](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/internal/ServerStream.java) -* [Server Stream Listener](https://github.com/google/grpc-java/blob/master/core/src/main/java/io/grpc/internal/ServerStreamListener.java) +Please read [How to contribute](CONTRIBUTING.md) which will guide you through the entire workflow of how to build the source code, how to run the tests, and how to contribute changes to +the gRPC codebase. +The "How to contribute" document also contains info on how the contribution process works and contains best practices for creating contributions. +# Troubleshooting -### Examples +Sometimes things go wrong. Please check out the [Troubleshooting guide](TROUBLESHOOTING.md) if you are experiencing issues with gRPC. -Tests showing how these layers are composed to execute calls using protobuf -messages can be found here -https://github.com/google/grpc-java/tree/master/interop-testing/src/main/java/io/grpc/testing/integration +# Performance + +See the [Performance dashboard](https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5180705743044608) for performance numbers of master branch daily builds. + +# Concepts + +See [gRPC Concepts](CONCEPTS.md) + +# About This Repository + +This repository contains source code for gRPC libraries implemented in multiple languages written on top of a shared C core library [src/core](src/core). + +Libraries in different languages may be in various states of development. We are seeking contributions for all of these libraries: + +| Language | Source | +|-------------------------|-------------------------------------| +| Shared C [core library] | [src/core](src/core) | +| C++ | [src/cpp](src/cpp) | +| Ruby | [src/ruby](src/ruby) | +| Python | [src/python](src/python) | +| PHP | [src/php](src/php) | +| C# (core library based) | [src/csharp](src/csharp) | +| Objective-C | [src/objective-c](src/objective-c) | + +| Language | Source repo | +|-------------------------|------------------------------------------------------| +| Java | [grpc-java](https://github.com/grpc/grpc-java) | +| Kotlin | [grpc-kotlin](https://github.com/grpc/grpc-kotlin) | +| Go | [grpc-go](https://github.com/grpc/grpc-go) | +| NodeJS | [grpc-node](https://github.com/grpc/grpc-node) | +| WebJS | [grpc-web](https://github.com/grpc/grpc-web) | +| Dart | [grpc-dart](https://github.com/grpc/grpc-dart) | +| .NET (pure C# impl.) | [grpc-dotnet](https://github.com/grpc/grpc-dotnet) | diff --git a/third_party/grpc/build_defs.bzl b/third_party/grpc/build_defs.bzl index 88290320dcf4da..215160c63b9ef4 100644 --- a/third_party/grpc/build_defs.bzl +++ b/third_party/grpc/build_defs.bzl @@ -67,7 +67,7 @@ _java_grpc_gensource = rule( allow_single_file = True, ), "_java_plugin": attr.label( - default = Label("@io_bazel//third_party/grpc:grpc-java-plugin"), + default = Label("@io_bazel//third_party/grpc-java:grpc-java-plugin"), executable = True, cfg = "host", ), @@ -113,7 +113,7 @@ def java_grpc_library(name, srcs, deps, enable_deprecated = None, visibility = N deps = [ "@io_bazel//third_party:javax_annotations", "@io_bazel//third_party:jsr305", - "@io_bazel//third_party/grpc:grpc-jar", + "@io_bazel//third_party/grpc-java:grpc-jar", "@io_bazel//third_party:guava", "@com_google_protobuf//:protobuf_java", ] + deps, diff --git a/third_party/grpc/grpc-api-1.33.1.jar b/third_party/grpc/grpc-api-1.33.1.jar deleted file mode 100644 index 11fd14a3bd38f8..00000000000000 Binary files a/third_party/grpc/grpc-api-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-api-1.41.0.jar b/third_party/grpc/grpc-api-1.41.0.jar deleted file mode 100644 index 8693c50ec1246d..00000000000000 Binary files a/third_party/grpc/grpc-api-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc-auth-1.33.1.jar b/third_party/grpc/grpc-auth-1.33.1.jar deleted file mode 100644 index 49028a32e61d06..00000000000000 Binary files a/third_party/grpc/grpc-auth-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-auth-1.41.0.jar b/third_party/grpc/grpc-auth-1.41.0.jar deleted file mode 100644 index 7647b864317497..00000000000000 Binary files a/third_party/grpc/grpc-auth-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc-context-1.33.1.jar b/third_party/grpc/grpc-context-1.33.1.jar deleted file mode 100644 index 519faef9720797..00000000000000 Binary files a/third_party/grpc/grpc-context-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-context-1.41.0.jar b/third_party/grpc/grpc-context-1.41.0.jar deleted file mode 100644 index b6680d07abcd8a..00000000000000 Binary files a/third_party/grpc/grpc-context-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc-core-1.33.1.jar b/third_party/grpc/grpc-core-1.33.1.jar deleted file mode 100644 index 84f80cdf67c973..00000000000000 Binary files a/third_party/grpc/grpc-core-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-core-1.41.0.jar b/third_party/grpc/grpc-core-1.41.0.jar deleted file mode 100644 index 52654c0f08a068..00000000000000 Binary files a/third_party/grpc/grpc-core-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc-netty-1.33.1.jar b/third_party/grpc/grpc-netty-1.33.1.jar deleted file mode 100644 index d87bd8c09231bf..00000000000000 Binary files a/third_party/grpc/grpc-netty-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-netty-1.41.0.jar b/third_party/grpc/grpc-netty-1.41.0.jar deleted file mode 100644 index f478288226f57c..00000000000000 Binary files a/third_party/grpc/grpc-netty-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc-protobuf-1.33.1.jar b/third_party/grpc/grpc-protobuf-1.33.1.jar deleted file mode 100644 index 1c7709f47277a1..00000000000000 Binary files a/third_party/grpc/grpc-protobuf-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-protobuf-1.41.0.jar b/third_party/grpc/grpc-protobuf-1.41.0.jar deleted file mode 100644 index 825aba44e3086b..00000000000000 Binary files a/third_party/grpc/grpc-protobuf-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc-protobuf-lite-1.33.1.jar b/third_party/grpc/grpc-protobuf-lite-1.33.1.jar deleted file mode 100644 index 5bd48dfa56b7f6..00000000000000 Binary files a/third_party/grpc/grpc-protobuf-lite-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-protobuf-lite-1.41.0.jar b/third_party/grpc/grpc-protobuf-lite-1.41.0.jar deleted file mode 100644 index 245a0d91382338..00000000000000 Binary files a/third_party/grpc/grpc-protobuf-lite-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc-stub-1.33.1.jar b/third_party/grpc/grpc-stub-1.33.1.jar deleted file mode 100644 index c1bce10ecdb647..00000000000000 Binary files a/third_party/grpc/grpc-stub-1.33.1.jar and /dev/null differ diff --git a/third_party/grpc/grpc-stub-1.41.0.jar b/third_party/grpc/grpc-stub-1.41.0.jar deleted file mode 100644 index 746ab8c55acbd1..00000000000000 Binary files a/third_party/grpc/grpc-stub-1.41.0.jar and /dev/null differ diff --git a/third_party/grpc/grpc_1.33.1.patch b/third_party/grpc/grpc_1.33.1.patch deleted file mode 100644 index dda6fc177e8a9b..00000000000000 --- a/third_party/grpc/grpc_1.33.1.patch +++ /dev/null @@ -1,122 +0,0 @@ -commit bb0d04663c7dc6c0096f8717cb4ec26330a5ae40 -Author: Yun Peng -Date: Wed Jun 3 15:35:31 2020 +0200 - - Patch grpc v1.26.0 for Bazel build - - - Avoid loading dependencies that're not needed for the gRPC C++ - libraries - - Add bazel mirror URL for upb and cares - - Redirect zlib to @//third_party/zlib - - Add darwin_arm64 and darwin_arm64e config settings to allow - building for Apple Silicon - -diff --git a/bazel/grpc_build_system.bzl b/bazel/grpc_build_system.bzl -index 7bb6b8bdb9..7644107b70 100644 ---- a/bazel/grpc_build_system.bzl -+++ b/bazel/grpc_build_system.bzl -@@ -25,7 +25,7 @@ - - load("//bazel:cc_grpc_library.bzl", "cc_grpc_library") - load("@upb//bazel:upb_proto_library.bzl", "upb_proto_library") --load("@build_bazel_rules_apple//apple:ios.bzl", "ios_unit_test") -+# load("@build_bazel_rules_apple//apple:ios.bzl", "ios_unit_test") - - # The set of pollers to test against if a test exercises polling - POLLERS = ["epollex", "epoll1", "poll"] -@@ -181,13 +181,13 @@ def ios_cc_test( - testonly = 1, - ) - ios_test_deps = [ios_test_adapter, ":" + test_lib_ios] -- ios_unit_test( -- name = name + "_on_ios", -- size = kwargs.get("size"), -- tags = ios_tags, -- minimum_os_version = "9.0", -- deps = ios_test_deps, -- ) -+ # ios_unit_test( -+ # name = name + "_on_ios", -+ # size = kwargs.get("size"), -+ # tags = ios_tags, -+ # minimum_os_version = "9.0", -+ # deps = ios_test_deps, -+ # ) - - def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data = [], uses_polling = True, language = "C++", size = "medium", timeout = None, tags = [], exec_compatible_with = [], exec_properties = {}, shard_count = None, flaky = None): - copts = if_mac(["-DGRPC_CFSTREAM"]) -diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl -index 09fcad95a2..9b737e5deb 100644 ---- a/bazel/grpc_deps.bzl -+++ b/bazel/grpc_deps.bzl -@@ -33,7 +33,7 @@ def grpc_deps(): - - native.bind( - name = "madler_zlib", -- actual = "@zlib//:zlib", -+ actual = "@//third_party/zlib", - ) - - native.bind( -diff --git a/bazel/grpc_extra_deps.bzl b/bazel/grpc_extra_deps.bzl -index 4c1dfad2e8..f63c54ddef 100644 ---- a/bazel/grpc_extra_deps.bzl -+++ b/bazel/grpc_extra_deps.bzl -@@ -1,11 +1,6 @@ - """Loads the dependencies necessary for the external repositories defined in grpc_deps.bzl.""" - --load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") - load("@upb//bazel:workspace_deps.bzl", "upb_deps") --load("@envoy_api//bazel:repositories.bzl", "api_dependencies") --load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") --load("@build_bazel_rules_apple//apple:repositories.bzl", "apple_rules_dependencies") --load("@build_bazel_apple_support//lib:repositories.bzl", "apple_support_dependencies") - - def grpc_extra_deps(): - """Loads the extra dependencies. -@@ -26,15 +21,5 @@ def grpc_extra_deps(): - grpc_extra_deps() - ``` - """ -- protobuf_deps() -- - upb_deps() - -- api_dependencies() -- -- go_rules_dependencies() -- go_register_toolchains() -- -- apple_rules_dependencies() -- -- apple_support_dependencies() -diff --git a/third_party/cares/cares.BUILD b/third_party/cares/cares.BUILD -index c047f0c515..7c24fbc617 100644 ---- a/third_party/cares/cares.BUILD -+++ b/third_party/cares/cares.BUILD -@@ -10,6 +10,16 @@ config_setting( - values = {"cpu": "darwin_x86_64"}, - ) - -+config_setting( -+ name = "darwin_arm64", -+ values = {"cpu": "darwin_arm64"}, -+) -+ -+config_setting( -+ name = "darwin_arm64e", -+ values = {"cpu": "darwin_arm64e"}, -+) -+ - config_setting( - name = "windows", - values = {"cpu": "x64_windows"}, -@@ -99,6 +109,8 @@ copy_file( - ":watchos_arm64_32": "@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h", - ":darwin": "@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h", - ":darwin_x86_64": "@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h", -+ ":darwin_arm64": "@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h", -+ ":darwin_arm64e": "@com_github_grpc_grpc//third_party/cares:config_darwin/ares_config.h", - ":windows": "@com_github_grpc_grpc//third_party/cares:config_windows/ares_config.h", - ":android": "@com_github_grpc_grpc//third_party/cares:config_android/ares_config.h", - "//conditions:default": "@com_github_grpc_grpc//third_party/cares:config_linux/ares_config.h", diff --git a/third_party/netty/LICENSE.txt b/third_party/netty/LICENSE.txt index d645695673349e..62589edd12a37d 100644 --- a/third_party/netty/LICENSE.txt +++ b/third_party/netty/LICENSE.txt @@ -1,7 +1,7 @@ Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -193,7 +193,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/third_party/netty/README.md b/third_party/netty/README.md index 9176ac5eaa9c53..f42f2208653605 100644 --- a/third_party/netty/README.md +++ b/third_party/netty/README.md @@ -10,6 +10,7 @@ Netty is an asynchronous event-driven network application framework for rapid de * [Downloads](https://netty.io/downloads.html) * [Documentation](https://netty.io/wiki/) * [@netty_project](https://twitter.com/netty_project) +* [Official Discord server](https://discord.gg/q4aQ2XjaCa) ## How to build @@ -17,9 +18,9 @@ For the detailed information about building and developing Netty, please visit [ You require the following to build Netty: -* Latest stable [OpenJDK 8](https://adoptopenjdk.net) +* Latest stable [OpenJDK 8](https://adoptium.net/) * Latest stable [Apache Maven](https://maven.apache.org/) -* If you are on Linux, you need [additional development packages](https://netty.io/wiki/native-transports.html) installed on your system, because you'll build the native transport. +* If you are on Linux or MacOS, you need [additional development packages](https://netty.io/wiki/native-transports.html) installed on your system, because you'll build the native transport. Note that this is build-time requirement. JDK 5 (for 3.x) or 6 (for 4.0+ / 4.1+) is enough to run your Netty-based application. diff --git a/third_party/netty/netty-buffer-4.1.69.Final.jar b/third_party/netty/netty-buffer-4.1.75.Final.jar similarity index 71% rename from third_party/netty/netty-buffer-4.1.69.Final.jar rename to third_party/netty/netty-buffer-4.1.75.Final.jar index 6be5430d834581..a3acd3e2d8f275 100644 Binary files a/third_party/netty/netty-buffer-4.1.69.Final.jar and b/third_party/netty/netty-buffer-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-codec-4.1.69.Final.jar b/third_party/netty/netty-codec-4.1.75.Final.jar similarity index 75% rename from third_party/netty/netty-codec-4.1.69.Final.jar rename to third_party/netty/netty-codec-4.1.75.Final.jar index 57ba18b94d3e0e..3947ae939a603a 100644 Binary files a/third_party/netty/netty-codec-4.1.69.Final.jar and b/third_party/netty/netty-codec-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-codec-http-4.1.69.Final.jar b/third_party/netty/netty-codec-http-4.1.75.Final.jar similarity index 77% rename from third_party/netty/netty-codec-http-4.1.69.Final.jar rename to third_party/netty/netty-codec-http-4.1.75.Final.jar index eaf633836b8ef9..6c5baf99b7aaaa 100644 Binary files a/third_party/netty/netty-codec-http-4.1.69.Final.jar and b/third_party/netty/netty-codec-http-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-codec-http2-4.1.69.Final.jar b/third_party/netty/netty-codec-http2-4.1.75.Final.jar similarity index 85% rename from third_party/netty/netty-codec-http2-4.1.69.Final.jar rename to third_party/netty/netty-codec-http2-4.1.75.Final.jar index 1a6cbf0a5eaa82..186db59fb2c844 100644 Binary files a/third_party/netty/netty-codec-http2-4.1.69.Final.jar and b/third_party/netty/netty-codec-http2-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-common-4.1.69.Final.jar b/third_party/netty/netty-common-4.1.75.Final.jar similarity index 66% rename from third_party/netty/netty-common-4.1.69.Final.jar rename to third_party/netty/netty-common-4.1.75.Final.jar index c10525b3569586..af0eb67361e84f 100644 Binary files a/third_party/netty/netty-common-4.1.69.Final.jar and b/third_party/netty/netty-common-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-handler-4.1.69.Final.jar b/third_party/netty/netty-handler-4.1.75.Final.jar similarity index 67% rename from third_party/netty/netty-handler-4.1.69.Final.jar rename to third_party/netty/netty-handler-4.1.75.Final.jar index 5f4839a3d6483a..b2b1dca6a91690 100644 Binary files a/third_party/netty/netty-handler-4.1.69.Final.jar and b/third_party/netty/netty-handler-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-handler-proxy-4.1.69.Final.jar b/third_party/netty/netty-handler-proxy-4.1.75.Final.jar similarity index 76% rename from third_party/netty/netty-handler-proxy-4.1.69.Final.jar rename to third_party/netty/netty-handler-proxy-4.1.75.Final.jar index ba31ea139b3cde..008fc06ac6ebe5 100644 Binary files a/third_party/netty/netty-handler-proxy-4.1.69.Final.jar and b/third_party/netty/netty-handler-proxy-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-resolver-4.1.69.Final.jar b/third_party/netty/netty-resolver-4.1.75.Final.jar similarity index 71% rename from third_party/netty/netty-resolver-4.1.69.Final.jar rename to third_party/netty/netty-resolver-4.1.75.Final.jar index d07c68f12375c4..3c404d324eb57a 100644 Binary files a/third_party/netty/netty-resolver-4.1.69.Final.jar and b/third_party/netty/netty-resolver-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-resolver-dns-4.1.69.Final.jar b/third_party/netty/netty-resolver-dns-4.1.69.Final.jar deleted file mode 100644 index f987fb40a5eed5..00000000000000 Binary files a/third_party/netty/netty-resolver-dns-4.1.69.Final.jar and /dev/null differ diff --git a/third_party/netty/netty-resolver-dns-4.1.75.Final.jar b/third_party/netty/netty-resolver-dns-4.1.75.Final.jar new file mode 100644 index 00000000000000..2b2ee5402ccddd Binary files /dev/null and b/third_party/netty/netty-resolver-dns-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-transport-4.1.69.Final.jar b/third_party/netty/netty-transport-4.1.75.Final.jar similarity index 79% rename from third_party/netty/netty-transport-4.1.69.Final.jar rename to third_party/netty/netty-transport-4.1.75.Final.jar index 98ed3d219d1d48..3147ff1ead7ab5 100644 Binary files a/third_party/netty/netty-transport-4.1.69.Final.jar and b/third_party/netty/netty-transport-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-transport-native-epoll-4.1.69.Final.jar b/third_party/netty/netty-transport-classes-epoll-4.1.75.Final.jar similarity index 69% rename from third_party/netty/netty-transport-native-epoll-4.1.69.Final.jar rename to third_party/netty/netty-transport-classes-epoll-4.1.75.Final.jar index 2b830792efac3d..fee86d4160c7a3 100644 Binary files a/third_party/netty/netty-transport-native-epoll-4.1.69.Final.jar and b/third_party/netty/netty-transport-classes-epoll-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-transport-native-kqueue-4.1.69.Final.jar b/third_party/netty/netty-transport-classes-kqueue-4.1.75.Final.jar similarity index 70% rename from third_party/netty/netty-transport-native-kqueue-4.1.69.Final.jar rename to third_party/netty/netty-transport-classes-kqueue-4.1.75.Final.jar index 5472ec16f9772a..2ea9b3f5e01203 100644 Binary files a/third_party/netty/netty-transport-native-kqueue-4.1.69.Final.jar and b/third_party/netty/netty-transport-classes-kqueue-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-transport-native-epoll-4.1.69.Final-linux-aarch_64.jar b/third_party/netty/netty-transport-native-epoll-4.1.69.Final-linux-aarch_64.jar deleted file mode 100644 index 75dadcdadd4bbe..00000000000000 Binary files a/third_party/netty/netty-transport-native-epoll-4.1.69.Final-linux-aarch_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-epoll-4.1.69.Final-linux-x86_64.jar b/third_party/netty/netty-transport-native-epoll-4.1.69.Final-linux-x86_64.jar deleted file mode 100644 index e541e888556b1b..00000000000000 Binary files a/third_party/netty/netty-transport-native-epoll-4.1.69.Final-linux-x86_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-epoll-4.1.75.Final-linux-aarch_64.jar b/third_party/netty/netty-transport-native-epoll-4.1.75.Final-linux-aarch_64.jar new file mode 100644 index 00000000000000..a98a80f07c98cf Binary files /dev/null and b/third_party/netty/netty-transport-native-epoll-4.1.75.Final-linux-aarch_64.jar differ diff --git a/third_party/netty/netty-transport-native-epoll-4.1.75.Final-linux-x86_64.jar b/third_party/netty/netty-transport-native-epoll-4.1.75.Final-linux-x86_64.jar new file mode 100644 index 00000000000000..db0eba7cc151af Binary files /dev/null and b/third_party/netty/netty-transport-native-epoll-4.1.75.Final-linux-x86_64.jar differ diff --git a/third_party/netty/netty-transport-native-kqueue-4.1.69.Final-osx-aarch_64.jar b/third_party/netty/netty-transport-native-kqueue-4.1.69.Final-osx-aarch_64.jar deleted file mode 100644 index a504e9e0ce78b1..00000000000000 Binary files a/third_party/netty/netty-transport-native-kqueue-4.1.69.Final-osx-aarch_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-kqueue-4.1.69.Final-osx-x86_64.jar b/third_party/netty/netty-transport-native-kqueue-4.1.69.Final-osx-x86_64.jar deleted file mode 100644 index b53332fd8ce668..00000000000000 Binary files a/third_party/netty/netty-transport-native-kqueue-4.1.69.Final-osx-x86_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-kqueue-4.1.75.Final-osx-aarch_64.jar b/third_party/netty/netty-transport-native-kqueue-4.1.75.Final-osx-aarch_64.jar new file mode 100644 index 00000000000000..75afb1f55e9b84 Binary files /dev/null and b/third_party/netty/netty-transport-native-kqueue-4.1.75.Final-osx-aarch_64.jar differ diff --git a/third_party/netty/netty-transport-native-kqueue-4.1.75.Final-osx-x86_64.jar b/third_party/netty/netty-transport-native-kqueue-4.1.75.Final-osx-x86_64.jar new file mode 100644 index 00000000000000..d5488893aa7cbc Binary files /dev/null and b/third_party/netty/netty-transport-native-kqueue-4.1.75.Final-osx-x86_64.jar differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-linux-aarch_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-linux-aarch_64.jar deleted file mode 100644 index b6e1aa6d859724..00000000000000 Binary files a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-linux-aarch_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-linux-x86_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-linux-x86_64.jar deleted file mode 100644 index 4a1cb5708bf9f4..00000000000000 Binary files a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-linux-x86_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-osx-aarch_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-osx-aarch_64.jar deleted file mode 100644 index 7200376221563b..00000000000000 Binary files a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-osx-aarch_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-osx-x86_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-osx-x86_64.jar deleted file mode 100644 index 1e2a27d0984e43..00000000000000 Binary files a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final-osx-x86_64.jar and /dev/null differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-linux-aarch_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-linux-aarch_64.jar new file mode 100644 index 00000000000000..c6ae457b3a8b57 Binary files /dev/null and b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-linux-aarch_64.jar differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-linux-x86_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-linux-x86_64.jar new file mode 100644 index 00000000000000..a0b8c0b73d6f2d Binary files /dev/null and b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-linux-x86_64.jar differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-osx-aarch_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-osx-aarch_64.jar new file mode 100644 index 00000000000000..8cf6eea5ca3e56 Binary files /dev/null and b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-osx-aarch_64.jar differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-osx-x86_64.jar b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-osx-x86_64.jar new file mode 100644 index 00000000000000..e7ac19efca911e Binary files /dev/null and b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final-osx-x86_64.jar differ diff --git a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final.jar b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final.jar similarity index 58% rename from third_party/netty/netty-transport-native-unix-common-4.1.69.Final.jar rename to third_party/netty/netty-transport-native-unix-common-4.1.75.Final.jar index ea8631c5fe0d39..f220d6cf0a3d59 100644 Binary files a/third_party/netty/netty-transport-native-unix-common-4.1.69.Final.jar and b/third_party/netty/netty-transport-native-unix-common-4.1.75.Final.jar differ diff --git a/third_party/netty/netty-transport-sctp-4.1.69.Final.jar b/third_party/netty/netty-transport-sctp-4.1.75.Final.jar similarity index 82% rename from third_party/netty/netty-transport-sctp-4.1.69.Final.jar rename to third_party/netty/netty-transport-sctp-4.1.75.Final.jar index a1687aa86d3e7d..335ec171ac3777 100644 Binary files a/third_party/netty/netty-transport-sctp-4.1.69.Final.jar and b/third_party/netty/netty-transport-sctp-4.1.75.Final.jar differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-aarch_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-aarch_64.jar deleted file mode 100644 index 9ac18f8f05b363..00000000000000 Binary files a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-aarch_64.jar and /dev/null differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-x86_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-x86_64.jar deleted file mode 100644 index 95ad905fa3908e..00000000000000 Binary files a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-linux-x86_64.jar and /dev/null differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-aarch_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-aarch_64.jar deleted file mode 100644 index c0debac3959948..00000000000000 Binary files a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-aarch_64.jar and /dev/null differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-x86_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-x86_64.jar deleted file mode 100644 index e9fecb7f1358a8..00000000000000 Binary files a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-osx-x86_64.jar and /dev/null differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-windows-x86_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-windows-x86_64.jar deleted file mode 100644 index 1f4016784d7da7..00000000000000 Binary files a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final-windows-x86_64.jar and /dev/null differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final.jar deleted file mode 100644 index a754d3a9a518db..00000000000000 Binary files a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.44.Final.jar and /dev/null differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-aarch_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-aarch_64.jar new file mode 100644 index 00000000000000..c92128ca720747 Binary files /dev/null and b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-aarch_64.jar differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-x86_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-x86_64.jar new file mode 100644 index 00000000000000..fcfd8e09806484 Binary files /dev/null and b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-linux-x86_64.jar differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-aarch_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-aarch_64.jar new file mode 100644 index 00000000000000..5c2391658ef73f Binary files /dev/null and b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-aarch_64.jar differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-x86_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-x86_64.jar new file mode 100644 index 00000000000000..c132016d1c5735 Binary files /dev/null and b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-osx-x86_64.jar differ diff --git a/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-windows-x86_64.jar b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-windows-x86_64.jar new file mode 100644 index 00000000000000..440f9519dde093 Binary files /dev/null and b/third_party/netty_tcnative/netty-tcnative-boringssl-static-2.0.51.Final-windows-x86_64.jar differ diff --git a/third_party/netty_tcnative/netty-tcnative-classes-2.0.51.Final.jar b/third_party/netty_tcnative/netty-tcnative-classes-2.0.51.Final.jar new file mode 100644 index 00000000000000..ae50f4d9dbdf74 Binary files /dev/null and b/third_party/netty_tcnative/netty-tcnative-classes-2.0.51.Final.jar differ