'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 |
|---|
