Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: grpc/grpc-java
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.64.0
Choose a base ref
...
head repository: grpc/grpc-java
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.65.0
Choose a head ref
Loading
Showing with 8,137 additions and 2,505 deletions.
  1. +1 −0 MODULE.bazel
  2. +15 −15 README.md
  3. +1 −1 SECURITY.md
  4. +2 −0 all/build.gradle
  5. +1 −1 alts/src/main/java/io/grpc/alts/AltsChannelBuilder.java
  6. +1 −1 alts/src/main/java/io/grpc/alts/AltsChannelCredentials.java
  7. +1 −1 alts/src/test/java/io/grpc/alts/internal/FakeTsiHandshaker.java
  8. +4 −0 api/build.gradle
  9. +23 −0 api/src/main/java/io/grpc/CallbackMetricInstrument.java
  10. +16 −3 api/src/main/java/io/grpc/ClientStreamTracer.java
  11. +36 −0 api/src/main/java/io/grpc/Configurator.java
  12. +78 −0 api/src/main/java/io/grpc/ConfiguratorRegistry.java
  13. +1 −1 api/src/main/java/io/grpc/DoubleCounterMetricInstrument.java
  14. +1 −1 api/src/main/java/io/grpc/DoubleHistogramMetricInstrument.java
  15. +7 −1 api/src/main/java/io/grpc/ForwardingChannelBuilder2.java
  16. +0 −93 api/src/main/java/io/grpc/GlobalInterceptors.java
  17. +23 −0 api/src/main/java/io/grpc/InternalConfigurator.java
  18. +51 −0 api/src/main/java/io/grpc/InternalConfiguratorRegistry.java
  19. +0 −46 api/src/main/java/io/grpc/InternalGlobalInterceptors.java
  20. +37 −0 api/src/main/java/io/grpc/InternalManagedChannelBuilder.java
  21. +1 −1 api/src/main/java/io/grpc/LoadBalancer.java
  22. +1 −1 api/src/main/java/io/grpc/LongCounterMetricInstrument.java
  23. +3 −2 api/src/main/java/io/grpc/LongGaugeMetricInstrument.java
  24. +1 −1 api/src/main/java/io/grpc/LongHistogramMetricInstrument.java
  25. +17 −2 api/src/main/java/io/grpc/ManagedChannelBuilder.java
  26. +1 −0 api/src/main/java/io/grpc/MetricInstrumentRegistry.java
  27. +39 −0 api/src/main/java/io/grpc/MetricRecorder.java
  28. +42 −17 api/src/main/java/io/grpc/MetricSink.java
  29. +1 −1 api/src/main/java/io/grpc/ServerInterceptors.java
  30. +1 −1 api/src/main/java/io/grpc/SynchronizationContext.java
  31. +100 −0 api/src/test/java/io/grpc/ConfiguratorRegistryTest.java
  32. +0 −188 api/src/test/java/io/grpc/GlobalInterceptorsTest.java
  33. +2 −2 api/src/test/java/io/grpc/MethodDescriptorTest.java
  34. +49 −0 api/src/testFixtures/java/io/grpc/NoopMetricSink.java
  35. +94 −62 binder/src/androidTest/java/io/grpc/binder/internal/BinderClientTransportTest.java
  36. +19 −24 binder/src/androidTest/java/io/grpc/binder/internal/BinderTransportTest.java
  37. +36 −15 binder/src/androidTest/java/io/grpc/binder/internal/LeakSafeOneWayBinderTest.java
  38. +31 −0 binder/src/androidTest/java/io/grpc/binder/internal/OneWayBinderProxies.java
  39. +19 −134 binder/src/main/java/io/grpc/binder/BinderChannelBuilder.java
  40. +10 −26 binder/src/main/java/io/grpc/binder/BinderServerBuilder.java
  41. +1 −1 binder/src/main/java/io/grpc/binder/SecurityPolicies.java
  42. +110 −0 binder/src/main/java/io/grpc/binder/internal/ActiveTransportTracker.java
  43. +224 −0 binder/src/main/java/io/grpc/binder/internal/BinderClientTransportFactory.java
  44. +130 −21 binder/src/main/java/io/grpc/binder/internal/BinderServer.java
  45. +51 −32 binder/src/main/java/io/grpc/binder/internal/BinderTransport.java
  46. +0 −8 binder/src/main/java/io/grpc/binder/internal/BinderTransportSecurity.java
  47. +1 −1 binder/src/main/java/io/grpc/binder/internal/Inbound.java
  48. +8 −1 binder/src/main/java/io/grpc/binder/internal/LeakSafeOneWayBinder.java
  49. +113 −0 binder/src/test/java/io/grpc/binder/internal/ActiveTransportTrackerTest.java
  50. +13 −1 build.gradle
  51. +1 −1 buildscripts/checkstyle.xml
  52. +3 −6 buildscripts/kokoro/android-interop.sh
  53. +17 −0 buildscripts/kokoro/psm-csm.cfg
  54. +90 −0 buildscripts/kokoro/psm-interop-build-java.sh
  55. +27 −0 buildscripts/kokoro/psm-interop-test-java.sh
  56. +5 −1 buildscripts/kokoro/psm-security.cfg
  57. +0 −185 buildscripts/kokoro/psm-security.sh
  58. +5 −1 buildscripts/kokoro/xds_k8s_lb.cfg
  59. +0 −189 buildscripts/kokoro/xds_k8s_lb.sh
  60. +5 −1 buildscripts/kokoro/xds_url_map.cfg
  61. +0 −178 buildscripts/kokoro/xds_url_map.sh
  62. +1 −1 compiler/src/test/golden/TestDeprecatedService.java.txt
  63. +1 −1 compiler/src/test/golden/TestService.java.txt
  64. +0 −1 core/build.gradle
  65. +1 −1 core/src/main/java/io/grpc/internal/AbstractClientStream.java
  66. +1 −1 core/src/main/java/io/grpc/internal/ClientTransport.java
  67. +55 −46 core/src/main/java/io/grpc/internal/DelayedClientTransport.java
  68. +1 −1 core/src/main/java/io/grpc/internal/DelayedStream.java
  69. +5 −0 core/src/main/java/io/grpc/internal/ForwardingClientStreamTracer.java
  70. +1 −1 core/src/main/java/io/grpc/internal/GrpcUtil.java
  71. +25 −120 core/src/main/java/io/grpc/internal/ManagedChannelImpl.java
  72. +137 −13 core/src/main/java/io/grpc/internal/ManagedChannelImplBuilder.java
  73. +1 −3 core/src/main/java/io/grpc/internal/ManagedClientTransport.java
  74. +73 −10 core/src/main/java/io/grpc/internal/MetricRecorderImpl.java
  75. +1 −3 core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java
  76. +12 −1 core/src/main/java/io/grpc/internal/PickFirstLoadBalancerProvider.java
  77. +1 −1 core/src/main/java/io/grpc/internal/SerializingExecutor.java
  78. +9 −13 core/src/main/java/io/grpc/internal/ServerImplBuilder.java
  79. +2 −2 core/src/main/java/io/grpc/internal/StatsTraceContext.java
  80. +3 −3 core/src/test/java/io/grpc/internal/DnsNameResolverTest.java
  81. +1 −1 core/src/test/java/io/grpc/internal/InternalSubchannelTest.java
  82. +75 −25 core/src/test/java/io/grpc/internal/ManagedChannelImplBuilderTest.java
  83. +13 −9 core/src/test/java/io/grpc/internal/ManagedChannelImplGetNameResolverTest.java
  84. +8 −2 core/src/test/java/io/grpc/internal/ManagedChannelImplIdlenessTest.java
  85. +43 −14 core/src/test/java/io/grpc/internal/ManagedChannelImplTest.java
  86. +105 −31 core/src/test/java/io/grpc/internal/MetricRecorderImplTest.java
  87. +4 −4 core/src/test/java/io/grpc/internal/PickFirstLeafLoadBalancerTest.java
  88. +16 −11 core/src/test/java/io/grpc/internal/ServerImplBuilderTest.java
  89. +3 −3 core/src/test/java/io/grpc/internal/ServerImplTest.java
  90. +5 −0 core/src/test/java/io/grpc/internal/ServiceConfigErrorHandlingTest.java
  91. +1 −1 core/src/test/java/io/grpc/internal/SharedResourceHolderTest.java
  92. +1 −0 core/src/testFixtures/java/io/grpc/internal/AbstractTransportTest.java
  93. +2 −1 core/src/testFixtures/java/io/grpc/internal/FakeClock.java
  94. +5 −5 examples/android/clientcache/app/build.gradle
  95. +4 −4 examples/android/helloworld/app/build.gradle
  96. +4 −4 examples/android/routeguide/app/build.gradle
  97. +4 −4 examples/android/strictmode/app/build.gradle
  98. +1 −1 examples/build.gradle
  99. +1 −1 examples/example-alts/build.gradle
  100. +1 −1 examples/example-debug/build.gradle
  101. +2 −2 examples/example-debug/pom.xml
  102. +1 −1 examples/example-gauth/build.gradle
  103. +2 −2 examples/example-gauth/pom.xml
  104. +43 −0 examples/example-gcp-csm-observability/README.md
  105. +77 −0 examples/example-gcp-csm-observability/build.gradle
  106. +47 −0 examples/example-gcp-csm-observability/csm-client.Dockerfile
  107. +47 −0 examples/example-gcp-csm-observability/csm-server.Dockerfile
  108. +1 −0 examples/example-gcp-csm-observability/settings.gradle
  109. +149 −0 ...gcp-csm-observability/src/main/java/io/grpc/examples/csmobservability/CsmObservabilityClient.java
  110. +139 −0 ...gcp-csm-observability/src/main/java/io/grpc/examples/csmobservability/CsmObservabilityServer.java
  111. +39 −0 examples/example-gcp-csm-observability/src/main/proto/helloworld/helloworld.proto
  112. +1 −1 examples/example-gcp-observability/build.gradle
  113. +1 −1 examples/example-hostname/build.gradle
  114. +2 −2 examples/example-hostname/pom.xml
  115. +1 −1 examples/example-hostname/src/test/java/io/grpc/examples/hostname/HostnameGreeterTest.java
  116. +1 −1 examples/example-jwt-auth/build.gradle
  117. +2 −2 examples/example-jwt-auth/pom.xml
  118. +1 −1 examples/example-oauth/build.gradle
  119. +2 −2 examples/example-oauth/pom.xml
  120. +54 −0 examples/example-opentelemetry/README.md
  121. +92 −0 examples/example-opentelemetry/build.gradle
  122. +1 −0 examples/example-opentelemetry/settings.gradle
  123. +154 −0 examples/example-opentelemetry/src/main/java/io/grpc/example/opentelemetry/OpenTelemetryClient.java
  124. +142 −0 examples/example-opentelemetry/src/main/java/io/grpc/example/opentelemetry/OpenTelemetryServer.java
  125. +154 −0 ...opentelemetry/src/main/java/io/grpc/example/opentelemetry/logging/LoggingOpenTelemetryClient.java
  126. +144 −0 ...opentelemetry/src/main/java/io/grpc/example/opentelemetry/logging/LoggingOpenTelemetryServer.java
  127. +39 −0 examples/example-opentelemetry/src/main/proto/helloworld/helloworld.proto
  128. +1 −1 examples/example-orca/build.gradle
  129. +1 −1 examples/example-reflection/README.md
  130. +1 −1 examples/example-reflection/build.gradle
  131. +1 −1 examples/example-servlet/build.gradle
  132. +1 −1 examples/example-tls/build.gradle
  133. +2 −2 examples/example-tls/pom.xml
  134. +1 −1 examples/example-xds/build.gradle
  135. +2 −2 examples/pom.xml
  136. +32 −0 gcp-csm-observability/build.gradle
  137. +160 −0 gcp-csm-observability/src/main/java/io/grpc/gcp/csm/observability/CsmObservability.java
  138. +378 −0 gcp-csm-observability/src/main/java/io/grpc/gcp/csm/observability/MetadataExchanger.java
  139. +636 −0 gcp-csm-observability/src/test/java/io/grpc/gcp/csm/observability/CsmObservabilityTest.java
  140. +201 −0 gcp-csm-observability/src/test/java/io/grpc/gcp/csm/observability/MetadataExchangerTest.java
  141. +43 −3 gcp-observability/src/main/java/io/grpc/gcp/observability/GcpObservability.java
  142. +16 −8 gcp-observability/src/test/java/io/grpc/gcp/observability/GcpObservabilityTest.java
  143. +1 −1 gcp-observability/src/test/java/io/grpc/gcp/observability/LoggingTest.java
  144. +13 −9 gradle/libs.versions.toml
  145. +1 −1 grpclb/src/main/java/io/grpc/grpclb/GrpclbConfig.java
  146. +9 −16 inprocess/src/main/java/io/grpc/inprocess/InProcessTransport.java
  147. +3 −0 interop-testing/build.gradle
  148. +1 −1 interop-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java
  149. +44 −3 interop-testing/src/main/java/io/grpc/testing/integration/XdsTestClient.java
  150. +33 −2 interop-testing/src/main/java/io/grpc/testing/integration/XdsTestServer.java
  151. +80 −0 interop-testing/src/test/java/io/grpc/testing/integration/ManagedChannelImplIntegrationTest.java
  152. +1 −1 netty/build.gradle
  153. +33 −26 netty/src/main/java/io/grpc/netty/NettyAdaptiveCumulator.java
  154. +14 −17 netty/src/test/java/io/grpc/netty/AdvancedTlsTest.java
  155. +33 −21 netty/src/test/java/io/grpc/netty/NettyAdaptiveCumulatorTest.java
  156. +8 −0 okhttp/src/main/java/io/grpc/okhttp/OkHttpServerTransport.java
  157. +11 −1 opentelemetry/build.gradle
  158. +353 −0 opentelemetry/src/main/java/io/grpc/opentelemetry/GrpcOpenTelemetry.java
  159. +32 −0 opentelemetry/src/main/java/io/grpc/opentelemetry/InternalGrpcOpenTelemetry.java
  160. +36 −0 opentelemetry/src/main/java/io/grpc/opentelemetry/InternalOpenTelemetryPlugin.java
  161. +315 −0 opentelemetry/src/main/java/io/grpc/opentelemetry/OpenTelemetryMetricSink.java
  162. +198 −44 opentelemetry/src/main/java/io/grpc/opentelemetry/OpenTelemetryMetricsModule.java
  163. +10 −0 opentelemetry/src/main/java/io/grpc/opentelemetry/OpenTelemetryMetricsResource.java
  164. +0 −210 opentelemetry/src/main/java/io/grpc/opentelemetry/OpenTelemetryModule.java
  165. +65 −0 opentelemetry/src/main/java/io/grpc/opentelemetry/OpenTelemetryPlugin.java
  166. +18 −0 opentelemetry/src/main/java/io/grpc/opentelemetry/internal/OpenTelemetryConstants.java
  167. +41 −3 ...y/src/test/java/io/grpc/opentelemetry/{OpenTelemetryModuleTest.java → GrpcOpenTelemetryTest.java}
  168. +422 −0 opentelemetry/src/test/java/io/grpc/opentelemetry/OpenTelemetryMetricSinkTest.java
  169. +278 −57 opentelemetry/src/test/java/io/grpc/opentelemetry/OpenTelemetryMetricsModuleTest.java
  170. +1 −1 repositories.bzl
  171. +1 −0 rls/build.gradle
  172. +74 −34 rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java
  173. +4 −0 rls/src/main/java/io/grpc/rls/ChildLoadBalancerHelper.java
  174. +4 −0 rls/src/main/java/io/grpc/rls/LbPolicyConfiguration.java
  175. +71 −144 rls/src/main/java/io/grpc/rls/LinkedHashLruCache.java
  176. +83 −2 rls/src/test/java/io/grpc/rls/CachingRlsLbClientTest.java
  177. +5 −6 rls/src/test/java/io/grpc/rls/LinkedHashLruCacheTest.java
  178. +169 −45 rls/src/test/java/io/grpc/rls/RlsLoadBalancerTest.java
  179. +23 −0 services/BUILD.bazel
  180. +5 −5 services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java
  181. +1 −1 services/src/test/java/io/grpc/protobuf/services/HealthCheckingLoadBalancerFactoryTest.java
  182. +2 −3 servlet/build.gradle
  183. +38 −43 servlet/jakarta/build.gradle
  184. +10 −0 servlet/src/jettyTest/java/io/grpc/servlet/JettyTransportTest.java
  185. +2 −0 settings.gradle
  186. +1 −1 stub/src/test/java/io/grpc/stub/ClientCallsTest.java
  187. +1 −1 testing/src/main/java/io/grpc/internal/testing/FakeNameResolverProvider.java
  188. +23 −21 util/src/main/java/io/grpc/util/AdvancedTlsX509KeyManager.java
  189. +5 −0 util/src/main/java/io/grpc/util/ForwardingClientStreamTracer.java
  190. +165 −0 util/src/test/java/io/grpc/util/AdvancedTlsX509KeyManagerTest.java
  191. +3 −1 xds/src/main/java/io/grpc/xds/CdsLoadBalancer2.java
  192. +30 −5 xds/src/main/java/io/grpc/xds/ClusterImplLoadBalancer.java
  193. +12 −1 xds/src/main/java/io/grpc/xds/ClusterImplLoadBalancerProvider.java
  194. +36 −22 xds/src/main/java/io/grpc/xds/ClusterResolverLoadBalancer.java
  195. +17 −8 xds/src/main/java/io/grpc/xds/ClusterResolverLoadBalancerProvider.java
  196. +1 −1 xds/src/main/java/io/grpc/xds/FilterChainMatchingProtocolNegotiators.java
  197. +33 −0 xds/src/main/java/io/grpc/xds/InternalGrpcBootstrapperImpl.java
  198. +7 −0 xds/src/main/java/io/grpc/xds/InternalXdsAttributes.java
  199. +32 −19 xds/src/main/java/io/grpc/xds/WeightedRoundRobinLoadBalancer.java
  200. +6 −0 xds/src/main/java/io/grpc/xds/WeightedTargetLoadBalancer.java
  201. +4 −5 xds/src/main/java/io/grpc/xds/WrrLocalityLoadBalancer.java
  202. +17 −13 xds/src/main/java/io/grpc/xds/XdsClusterResource.java
  203. +1 −1 xds/src/main/java/io/grpc/xds/XdsEndpointResource.java
  204. +79 −26 xds/src/test/java/io/grpc/xds/ClusterImplLoadBalancerTest.java
  205. +14 −10 xds/src/test/java/io/grpc/xds/ClusterResolverLoadBalancerTest.java
  206. +3 −0 xds/src/test/java/io/grpc/xds/CsdsServiceTest.java
  207. +7 −3 xds/src/test/java/io/grpc/xds/RingHashLoadBalancerTest.java
  208. +70 −5 xds/src/test/java/io/grpc/xds/WeightedRoundRobinLoadBalancerTest.java
  209. +2 −0 xds/src/test/java/io/grpc/xds/WeightedTargetLoadBalancerTest.java
  210. +11 −16 xds/src/test/java/io/grpc/xds/WrrLocalityLoadBalancerTest.java
1 change: 1 addition & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -60,6 +60,7 @@ use_repo(
non_module_deps,
"com_github_cncf_xds",
"envoy_api",
"com_google_protobuf_javalite",
"io_grpc_grpc_proto",
)

30 changes: 15 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -44,8 +44,8 @@ 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.63.0/examples) and the
[Android example](https://github.com/grpc/grpc-java/tree/v1.63.0/examples/android)
The [examples](https://github.com/grpc/grpc-java/tree/v1.65.0/examples) and the
[Android example](https://github.com/grpc/grpc-java/tree/v1.65.0/examples/android)
are standalone projects that showcase the usage of gRPC.

Download
@@ -56,18 +56,18 @@ Download [the JARs][]. Or for Maven with non-Android, add to your `pom.xml`:
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.63.0</version>
<version>1.65.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.63.0</version>
<version>1.65.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.63.0</version>
<version>1.65.0</version>
</dependency>
<dependency> <!-- necessary for Java 9+ -->
<groupId>org.apache.tomcat</groupId>
@@ -79,18 +79,18 @@ Download [the JARs][]. Or for Maven with non-Android, add to your `pom.xml`:

Or for Gradle with non-Android, add to your dependencies:
```gradle
runtimeOnly 'io.grpc:grpc-netty-shaded:1.63.0'
implementation 'io.grpc:grpc-protobuf:1.63.0'
implementation 'io.grpc:grpc-stub:1.63.0'
runtimeOnly 'io.grpc:grpc-netty-shaded:1.65.0'
implementation 'io.grpc:grpc-protobuf:1.65.0'
implementation 'io.grpc:grpc-stub:1.65.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.63.0'
implementation 'io.grpc:grpc-protobuf-lite:1.63.0'
implementation 'io.grpc:grpc-stub:1.63.0'
implementation 'io.grpc:grpc-okhttp:1.65.0'
implementation 'io.grpc:grpc-protobuf-lite:1.65.0'
implementation 'io.grpc:grpc-stub:1.65.0'
compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // necessary for Java 9+
```

@@ -99,7 +99,7 @@ For [Bazel](https://bazel.build), you can either
(with the GAVs from above), or use `@io_grpc_grpc_java//api` et al (see below).

[the JARs]:
https://search.maven.org/search?q=g:io.grpc%20AND%20v:1.63.0
https://search.maven.org/search?q=g:io.grpc%20AND%20v:1.65.0

Development snapshots are available in [Sonatypes's snapshot
repository](https://oss.sonatype.org/content/repositories/snapshots/).
@@ -131,7 +131,7 @@ For protobuf-based codegen integrated with the Maven build system, you can use
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.25.1:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.63.0:exe:${os.detected.classifier}</pluginArtifact>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.65.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
@@ -161,7 +161,7 @@ protobuf {
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.63.0'
artifact = 'io.grpc:protoc-gen-grpc-java:1.65.0'
}
}
generateProtoTasks {
@@ -194,7 +194,7 @@ protobuf {
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.63.0'
artifact = 'io.grpc:protoc-gen-grpc-java:1.65.0'
}
}
generateProtoTasks {
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
@@ -84,7 +84,7 @@ with OpenSSL](#tls-with-netty-tcnative-on-openssl) are other valid options.
[Apache Tomcat's tcnative](https://tomcat.apache.org/native-doc/) and is a JNI
wrapper around OpenSSL/BoringSSL/LibreSSL.

We recommend BoringSSL for its simplicitly and low occurrence of security
We recommend BoringSSL for its simplicity and low occurrence of security
vulnerabilities relative to OpenSSL. BoringSSL is used by Conscrypt as well.

### TLS with netty-tcnative on BoringSSL
2 changes: 2 additions & 0 deletions all/build.gradle
Original file line number Diff line number Diff line change
@@ -12,9 +12,11 @@ def subprojects = [
project(':grpc-auth'),
project(':grpc-core'),
project(':grpc-grpclb'),
project(':grpc-gcp-csm-observability'),
project(':grpc-inprocess'),
project(':grpc-netty'),
project(':grpc-okhttp'),
project(':grpc-opentelemetry'),
project(':grpc-protobuf'),
project(':grpc-protobuf-lite'),
project(':grpc-rls'),
2 changes: 1 addition & 1 deletion alts/src/main/java/io/grpc/alts/AltsChannelBuilder.java
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@

/**
* ALTS version of {@code ManagedChannelBuilder}. This class sets up a secure and authenticated
* commmunication between two cloud VMs using ALTS.
* communication between two cloud VMs using ALTS.
*/
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4151")
public final class AltsChannelBuilder extends ForwardingChannelBuilder2<AltsChannelBuilder> {
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@
import java.util.logging.Logger;

/**
* Provides secure and authenticated commmunication between two cloud VMs using ALTS.
* Provides secure and authenticated communication between two cloud VMs using ALTS.
*/
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4151")
public final class AltsChannelCredentials {
Original file line number Diff line number Diff line change
@@ -147,7 +147,7 @@ public void getBytesToSendToPeer(ByteBuffer bytes) throws GeneralSecurityExcepti
return;
}

// Prepare the next message, if neeeded.
// Prepare the next message, if needed.
if (sendBuffer == null) {
if (sendState.next() != receiveState) {
// We're still waiting for bytes from the peer, so bail.
4 changes: 4 additions & 0 deletions api/build.gradle
Original file line number Diff line number Diff line change
@@ -55,7 +55,11 @@ dependencies {
tasks.named("javadoc").configure {
source sourceSets.context.allSource
// We want io.grpc.Internal, but not io.grpc.Internal*
exclude 'io/grpc/*MetricInstrument.java'
exclude 'io/grpc/*MetricInstrumentRegistry.java'
exclude 'io/grpc/Internal?*.java'
exclude 'io/grpc/MetricRecorder.java'
exclude 'io/grpc/MetricSink.java'
}

tasks.named("sourcesJar").configure {
23 changes: 23 additions & 0 deletions api/src/main/java/io/grpc/CallbackMetricInstrument.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright 2024 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.
*/

package io.grpc;

/**
* Tagging interface for MetricInstruments that can be used with batch callbacks.
*/
@Internal
public interface CallbackMetricInstrument extends MetricInstrument {}
19 changes: 16 additions & 3 deletions api/src/main/java/io/grpc/ClientStreamTracer.java
Original file line number Diff line number Diff line change
@@ -70,10 +70,23 @@ public void inboundHeaders() {
}

/**
* Trailing metadata has been received from the server.
* Headers has been received from the server. This method does not pass ownership to {@code
* headers}, so implementations must not access the metadata after returning. Modifications to the
* metadata within this method will be seen by interceptors and the application.
*
* @param trailers the mutable trailing metadata. Modifications to it will be seen by
* interceptors and the application.
* @param headers the received header metadata
*/
public void inboundHeaders(Metadata headers) {
inboundHeaders();
}

/**
* Trailing metadata has been received from the server. This method does not pass ownership to
* {@code trailers}, so implementations must not access the metadata after returning.
* Modifications to the metadata within this method will be seen by interceptors and the
* application.
*
* @param trailers the received trailing metadata
* @since 1.17.0
*/
public void inboundTrailers(Metadata trailers) {
36 changes: 36 additions & 0 deletions api/src/main/java/io/grpc/Configurator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2024 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.
*/

package io.grpc;

/**
* Provides hooks for modifying gRPC channels and servers during their construction.
*/
interface Configurator {
/**
* Allows implementations to modify the channel builder.
*
* @param channelBuilder the channel builder being constructed
*/
default void configureChannelBuilder(ManagedChannelBuilder<?> channelBuilder) {}

/**
* Allows implementations to modify the server builder.
*
* @param serverBuilder the server builder being constructed
*/
default void configureServerBuilder(ServerBuilder<?> serverBuilder) {}
}
78 changes: 78 additions & 0 deletions api/src/main/java/io/grpc/ConfiguratorRegistry.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Copyright 2024 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.
*/

package io.grpc;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.concurrent.GuardedBy;

/**
* A registry for {@link Configurator} instances.
*
* <p>This class is responsible for maintaining a list of configurators and providing access to
* them. The default registry can be obtained using {@link #getDefaultRegistry()}.
*/
final class ConfiguratorRegistry {
private static ConfiguratorRegistry instance;

@GuardedBy("this")
private boolean wasConfiguratorsSet;
@GuardedBy("this")
private boolean configFrozen;
@GuardedBy("this")
private List<Configurator> configurators = Collections.emptyList();

ConfiguratorRegistry() {}

/**
* Returns the default global instance of the configurator registry.
*/
public static synchronized ConfiguratorRegistry getDefaultRegistry() {
if (instance == null) {
instance = new ConfiguratorRegistry();
}
return instance;
}

/**
* Sets the configurators in this registry. This method can only be called once.
*
* @param configurators the configurators to set
* @throws IllegalStateException if this method is called more than once
*/
public synchronized void setConfigurators(List<? extends Configurator> configurators) {
if (configFrozen) {
throw new IllegalStateException("Configurators are already set");
}
this.configurators = Collections.unmodifiableList(new ArrayList<>(configurators));
configFrozen = true;
wasConfiguratorsSet = true;
}

/**
* Returns a list of the configurators in this registry.
*/
public synchronized List<Configurator> getConfigurators() {
configFrozen = true;
return configurators;
}

public synchronized boolean wasSetConfiguratorsCalled() {
return wasConfiguratorsSet;
}
}
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@
*/
@Internal
public final class DoubleCounterMetricInstrument extends PartialMetricInstrument {
DoubleCounterMetricInstrument(int index, String name, String description, String unit,
public DoubleCounterMetricInstrument(int index, String name, String description, String unit,
List<String> requiredLabelKeys, List<String> optionalLabelKeys, boolean enableByDefault) {
super(index, name, description, unit, requiredLabelKeys, optionalLabelKeys, enableByDefault);
}
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@
public final class DoubleHistogramMetricInstrument extends PartialMetricInstrument {
private final List<Double> bucketBoundaries;

DoubleHistogramMetricInstrument(int index, String name, String description, String unit,
public DoubleHistogramMetricInstrument(int index, String name, String description, String unit,
List<Double> bucketBoundaries, List<String> requiredLabelKeys, List<String> optionalLabelKeys,
boolean enableByDefault) {
super(index, name, description, unit, requiredLabelKeys, optionalLabelKeys, enableByDefault);
8 changes: 7 additions & 1 deletion api/src/main/java/io/grpc/ForwardingChannelBuilder2.java
Original file line number Diff line number Diff line change
@@ -94,6 +94,12 @@ public T intercept(ClientInterceptor... interceptors) {
return thisT();
}

@Override
protected T interceptWithTarget(InterceptorFactory factory) {
delegate().interceptWithTarget(factory);
return thisT();
}

@Override
public T addTransportFilter(ClientTransportFilter transportFilter) {
delegate().addTransportFilter(transportFilter);
@@ -252,7 +258,7 @@ public T disableServiceConfigLookUp() {
}

@Override
public T addMetricSink(MetricSink metricSink) {
protected T addMetricSink(MetricSink metricSink) {
delegate().addMetricSink(metricSink);
return thisT();
}
Loading