Skip to content

Compatibility with Ktor 3.x.x seems to break again starting from 8.6.0 #2113

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

Open
AngeloFilaseta opened this issue May 15, 2025 · 2 comments
Labels
type: bug Something isn't working

Comments

@AngeloFilaseta
Copy link

Library Version

  • com.expediagroup:graphql-kotlin-ktor-server >= 8.6.0
  • Ktor 3.x.x

Describe the bug
The bug is almost identical to #2069;
Most of the Ktor classes fail to resolve at runtime.
The library expect to find the API of Ktor 2.x.x

Stacktrace example:

Exception in thread "main" java.lang.NoClassDefFoundError: io/ktor/server/routing/RoutingKt
        at com.expediagroup.graphql.server.ktor.GraphQLRoutesKt.graphQLPostRoute(GraphQLRoutes.kt:65)
        at com.expediagroup.graphql.server.ktor.GraphQLRoutesKt.graphQLPostRoute$default(GraphQLRoutes.kt:64)
        at com.example.MainKt.module$lambda$2(Main.kt:30)
        at io.ktor.server.routing.RoutingRoot$Plugin.install(RoutingRoot.kt:153)
        at io.ktor.server.routing.RoutingRoot$Plugin.install(RoutingRoot.kt:133)
        at io.ktor.server.application.ApplicationPluginKt.install(ApplicationPlugin.kt:121)
        at io.ktor.server.routing.RoutingRootKt.routing(RoutingRoot.kt:181)
        at com.example.MainKt.module(Main.kt:29)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Static.call(CallerImpl.kt:106)
        at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:207)
        at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:112)
        at io.ktor.server.engine.internal.CallableUtilsKt.callFunctionWithInjection(CallableUtils.kt:127)
        at io.ktor.server.engine.internal.CallableUtilsKt.executeModuleFunction(CallableUtils.kt:40)
        at io.ktor.server.engine.EmbeddedServer.launchModuleByName$lambda$32(EmbeddedServerJvm.kt:422)
        at io.ktor.server.engine.EmbeddedServer.avoidingDoubleStartupFor(EmbeddedServerJvm.kt:446)
        at io.ktor.server.engine.EmbeddedServer.launchModuleByName(EmbeddedServerJvm.kt:421)
        at io.ktor.server.engine.EmbeddedServer.dynamicModule$lambda$26(EmbeddedServerJvm.kt:381)
        at io.ktor.server.engine.EmbeddedServer.instantiateAndConfigureApplication$lambda$25(EmbeddedServerJvm.kt:371)
        at io.ktor.server.engine.EmbeddedServer.avoidingDoubleStartup(EmbeddedServerJvm.kt:428)
        at io.ktor.server.engine.EmbeddedServer.instantiateAndConfigureApplication(EmbeddedServerJvm.kt:370)
        at io.ktor.server.engine.EmbeddedServer.createApplication(EmbeddedServerJvm.kt:171)
        at io.ktor.server.engine.EmbeddedServer.start(EmbeddedServerJvm.kt:301)
        at io.ktor.server.netty.EngineMain.main(EngineMain.kt:25)
Caused by: java.lang.ClassNotFoundException: io.ktor.server.routing.RoutingKt
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
        ... 28 more

To Reproduce
I could successfully reproduce the error using the same "Minimum Reproducible Code sample "attached in #2069 changing these versions in the libs.version.toml

ktor-version = "3.1.2"
graphql-version= "8.6.0"

Expected behavior
The Library should correctly resolve the classes of Ktor 3.x.x

Additional comment
Any version of GraphQL 9.0.0 works as expected. Since version 8.5.0 also works correctly, I would expect subsequent minor releases to work as well. Is this a bug or an intentional design choice? I couldn’t find any clarification in the documentation. Thanks for your work!

@JajaComp
Copy link
Contributor

Also has this issue:
'java.lang.Object io.ktor.server.request.ApplicationReceiveFunctionsKt.receiveNullable(io.ktor.server.application.ApplicationCall, io.ktor.util.reflect.TypeInfo, kotlin.coroutines.Continuation)'
at com.expediagroup.graphql.server.ktor.KtorGraphQLRequestParser.parsePostRequest(KtorGraphQLRequestParser.kt:69)
at com.expediagroup.graphql.server.ktor.KtorGraphQLRequestParser.parseRequest$suspendImpl(KtorGraphQLRequestParser.kt:45)
at com.expediagroup.graphql.server.ktor.KtorGraphQLRequestParser.parseRequest(KtorGraphQLRequestParser.kt)
at com.expediagroup.graphql.server.ktor.KtorGraphQLRequestParser.parseRequest(KtorGraphQLRequestParser.kt:37)
at com.expediagroup.graphql.server.execution.GraphQLServer$execute$2.invokeSuspend(GraphQLServer.kt:50)
at com.expediagroup.graphql.server.execution.GraphQLServer$execute$2.invoke(GraphQLServer.kt)
at com.expediagroup.graphql.server.execution.GraphQLServer$execute$2.invoke(GraphQLServer.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndspatched(Undispatched.kt:66)

ktor version 3.1.3
graphql version >=8.6.0

@anton-subbotin
Copy link

We have this issue too. Versions 8.5.0 and 8.x.x have diverged since 8.2.1:

% git log -1 $(git merge-base 8.5.0 8.6.0)
commit 2318398c9d9c5321955b8b883c8065f0a911afee (tag: 8.2.1)

Fix of the similar closed issue #2069, present in 8.3.0, 8.4.0, 8.5.0 and 9.0.0-alpha.1 onwards, is not in git history of 8.6.0 and 8.7.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: bug Something isn't working
Development

No branches or pull requests

3 participants