Skip to content
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

Using Spring Boot 3.3.0 results in NoSuchMethodError #151

Open
ErtugrulSener opened this issue Jun 13, 2024 · 4 comments
Open

Using Spring Boot 3.3.0 results in NoSuchMethodError #151

ErtugrulSener opened this issue Jun 13, 2024 · 4 comments

Comments

@ErtugrulSener
Copy link
Contributor

ErtugrulSener commented Jun 13, 2024

Hey @kaqqao ,

I've tried updating my spring boot version to 3.3.0 and then got the following Stacktrace, when trying to access a graphql endpoint.
Could you maybe have an eye on it?

java.lang.NoSuchMethodError: 'graphql.ExecutionInput$Builder graphql.ExecutionInput$Builder.context(java.util.function.UnaryOperator)'
	at io.leangen.graphql.util.ContextUtils.lambda$wrapContext$1(ContextUtils.java:13)
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Assembly trace from producer [reactor.core.publisher.MonoCompletionStage] :
	reactor.core.publisher.Mono.fromFuture(Mono.java:629)
	io.leangen.graphql.spqr.spring.web.HttpExecutor.lambda$execute$0(HttpExecutor.java:33)
Error has been observed at the following site(s):
	*_______Mono.fromFutureat io.leangen.graphql.spqr.spring.web.HttpExecutor.lambda$execute$0(HttpExecutor.java:33)
	*__Mono.deferContextualat io.leangen.graphql.spqr.spring.web.HttpExecutor.execute(HttpExecutor.java:33)
	|_             Mono.mapat io.leangen.graphql.spqr.spring.web.HttpExecutor.execute(HttpExecutor.java:36)
Original Stack Trace:
		at io.leangen.graphql.util.ContextUtils.lambda$wrapContext$1(ContextUtils.java:13)
		at graphql.ExecutionInput.transform(ExecutionInput.java:164)
		at io.leangen.graphql.util.ContextUtils.wrapContext(ContextUtils.java:13)
		at io.leangen.graphql.GraphQLRuntime$InputTransformer.instrumentExecutionInput(GraphQLRuntime.java:126)
		at graphql.GraphQL.lambda$executeAsync$9(GraphQL.java:421)
		at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
		at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
		at graphql.GraphQL.executeAsync(GraphQL.java:418)
		at io.leangen.graphql.spqr.spring.web.HttpExecutor.lambda$execute$0(HttpExecutor.java:33)
		at reactor.core.publisher.MonoDeferContextual.subscribe(MonoDeferContextual.java:47)
		at reactor.core.publisher.Mono.subscribe(Mono.java:4568)
		at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$DeferredResultSubscriber.connect(ReactiveTypeHandler.java:466)
		at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler.handleValue(ReactiveTypeHandler.java:163)
		at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler.handleReturnValue(ResponseBodyEmitterReturnValueHandler.java:154)
		at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:78)
		at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:136)
		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.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at plx.mcs.erfassung.service.configurations.filters.AttachUsernameFilter.doFilterInternal(AttachUsernameFilter.java:26)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at plx.mcs.erfassung.service.configurations.filters.RequestWrapperFilter.doFilterInternal(RequestWrapperFilter.java:54)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
		at java.base/java.lang.Thread.run(Thread.java:833)

Thanks in advance.

@ErtugrulSener
Copy link
Contributor Author

ErtugrulSener commented Jun 13, 2024

It seems like this method 'Builder.context' was deprecated since 2021-07-05. It's part of the graphql-java dependency. But it still exists, Idk why we get a "NoSuchMethod" error.

@agusevas
Copy link

agusevas commented Jun 28, 2024

The stack trace is a bit misleading. The problem lies in graphql-java version 22.0. Spring Boot 3.3 imports graphql-java:22.0 version and overrides SPQR graphql-java dependency. Adding property <graphql-java.version>21.4</graphql-java.version> in Maven solves the issue.

@kaqqao
Copy link
Member

kaqqao commented Jun 28, 2024

A new release is coming soon that will be based on 22.0. But this is an evergreen advice: always, always, without an exception, check that your graphql-java version is compatible, it's the number one suspect for weird errors.

@azura-global
Copy link

A new release is coming soon that will be based on 22.0. But this is an evergreen advice: always, always, without an exception, check that your graphql-java version is compatible, it's the number one suspect for weird errors.

@kaqqao Do you know how soon 22.0 will be released?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants