leangen / graphql-spqr

Build a GraphQL service in seconds
Apache License 2.0
1.1k stars 183 forks source link

Exception when using SPQR 0.12.4 with graphql-java 22.0+ #511

Open george-stanchev-at-acton opened 3 months ago

george-stanchev-at-acton commented 3 months ago

We ran into the same issue as described here

https://stackoverflow.com/questions/78508591/exception-when-trying-to-query-the-schema-in-graphql-spqr-spring-boot-starter

The stack on our side is

2024-08-22T17:45:41.146+0000 ERROR categorization-service:UNKNOWN [tomcat-handler-253] requestor_name:N/A,account_id:N/A,correlation_id:categorization-service-5ba0bdbf-bff9-4608-8005-e909bd26309c c.a.m.c.ControllerExceptionHandler - Unable to process request to /graphql
jakarta.servlet.ServletException: Async processing failed: java.lang.NoSuchMethodError: 'graphql.ExecutionInput$Builder graphql.ExecutionInput$Builder.context(java.util.function.UnaryOperator)'
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod$ConcurrentResultHandlerMethod.lambda$new$0(ServletInvocableHandlerMethod.java:224)
    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:255)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)
    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:926)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
    at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
    at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479)
    at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapUnsecured$1(ObservationFilterChainDecorator.java:90)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:219)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
    at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
    at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)
    at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)

It looks like they changed the deprecated builder method context and runtime call is failing with NoSuchMethod error

from

        public Builder context(UnaryOperator<GraphQLContext.Builder> contextBuilderFunction) {

to

        public Builder context(Object context) {

We had to roll back to graphql-java 21.5 to work around this issue

ErtugrulSener commented 2 months ago

@kaqqao When will you release the newer version?

altrof commented 1 month ago

@kaqqao @BaldyLocks please upgrade graphql-java version in dependencies. graphql-java 21.0 - 21.5 versions have vulnerability.