Skip to content

SSE transport for server does not work inside custom Ktor's Route #94

Open
@schedin

Description

@schedin

Describe the bug
I want my Ktor http server to serve the MCP server under a specific URL. I have chosen the example route myRoute since it was in the example in:

route("myRoute") {

To Reproduce
Steps to reproduce the behavior, alternative 1:

  1. Clone https://github.com/schedin/mcp-ktor-route-problem/
  2. Run gradlew run in one terminal
  3. Run curl --include --max-time 1 http://localhost:8080/myRoute in another terminal

Steps to reproduce the behavior, alternative 2:

  1. Copy the code from the README.md file:

    kotlin-sdk/README.md

    Lines 144 to 169 in 9f00f22

    import io.ktor.server.application.*
    import io.ktor.server.sse.SSE
    import io.modelcontextprotocol.kotlin.sdk.server.mcp
    fun Application.module() {
    install(SSE)
    routing {
    route("myRoute") {
    mcp {
    Server(
    serverInfo = Implementation(
    name = "example-sse-server",
    version = "1.0.0"
    ),
    options = ServerOptions(
    capabilities = ServerCapabilities(
    prompts = ServerCapabilities.Prompts(listChanged = null),
    resources = ServerCapabilities.Resources(subscribe = null, listChanged = null)
    )
    )
    )
    }
    }
    }
    }
  2. Add lines for a simple Netty based embedded server and fix imports/dependencies and a run configuration.
  3. Run gradlew run in one terminal
  4. Run curl --include --max-time 1 http://localhost:8080/myRoute in another terminal

Actual behavior

C:\git\mcp-ktor-route-problem>curl --include --max-time 1 http://localhost:8080/myRoute
HTTP/1.1 404 Not Found
Content-Length: 0

Expected behavior
The request should start a stream from the server and then break after the curl timeout of 1 seconds (from the command line). It should look close to this:

HTTP/1.1 200 OK
Content-Type: text/event-stream
Cache-Control: no-store
Connection: keep-alive
X-Accel-Buffering: no
transfer-encoding: chunked

data: ?sessionId=69a80715-2ecb-4dab-9c40-642f7129cff9
event: endpoint

curl: (28) Operation timed out after 1014 milliseconds with 74 bytes received

I can get the expected output if I modify the curl command and use / instead of /myRoute.

Logs

C:\git\mcp-ktor-route-problem>gradlew run

> Task :run
2025-05-03 20:23:20.936 [main] INFO  io.ktor.server.Application - Autoreload is disabled because the development mode is off.
2025-05-03 20:23:20.993 [main] INFO  io.ktor.server.Application - Application started in 0.257 seconds.
2025-05-03 20:23:21.009 [main] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
2025-05-03 20:23:21.028 [main] DEBUG i.n.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false
2025-05-03 20:23:21.029 [main] DEBUG i.n.util.internal.PlatformDependent0 - Java version: 17
2025-05-03 20:23:21.029 [main] DEBUG i.n.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available
2025-05-03 20:23:21.030 [main] DEBUG i.n.util.internal.PlatformDependent0 - sun.misc.Unsafe base methods: all available
2025-05-03 20:23:21.030 [main] DEBUG i.n.util.internal.PlatformDependent0 - sun.misc.Unsafe.storeFence: available
2025-05-03 20:23:21.030 [main] DEBUG i.n.util.internal.PlatformDependent0 - java.nio.Buffer.address: available
2025-05-03 20:23:21.031 [main] DEBUG i.n.util.internal.PlatformDependent0 - direct buffer constructor: unavailable
java.lang.UnsupportedOperationException: Reflective setAccessible(true) disabled
        at io.netty.util.internal.ReflectionUtil.trySetAccessible(ReflectionUtil.java:31)
        at io.netty.util.internal.PlatformDependent0$5.run(PlatformDependent0.java:332)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at io.netty.util.internal.PlatformDependent0.<clinit>(PlatformDependent0.java:325)
        at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:334)
        at io.netty.util.internal.PlatformDependent.<clinit>(PlatformDependent.java:90)
        at io.netty.util.internal.ClassInitializerUtil.tryLoadClasses(ClassInitializerUtil.java:32)
        at io.netty.channel.kqueue.Native.<clinit>(Native.java:65)
        at io.netty.channel.kqueue.KQueue.<clinit>(KQueue.java:36)
        at io.ktor.server.netty.NettyApplicationEngineKt.getChannelClass(NettyApplicationEngine.kt:312)
        at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(EventLoopGroupProxy.kt:32)
        at io.ktor.server.netty.NettyApplicationEngine.connectionEventGroup_delegate$lambda$0(NettyApplicationEngine.kt:156)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:83)
        at io.ktor.server.netty.NettyApplicationEngine.getConnectionEventGroup(NettyApplicationEngine.kt:155)
        at io.ktor.server.netty.NettyApplicationEngine.createBootstrap(NettyApplicationEngine.kt:211)
        at io.ktor.server.netty.NettyApplicationEngine.bootstraps_delegate$lambda$7(NettyApplicationEngine.kt:200)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:83)
        at io.ktor.server.netty.NettyApplicationEngine.getBootstraps$ktor_server_netty(NettyApplicationEngine.kt:199)
        at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:250)
        at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:39)
        at io.ktor.server.engine.EmbeddedServer.start(EmbeddedServerJvm.kt:323)
        at McpKtorRouteProblemKt.main(McpKtorRouteProblem.kt:14)
        at McpKtorRouteProblemKt.main(McpKtorRouteProblem.kt)
