Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bom/application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
<resteasy-microprofile.version>3.0.1.Final</resteasy-microprofile.version>
<resteasy-spring-web.version>3.2.0.Final</resteasy-spring-web.version>
<resteasy.version>6.2.12.Final</resteasy.version>
<opentelemetry-instrumentation.version>2.10.0-alpha</opentelemetry-instrumentation.version>
<opentelemetry-instrumentation.version>2.12.0-alpha</opentelemetry-instrumentation.version>
<opentelemetry-semconv.version>1.29.0-alpha</opentelemetry-semconv.version>
<quarkus-http.version>5.3.5</quarkus-http.version>
<micrometer.version>1.14.7</micrometer.version><!-- keep in sync with hdrhistogram: https://central.sonatype.com/artifact/io.micrometer/micrometer-core -->
Expand Down
2 changes: 1 addition & 1 deletion bom/test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<rxjava1.version>1.3.8</rxjava1.version>
<strimzi-test-container.version>0.109.2</strimzi-test-container.version>

<opentelemetry-proto.version>1.3.2-alpha</opentelemetry-proto.version>
<opentelemetry-proto.version>1.5.0-alpha</opentelemetry-proto.version>
</properties>

<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.BooleanSupplier;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -71,6 +72,7 @@
import io.quarkus.deployment.builditem.LaunchModeBuildItem;
import io.quarkus.deployment.builditem.ServiceStartBuildItem;
import io.quarkus.deployment.builditem.ShutdownContextBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageAllowIncompleteClasspathBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
import io.quarkus.deployment.recording.RecorderContext;
import io.quarkus.grpc.GrpcService;
Expand Down Expand Up @@ -114,6 +116,26 @@ public class GrpcServerProcessor {
private static final String KEY_STORE = SSL_PREFIX + "key-store";
private static final String TRUST_STORE = SSL_PREFIX + "trust-store";

public static class V3Protobuf implements BooleanSupplier {

private final GrpcServerBuildTimeConfig configuration;

public V3Protobuf(GrpcServerBuildTimeConfig configuration) {
this.configuration = configuration;
}

@Override
public boolean getAsBoolean() {
return configuration.allowIncompleteClasspath();
}
}

@SuppressWarnings("deprecation")
@BuildStep(onlyIf = V3Protobuf.class) // workaround some protobuf v3 vs v4 issues; e.g. Pulsar
NativeImageAllowIncompleteClasspathBuildItem legacyStuff() {
return new NativeImageAllowIncompleteClasspathBuildItem("quarkus-grpc");
}

@BuildStep
MinNettyAllocatorMaxOrderBuildItem setMinimalNettyMaxOrderSize() {
return new MinNettyAllocatorMaxOrderBuildItem(3);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,12 @@ public interface GrpcServerBuildTimeConfig {
@WithName("grpc-health.enabled")
@WithDefault("true")
boolean grpcHealthEnabled();

/**
* Do we allow incomplete classpath for native build.
* This is useful for some legacy stuff that doesn't yet fully support Protobuf v4,
* only v3, which is missing some classes from v4, but can still work at runtime.
*/
@WithDefault("false")
boolean allowIncompleteClasspath();
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
import java.net.SocketAddress;
import java.util.Collections;

import javax.annotation.Nullable;

import jakarta.inject.Singleton;

import io.grpc.ForwardingServerCall.SimpleForwardingServerCall;
Expand Down Expand Up @@ -88,14 +86,14 @@ public Integer getServerPort(GrpcRequest grpcRequest) {

@Override
public InetSocketAddress getNetworkLocalInetSocketAddress(
GrpcRequest grpcRequest, @Nullable Status status) {
GrpcRequest grpcRequest, Status status) {
// TODO: later version introduces TRANSPORT_ATTR_LOCAL_ADDR, might be a good idea to use it
return null;
}

@Override
public InetSocketAddress getNetworkPeerInetSocketAddress(
GrpcRequest request, @Nullable Status status) {
GrpcRequest request, Status status) {
SocketAddress address = request.getPeerSocketAddress();
if (address instanceof InetSocketAddress) {
return (InetSocketAddress) address;
Expand Down
79 changes: 78 additions & 1 deletion integration-tests/reactive-messaging-pulsar/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,84 @@

<properties>
<maven.compiler.parameters>true</maven.compiler.parameters>
<protoc.version>3.25.5</protoc.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-bom</artifactId>
<version>${protoc.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>linux-aarch_64</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>linux-ppcle_64</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>linux-s390_64</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>linux-x86_32</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>linux-x86_64</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>osx-aarch_64</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>osx-x86_64</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>windows-x86_32</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protoc</artifactId>
<classifier>windows-x86_64</classifier>
<type>exe</type>
<version>${protoc.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
Expand Down Expand Up @@ -53,6 +129,7 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-messaging-pulsar</artifactId>
</dependency>

<!-- GRPC for Protobuf -->
<dependency>
<groupId>io.quarkus</groupId>
Expand Down Expand Up @@ -278,4 +355,4 @@
</profiles>


</project>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@ quarkus.tls.custom-p12.trust-store.p12.path=target/certs/pulsar-client-truststor
quarkus.tls.custom-p12.trust-store.p12.password=Z_pkTh9xgZovK4t34cGB2o6afT4zZg0L
quarkus.tls.custom-p12.key-store.p12.path=target/certs/pulsar-client-keystore.p12
quarkus.tls.custom-p12.key-store.p12.password=Z_pkTh9xgZovK4t34cGB2o6afT4zZg0L

# workaround protobuf v3 vs v4
quarkus.grpc.server.allow-incomplete-classpath=true
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@
<hibernate-tools.version>7.1.0.Final</hibernate-tools.version>

<!-- Make sure to check compatibility between these 2 gRPC components before upgrade -->
<grpc.version>1.69.1</grpc.version> <!-- when updating, verify if following versions should not be updated too: -->
<grpc.version>1.73.0</grpc.version> <!-- when updating, verify if following versions should not be updated too: -->
<!-- com.google.auth -->
<!-- perfmark.version https://central.sonatype.com/artifact/io.grpc/grpc-core -->
<grpc-jprotoc.version>1.2.2</grpc-jprotoc.version>
<protoc.version>3.25.5</protoc.version>
<protoc.version>4.31.1</protoc.version>
<protobuf-java.version>${protoc.version}</protobuf-java.version>
<protobuf-kotlin.version>${protoc.version}</protobuf-kotlin.version>
<proto-google-common-protos.version>2.60.0</proto-google-common-protos.version>
Expand Down
Loading