Skip to content

Issues after upgrading from 2.6.0 to 2.8.4 #2900

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

Closed
fkjaekel opened this issue Feb 11, 2025 · 3 comments
Closed

Issues after upgrading from 2.6.0 to 2.8.4 #2900

fkjaekel opened this issue Feb 11, 2025 · 3 comments
Labels
duplicate This issue or pull request already exists

Comments

@fkjaekel
Copy link

After I upgraded from 2.6.0 to 2.8.4 I started to get the following issues:

  1. When accessing /doc:
    java.lang.NullPointerException: Cannot invoke "String.substring(int)" because the return value of "io.swagger.v3.oas.models.media.Schema.get$ref()" is null at org.springdoc.core.converters.HateoasLinksConverter.resolve(HateoasLinksConverter.java:74) at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:97) at org.springdoc.core.converters.PageOpenAPIConverter.resolve(PageOpenAPIConverter.java:102) at org.springdoc.core.converters.SortOpenAPIConverter.resolve(SortOpenAPIConverter.java:92) at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) at io.swagger.v3.core.jackson.ModelResolver.lambda$resolve$2(ModelResolver.java:739) at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:348) at org.springdoc.core.converters.WebFluxSupportConverter.resolve(WebFluxSupportConverter.java:89) at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:163) at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:72) at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:84) at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:95) at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:141) at org.springdoc.core.converters.OAS31ModelConverter.resolve(OAS31ModelConverter.java:49) at org.springdoc.core.converters.CollectionModelContentConverter.resolve(CollectionModelContentConverter.java:84) at org.springdoc.core.converters.HateoasLinksConverter.resolve(HateoasLinksConverter.java:73) at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:97) at org.springdoc.core.converters.PageOpenAPIConverter.resolve(PageOpenAPIConverter.java:102) at org.springdoc.core.converters.SortOpenAPIConverter.resolve(SortOpenAPIConverter.java:92) at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:745) at org.springdoc.core.converters.WebFluxSupportConverter.resolve(WebFluxSupportConverter.java:89) at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:163) at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:72) at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:84) at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:95) at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:141) at org.springdoc.core.converters.OAS31ModelConverter.resolve(OAS31ModelConverter.java:49) at org.springdoc.core.converters.CollectionModelContentConverter.resolve(CollectionModelContentConverter.java:84) at org.springdoc.core.converters.HateoasLinksConverter.resolve(HateoasLinksConverter.java:73) at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:97) at org.springdoc.core.converters.PageOpenAPIConverter.resolve(PageOpenAPIConverter.java:102) at org.springdoc.core.converters.SortOpenAPIConverter.resolve(SortOpenAPIConverter.java:92) at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:493) at org.springdoc.core.converters.WebFluxSupportConverter.resolve(WebFluxSupportConverter.java:89) at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:163) at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:72) at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:84) at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:95) at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:141) at org.springdoc.core.converters.OAS31ModelConverter.resolve(OAS31ModelConverter.java:49) at org.springdoc.core.converters.CollectionModelContentConverter.resolve(CollectionModelContentConverter.java:74) at org.springdoc.core.converters.HateoasLinksConverter.resolve(HateoasLinksConverter.java:87) at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:97) at org.springdoc.core.converters.PageOpenAPIConverter.resolve(PageOpenAPIConverter.java:102) at org.springdoc.core.converters.SortOpenAPIConverter.resolve(SortOpenAPIConverter.java:92) at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:745) at org.springdoc.core.converters.WebFluxSupportConverter.resolve(WebFluxSupportConverter.java:89) at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:163) at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:72) at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:84) at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:95) at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:141) at org.springdoc.core.converters.OAS31ModelConverter.resolve(OAS31ModelConverter.java:49) at org.springdoc.core.converters.CollectionModelContentConverter.resolve(CollectionModelContentConverter.java:84) at org.springdoc.core.converters.HateoasLinksConverter.resolve(HateoasLinksConverter.java:73) at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:97) at org.springdoc.core.converters.PageOpenAPIConverter.resolve(PageOpenAPIConverter.java:102) at org.springdoc.core.converters.SortOpenAPIConverter.resolve(SortOpenAPIConverter.java:92) at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:76) at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:95) at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:141) at org.springdoc.core.converters.OAS31ModelConverter.resolve(OAS31ModelConverter.java:49) at org.springdoc.core.converters.CollectionModelContentConverter.resolve(CollectionModelContentConverter.java:84) at org.springdoc.core.converters.HateoasLinksConverter.resolve(HateoasLinksConverter.java:87) at org.springdoc.core.converters.PageableOpenAPIConverter.resolve(PageableOpenAPIConverter.java:97) at org.springdoc.core.converters.PageOpenAPIConverter.resolve(PageOpenAPIConverter.java:102) at org.springdoc.core.converters.SortOpenAPIConverter.resolve(SortOpenAPIConverter.java:92) at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) at io.swagger.v3.core.converter.ModelConverters.resolveAsResolvedSchema(ModelConverters.java:192) at org.springdoc.core.utils.SpringDocAnnotationsUtils.extractSchema(SpringDocAnnotationsUtils.java:137) at org.springdoc.core.service.GenericResponseService.calculateSchema(GenericResponseService.java:563) at org.springdoc.core.service.GenericResponseService.buildContent(GenericResponseService.java:541) at org.springdoc.core.service.GenericResponseService.buildContent(GenericResponseService.java:522) at org.springdoc.core.service.GenericResponseService.buildApiResponses(GenericResponseService.java:595) at org.springdoc.core.service.GenericResponseService.buildApiResponses(GenericResponseService.java:476) at org.springdoc.core.service.GenericResponseService.build(GenericResponseService.java:264) at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:626) at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:816) at org.springdoc.webmvc.api.OpenApiResource.lambda$calculatePath$11(OpenApiResource.java:222) at java.base/java.util.Optional.ifPresent(Optional.java:178) at org.springdoc.webmvc.api.OpenApiResource.calculatePath(OpenApiResource.java:203) at org.springdoc.webmvc.api.OpenApiResource.lambda$getPaths$2(OpenApiResource.java:173) at java.base/java.util.Optional.ifPresent(Optional.java:178) at org.springdoc.webmvc.api.OpenApiResource.getPaths(OpenApiResource.java:152) at org.springdoc.api.AbstractOpenApiResource.getOpenApi(AbstractOpenApiResource.java:370) at org.springdoc.webmvc.api.OpenApiResource.openapiJson(OpenApiResource.java:127) at org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson(OpenApiWebMvcResource.java:117) at org.springdoc.webmvc.api.MultipleOpenApiWebMvcResource.openapiJson(MultipleOpenApiWebMvcResource.java:97) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) at br.com.digital.web.framework.filter.CacheRequestContentFilter.doFilterInternal(CacheRequestContentFilter.java:27) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:114) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at br.com.digital.multitenant.web.TenantFilter.doFilterInternal(TenantFilter.java:46) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.SessionRestoringHandler.handleRequest(SessionRestoringHandler.java:119) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:395) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:861) at java.base/java.lang.VirtualThread.run(VirtualThread.java:309)

  2. Operation ids are not unique anymore.

  3. When I try to test a request on swagger ui it goes to the wrong URL. With the attached v284.json all requests are going to http://localhost:8080/v1/zipCodes?page=0&size=10

Related issue: #1095

v260.json
v284.json

Do I need additional setup to use springdoc 2.8?

Thanks

@bnasslahsen
Copy link
Collaborator

@fkjaekel,

Not reproducible.
Feel free to provide a Minimal, Reproducible Example - with HelloController that reproduces the problem.

This ticket will be closed, but can be reopened if your provide the reproducible sample.

@stefanocke
Copy link

I get the same exception as mentioned above.
I have no MRE, but I could narrow it down to:

  • with 2.8.1, it works
  • with 2.8.2, I get the exception

@bnasslahsen
Copy link
Collaborator

bnasslahsen commented Feb 17, 2025

@stefanocke,

Duplicate of #2902
Resolved in 2.8.5

@bnasslahsen bnasslahsen added duplicate This issue or pull request already exists and removed Not reproducible labels Feb 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

3 participants