2025-05-03 20:23:21.032 [main] DEBUG i.n.util.internal.PlatformDependent0 - java.nio.Bits.unaligned: available, true
2025-05-03 20:23:21.033 [main] DEBUG i.n.util.internal.PlatformDependent0 - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable
java.lang.IllegalAccessException: class io.netty.util.internal.PlatformDependent0$7 cannot access class jdk.internal.misc.Unsafe (in module java.base) because module java.base does not export jdk.internal.misc to unnamed module @67b467e9
        at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)
        at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674)
        at java.base/java.lang.reflect.Method.invoke(Method.java:561)
        at io.netty.util.internal.PlatformDependent0$7.run(PlatformDependent0.java:468)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at io.netty.util.internal.PlatformDependent0.<clinit>(PlatformDependent0.java:459)
        at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:334)
        at io.netty.util.internal.PlatformDependent.<clinit>(PlatformDependent.java:90)
        at io.netty.util.internal.ClassInitializerUtil.tryLoadClasses(ClassInitializerUtil.java:32)
        at io.netty.channel.kqueue.Native.<clinit>(Native.java:65)
        at io.netty.channel.kqueue.KQueue.<clinit>(KQueue.java:36)
        at io.ktor.server.netty.NettyApplicationEngineKt.getChannelClass(NettyApplicationEngine.kt:312)
        at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(EventLoopGroupProxy.kt:32)
        at io.ktor.server.netty.NettyApplicationEngine.connectionEventGroup_delegate$lambda$0(NettyApplicationEngine.kt:156)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:83)
        at io.ktor.server.netty.NettyApplicationEngine.getConnectionEventGroup(NettyApplicationEngine.kt:155)
        at io.ktor.server.netty.NettyApplicationEngine.createBootstrap(NettyApplicationEngine.kt:211)
        at io.ktor.server.netty.NettyApplicationEngine.bootstraps_delegate$lambda$7(NettyApplicationEngine.kt:200)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:83)
        at io.ktor.server.netty.NettyApplicationEngine.getBootstraps$ktor_server_netty(NettyApplicationEngine.kt:199)
        at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:250)
        at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:39)
        at io.ktor.server.engine.EmbeddedServer.start(EmbeddedServerJvm.kt:323)
        at McpKtorRouteProblemKt.main(McpKtorRouteProblem.kt:14)
        at McpKtorRouteProblemKt.main(McpKtorRouteProblem.kt)
2025-05-03 20:23:21.033 [main] DEBUG i.n.util.internal.PlatformDependent0 - java.nio.DirectByteBuffer.<init>(long, {int,long}): unavailable
2025-05-03 20:23:21.033 [main] DEBUG i.n.util.internal.PlatformDependent - sun.misc.Unsafe: available
2025-05-03 20:23:21.034 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.tmpdir: C:\Users\Lennart\AppData\Local\Temp (java.io.tmpdir)
2025-05-03 20:23:21.034 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.bitMode: 64 (sun.arch.data.model)
2025-05-03 20:23:21.034 [main] DEBUG i.n.util.internal.PlatformDependent - Platform: Windows
2025-05-03 20:23:21.034 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.maxDirectMemory: -1 bytes
2025-05-03 20:23:21.035 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.uninitializedArrayAllocationThreshold: -1
2025-05-03 20:23:21.035 [main] DEBUG io.netty.util.internal.CleanerJava9 - java.nio.ByteBuffer.cleaner(): available
2025-05-03 20:23:21.035 [main] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.noPreferDirect: false
2025-05-03 20:23:21.116 [main] DEBUG i.n.c.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 64
2025-05-03 20:23:21.121 [main] DEBUG i.n.u.concurrent.GlobalEventExecutor - -Dio.netty.globalEventExecutor.quietPeriodSeconds: 1
2025-05-03 20:23:21.124 [main] DEBUG i.n.u.i.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024
2025-05-03 20:23:21.124 [main] DEBUG i.n.u.i.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096
2025-05-03 20:23:21.128 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false
2025-05-03 20:23:21.128 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512
2025-05-03 20:23:21.132 [main] DEBUG i.n.util.internal.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: available
2025-05-03 20:23:21.135 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@47d93e0d
2025-05-03 20:23:21.137 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@4d0402b
2025-05-03 20:23:21.137 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@2fa7ae9
2025-05-03 20:23:21.138 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@7577b641
2025-05-03 20:23:21.139 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3704122f
2025-05-03 20:23:21.140 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3153ddfc
2025-05-03 20:23:21.141 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@60afd40d
2025-05-03 20:23:21.142 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@28a2a3e7
2025-05-03 20:23:21.143 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3f2049b6
2025-05-03 20:23:21.144 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@10b3df93
2025-05-03 20:23:21.144 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@ea27e34
2025-05-03 20:23:21.145 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@33a2499c
2025-05-03 20:23:21.146 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@e72dba7
2025-05-03 20:23:21.147 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@33c2bd
2025-05-03 20:23:21.147 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@1dfd5f51
2025-05-03 20:23:21.148 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3c321bdb
2025-05-03 20:23:21.149 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@24855019
2025-05-03 20:23:21.150 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@6f6a7463
2025-05-03 20:23:21.151 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@1bdaa23d
2025-05-03 20:23:21.152 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@79f227a9
2025-05-03 20:23:21.152 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@6ca320ab
2025-05-03 20:23:21.153 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@50d68830
2025-05-03 20:23:21.154 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@1e53135d
2025-05-03 20:23:21.155 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@7674a051
2025-05-03 20:23:21.155 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3a7704c
2025-05-03 20:23:21.156 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@6754ef00
2025-05-03 20:23:21.157 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@619bd14c
2025-05-03 20:23:21.158 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@323e8306
2025-05-03 20:23:21.158 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@a23a01d
2025-05-03 20:23:21.159 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@4acf72b6
2025-05-03 20:23:21.160 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@7561db12
2025-05-03 20:23:21.161 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3301500b
2025-05-03 20:23:21.161 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@24b52d3e
2025-05-03 20:23:21.162 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@15deb1dc
2025-05-03 20:23:21.166 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@467f77a5
2025-05-03 20:23:21.167 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@1bb9aa43
2025-05-03 20:23:21.168 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@420bc288
2025-05-03 20:23:21.169 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@df5f5c0
2025-05-03 20:23:21.169 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@308a6984
2025-05-03 20:23:21.170 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@66b72664
2025-05-03 20:23:21.171 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@7a34b7b8
2025-05-03 20:23:21.172 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@58cd06cb
2025-05-03 20:23:21.172 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3be8821f
2025-05-03 20:23:21.173 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@64b31700
2025-05-03 20:23:21.174 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@3b65e559
2025-05-03 20:23:21.175 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@bae47a0
2025-05-03 20:23:21.175 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@74a9c4b0
2025-05-03 20:23:21.176 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@85ec632
2025-05-03 20:23:21.177 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@1c05a54d
2025-05-03 20:23:21.178 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@65ef722a
2025-05-03 20:23:21.178 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@5fd9b663
2025-05-03 20:23:21.179 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@214894fc
2025-05-03 20:23:21.180 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@10567255
2025-05-03 20:23:21.180 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@e362c57
2025-05-03 20:23:21.181 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@1c4ee95c
2025-05-03 20:23:21.182 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@79c4715d
2025-05-03 20:23:21.182 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@5aa360ea
2025-05-03 20:23:21.183 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@6548bb7d
2025-05-03 20:23:21.184 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@e27ba81
2025-05-03 20:23:21.185 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@54336c81
2025-05-03 20:23:21.185 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@1556f2dd
2025-05-03 20:23:21.186 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@35e52059
2025-05-03 20:23:21.187 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@62577d6
2025-05-03 20:23:21.188 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@49bd54f7
2025-05-03 20:23:21.188 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@6b5f8707
2025-05-03 20:23:21.189 [main] TRACE io.netty.channel.nio.NioEventLoop - instrumented a special java.util.Set into: sun.nio.ch.WEPollSelectorImpl@772485dd
2025-05-03 20:23:21.195 [main] DEBUG io.netty.channel.DefaultChannelId - -Dio.netty.processId: 31088 (auto-detected)
2025-05-03 20:23:21.197 [main] DEBUG io.netty.util.NetUtil - -Djava.net.preferIPv4Stack: false
2025-05-03 20:23:21.197 [main] DEBUG io.netty.util.NetUtil - -Djava.net.preferIPv6Addresses: false
2025-05-03 20:23:21.206 [main] DEBUG i.netty.util.NetUtilInitializations - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1)
2025-05-03 20:23:21.207 [main] DEBUG io.netty.util.NetUtil - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200
2025-05-03 20:23:21.253 [main] DEBUG io.netty.channel.DefaultChannelId - -Dio.netty.machineId: f0:2f:74:ff:fe:2e:d7:1a (auto-detected)
2025-05-03 20:23:21.260 [main] DEBUG io.netty.util.ResourceLeakDetector - -Dio.netty.leakDetection.level: simple
2025-05-03 20:23:21.260 [main] DEBUG io.netty.util.ResourceLeakDetector - -Dio.netty.leakDetection.targetRecords: 4
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numHeapArenas: 64
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numDirectArenas: 64
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.pageSize: 8192
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxOrder: 9
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.chunkSize: 4194304
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.smallCacheSize: 256
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.normalCacheSize: 64
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedBufferCapacity: 32768
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimInterval: 8192
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimIntervalMillis: 0
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.useCacheForAllThreads: false
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023
2025-05-03 20:23:21.275 [main] DEBUG i.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.disableCacheFinalizersForFastThreadLocalThreads: false
2025-05-03 20:23:21.282 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.allocator.type: pooled
2025-05-03 20:23:21.282 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.threadLocalDirectBufferSize: 0
2025-05-03 20:23:21.282 [main] DEBUG io.netty.buffer.ByteBufUtil - -Dio.netty.maxThreadLocalCharBufferSize: 16384
2025-05-03 20:23:21.283 [main] DEBUG i.n.b.ChannelInitializerExtensions - -Dio.netty.bootstrap.extensions: null
2025-05-03 20:23:21.292 [DefaultDispatcher-worker-1] INFO  io.ktor.server.Application - Responding at http://127.0.0.1:8080
2025-05-03 20:23:25.808 [eventLoopGroupProxy-3-1] DEBUG io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkAccessible: true
2025-05-03 20:23:25.808 [eventLoopGroupProxy-3-1] DEBUG io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.checkBounds: true
2025-05-03 20:23:25.808 [eventLoopGroupProxy-3-1] DEBUG i.n.util.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@623cd987
2025-05-03 20:23:25.838 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxCapacityPerThread: 4096
2025-05-03 20:23:25.838 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.ratio: 8
2025-05-03 20:23:25.838 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.chunkSize: 32
2025-05-03 20:23:25.838 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.blocking: false
2025-05-03 20:23:25.839 [eventLoopGroupProxy-3-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.batchFastThreadLocalOnly: true
2025-05-03 20:23:25.891 [eventLoopGroupProxy-4-1] TRACE io.ktor.server.routing.Routing - Trace for [myRoute]
/, segment:0 -> SUCCESS @ /
  /myRoute, segment:1 -> SUCCESS @ /myRoute
  /(method:POST), segment:0 -> FAILURE "Selector didn't match" @ /(method:POST)
Matched routes:
  No results
Routing resolve result:
  FAILURE "No matched subtrees found" @ /
<==========---> 83% EXECUTING [38s]
> :run

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions