-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Application does not start after update from 3.15.2 to 3.16.3 due to open api processor #44577
Comments
Could you try to come up with a small Maven project reproducing the issue? |
/cc @EricWittmann (openapi), @MikeEdgar (openapi), @phillip-kruger (openapi) |
To work around it, you can try adding a
It may already be fixed in newer versions of smallrye-open-api. |
@msts1906 It would help if you could try with 3.17.0.CR1 to see if the next Quarkus version will fix it. |
That does indeed fix the issue |
That fixes the issue too on 3.16.3 I assume something was off with the defaults? |
Given there is an easy workaround and we have a fix in 3.17.0 that will be released next week, I will mark this one as closed. Thanks for the report and for checking! |
Describe the bug
Beginning with any Quarkus 3.16 version, the application does not start due to something in the OpenApi processor.
Everything works perfectly fine in 3.15 and older.
The class with the OpenAPI Config looks as follows:
`package com.example;
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition;
import org.eclipse.microprofile.openapi.annotations.enums.SecuritySchemeType;
import org.eclipse.microprofile.openapi.annotations.info.Info;
import org.eclipse.microprofile.openapi.annotations.security.*;
@ApplicationPath("/api")
@OpenAPIDefinition(
info =
@Info(
title = "Service",
version = "1.0.0",
description =
"The service provides endpoints for managing resources."),
security = {@securityrequirement(name = "oauth")})
@Securityscheme(
securitySchemeName = "oauth",
type = SecuritySchemeType.OAUTH2,
openIdConnectUrl =
"https://example.com/auth/realms/example/.well-known/openid-configuration",
flows =
@OAuthFlows(
clientCredentials =
@OAuthFlow(
scopes = {@OAuthScope(name = "oauth")},
authorizationUrl = "https://example.com/auth/realms/example",
tokenUrl =
"https://example.com/auth/realms/example/protocol/openid-connect/token",
refreshUrl =
"https://example.com/auth/realms/example/protocol/openid-connect/token")))
public class ServiceApp extends Application {}`
On start up I get the following error log:
2024-11-19 16:24:20,668 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor#build threw an exception: java.lang.NullPointerException
at java.base/java.util.HashMap.merge(HashMap.java:1363)
at java.base/java.util.stream.Collectors.lambda$toMap$68(Collectors.java:1636)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:73)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:58)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:47)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:53)
at io.smallrye.openapi.runtime.io.security.OAuthFlowIO.read(OAuthFlowIO.java:38)
at io.smallrye.openapi.runtime.io.security.OAuthFlowIO.read(OAuthFlowIO.java:15)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.ModelIO.read(ModelIO.java:142)
at io.smallrye.openapi.runtime.io.security.OAuthFlowsIO.read(OAuthFlowsIO.java:37)
at io.smallrye.openapi.runtime.io.security.OAuthFlowsIO.read(OAuthFlowsIO.java:15)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.ModelIO.read(ModelIO.java:142)
at io.smallrye.openapi.runtime.io.security.SecuritySchemeIO.read(SecuritySchemeIO.java:55)
at io.smallrye.openapi.runtime.io.security.SecuritySchemeIO.read(SecuritySchemeIO.java:17)
at io.smallrye.openapi.runtime.io.MapModelIO.read(MapModelIO.java:35)
at io.smallrye.openapi.runtime.io.MapModelIO.lambda$readMap$0(MapModelIO.java:70)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.MapModelIO.lambda$readMap$1(MapModelIO.java:70)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:73)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:58)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:39)
at io.smallrye.openapi.runtime.io.security.SecurityIO.readSchemes(SecurityIO.java:56)
at io.smallrye.openapi.runtime.scanner.spi.AnnotationScanner.processSecuritySchemeAnnotation(AnnotationScanner.java:142)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.processApplicationClass(JaxRsAnnotationScanner.java:202)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.processApplicationClasses(JaxRsAnnotationScanner.java:172)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.scan(JaxRsAnnotationScanner.java:148)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.scan(OpenApiAnnotationScanner.java:232)
at io.smallrye.openapi.api.SmallRyeOpenAPI$Builder.buildAnnotationModel(SmallRyeOpenAPI.java:588)
at io.smallrye.openapi.api.SmallRyeOpenAPI$Builder.build(SmallRyeOpenAPI.java:680)
at io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor.build(SmallRyeOpenApiProcessor.java:874)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:499)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor#build threw an exception: java.lang.NullPointerException
at java.base/java.util.HashMap.merge(HashMap.java:1363)
at java.base/java.util.stream.Collectors.lambda$toMap$68(Collectors.java:1636)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:73)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:58)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:47)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:53)
at io.smallrye.openapi.runtime.io.security.OAuthFlowIO.read(OAuthFlowIO.java:38)
at io.smallrye.openapi.runtime.io.security.OAuthFlowIO.read(OAuthFlowIO.java:15)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.ioO.read(ModelIO.java:142)
at io.smallrye.openapi.runtime.io.security.OAuthFlowsIO.read(OAuthFlowsIO.java:37)
at io.smallrye.openapi.runtime.io.security.OAuthFlowsIO.read(OAuthFlowsIO.java:15)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.ModelIO.read(ModelIO.java:142)
at io.smallrye.openapi.runtime.io.security.SecuritySchemeIO.read(SecuritySchemeIO.java:55)
at io.smallrye.openapi.runtime.io.security.SecuritySchemeIO.read(SecuritySchemeIO.java:17)
at io.smallrye.openapi.runtime.io.MapModelIO.read(MapModelIO.java:35)
at io.smallrye.openapi.runtime.io.MapModelIO.lambda$readMap$0(MapModelIO.java:70)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.MapModelIO.lambda$readMap$1(MapModelIO.java:70)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:73)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:58)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:39)
at io.smallrye.openapi.runtime.io.security.SecurityIO.readSchemes(SecurityIO.java:56)
at io.smallrye.openapi.runtime.scanner.spi.AnnotationScanner.processSecuritySchemeAnnotation(AnnotationScanner.java:142)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.processApplicationClass(JaxRsAnnotationScanner.java:202)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.processApplicationClasses(JaxRsAnnotationScanner.java:172)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.scan(JaxRsAnnotationScanner.java:148)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.scan(OpenApiAnnotationScanner.java:232)
at io.smallrye.openapi.api.SmallRyeOpenAPI$Builder.buildAnnotationModel(SmallRyeOpenAPI.java:588)
at io.smallrye.openapi.api.SmallRyeOpenAPI$Builder.build(SmallRyeOpenAPI.java:680)
at io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor.build(SmallRyeOpenApiProcessor.java:874)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:499)
Caused by: java.lang.NullPointerException
at java.base/java.util.HashMap.merge(HashMap.java:1363)
at java.base/java.util.stream.Collectors.lambda$toMap$68(Collectors.java:1636)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:73)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:58)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:47)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:53)
at io.smallrye.openapi.runtime.io.security.OAuthFlowIO.read(OAuthFlowIO.java:38)
at io.smallrye.openapi.runtime.io.security.OAuthFlowIO.read(OAuthFlowIO.java:15)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.ModelIO.read(ModelIO.java:142)
at io.smallrye.openapi.runtime.io.security.OAuthFlowsIO.read(OAuthFlowsIO.java:37)
at io.smallrye.openapi.runtime.io.security.OAuthFlowsIO.read(OAuthFlowsIO.java:15)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.ModelIO.read(ModelIO.java:142)
at io.smallrye.openapi.runtime.io.security.SecuritySchemeIO.read(SecuritySchemeIO.java:55)
at io.smallrye.openapi.runtime.io.security.SecuritySchemeIO.read(SecuritySchemeIO.java:17)
at io.smallrye.openapi.runtime.io.MapModelIO.read(MapModelIO.java:35)
at io.smallrye.openapi.runtime.io.MapModelIO.lambda$readMap$0(MapModelIO.java:70)
at java.base/java.util.Optional.map(Optional.java:260)
at io.smallrye.openapi.runtime.io.MapModelIO.lambda$readMap$1(MapModelIO.java:70)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:73)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:58)
at io.smallrye.openapi.runtime.io.MapModelIO.readMap(MapModelIO.java:39)
at io.smallrye.openapi.runtime.io.security.SecurityIO.readSchemes(SecurityIO.java:56)
at io.smallrye.openapi.runtime.scanner.spi.AnnotationScanner.processSecuritySchemeAnnotation(AnnotationScanner.java:142)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.processApplicationClass(JaxRsAnnotationScanner.java:202)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.processApplicationClasses(JaxRsAnnotationScanner.java:172)
at io.smallrye.openapi.jaxrs.JaxRsAnnotationScanner.scan(JaxRsAnnotationScanner.java:148)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.scan(OpenApiAnnotationScanner.java:232)
at io.smallrye.openapi.api.SmallRyeOpenAPI$Builder.buildAnnotationModel(SmallRyeOpenAPI.java:588)
at io.smallrye.openapi.api.SmallRyeOpenAPI$Builder.build(SmallRyeOpenAPI.java:680)
at io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor.build(SmallRyeOpenApiProcessor.java:874)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueE$Task.doRunWith(EnhancedQueueExecutor.java:2675)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:499)
Expected behavior
Application starts, or at least gives a descriptive message of what went wrong
Actual behavior
The application does not start
How to Reproduce?
No response
Output of
uname -a
orver
No response
Output of
java -version
openjdk version "21" 2023-09-19 OpenJDK Runtime Environment GraalVM CE 21+35.1 (build 21+35-jvmci-23.1-b15) OpenJDK 64-Bit Server VM GraalVM CE 21+35.1 (build 21+35-jvmci-23.1-b15, mixed mode, sharing)
Quarkus version or git rev
No response
Build tool (ie. output of
mvnw --version
orgradlew --version
)Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256) Maven home: /Users/U714771/.m2/wrapper/dists/apache-maven-3.9.8-bin/337e6d14/apache-maven-3.9.8 Java version: 21, vendor: GraalVM Community, runtime: /Users/U714771/.sdkman/candidates/java/21-graalce Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "15.1", arch: "aarch64", family: "mac"
Additional information
No response
The text was updated successfully, but these errors were encountered: