'Ktor app receiving POST json body gets stuck

We are working on a backend app using Ktor. The app is deployed on a Tomcat server version 9.0.38.

The app has a POST route used for processing HTTP POST requests. Inside, it tries to receive the json body and map it to RouteSignalNotificationResponse data class. After some tests we found out that at this line the request gets stuck and nothing is executed after it.

post("/createSignalNotification") {
    val signalResponse = call.receive<RouteSignalNotificationResponse>()
    ...
}

The RouteSignalNotificationResponse class looks like this:

@Serializable
data class RouteSignalNotificationResponse(
    @SerialName("p1")
    val title: String,
    @SerialName("p2")
    val message: String,
    @SerialName("p3")
    val firstParameter: Int,
    @SerialName("p4")
    val secondParameter: Int
)

The Content-Type in the header of the request is "application/json".

If we remove the "call.receive" line and mock the RouteSignalNotificationResponse data, everything afterwards works.

We are using the following versions:

ktor_version=1.6.7
kotlin_version=1.5.31
logback_version=1.2.9
koin_version=3.1.4
oracle jdk 17

On the server side, after loading the libraries we don't have any error messages, but the logs show the following problem:

----------> Parent Classloader:
java.net.URLClassLoader@45283ce2

08-Mar-2022 15:47:41.945 FINE [pool-7-thread-1] 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass   Loading class from local 
repository
08-Mar-2022 15:47:44.648 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.getResource getResource()
08-Mar-2022 15:47:44.649 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.findResource     findResource()
08-Mar-2022 15:47:44.649 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.findResource     --> Returning 
'file:/opt/tomcat/apache-tomcat-9.0.58/webapps/com.zohoinvest.api-0.0.1/WEB- 
INF/classes/'
08-Mar-2022 15:47:44.649 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.getResource   --> Returning 
'file:/opt/tomcat/apache-tomcat-9.0.58/webapps/com.zohoinvest.api-0.0.1/WEB- 
INF/classes/'
08-Mar-2022 15:47:49.352 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.getResource getResource()
08-Mar-2022 15:47:49.352 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.findResource     findResource()
08-Mar-2022 15:47:49.352 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.findResource     --> Returning 
'file:/opt/tomcat/apache-tomcat-9.0.58/webapps/com.zohoinvest.api-0.0.1/WEB- 
INF/classes/'
08-Mar-2022 15:47:49.352 FINE [Abandoned connection cleanup thread] 
org.apache.catalina.loader.WebappClassLoaderBase.getResource   --> Returning 
'file:/opt/tomcat/apache-tomcat-9.0.58/webapps/com.zohoinvest.api-0.0.1/WEB- 
INF/classes/'
08-Mar-2022 15:47:51.038 FINE [Catalina-utility-2] 
org.apache.catalina.startup.HostConfig.checkResources Checking context[] redeploy 
resource /opt/tomcat/apache-tomcat-9.0.58/webapps/ROOT.war
08-Mar-2022 15:47:51.039 FINE [Catalina-utility-2] 
org.apache.catalina.startup.HostConfig.checkResources Checking context[] redeploy 
resource /opt/tomcat/apache-tomcat-9.0.58/webapps/ROOT

What could be the reason of such behavior?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source