I have a component, deployed in an EC2-instance on AWS, which will fail 'randomly' (~70% of the request) when sending a larger payload (40k).
Sending the request is done using Postman. Sending the same request over and over again (with same delay in between or just as quickly as i can), every time i get a few failures, then a success (sometimes 2 in a row, then some failures, repeat)
It's a Java Spring Boot application, the controller-snippet:
@PostMapping
@RequestMapping("/some/url")
ResponseEntity<MyClass> methodName(@RequestBody String data, @RequestHeader("content-length") String header) {
log.info("Content-Length header was: "+header);
log.info("Length of inputJson (@RequestBody) was: "+data.length());
log.info(inputJson);
For every request (failed or successful) i get the same value for the content-length-header. The data-length is either the same (successful call) or shorter (failed call).
I added some logging as above, which seems to prove that the data-received is actually truncated.
I enabled access-log using
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %{content-length}i %{Content-Length}i
The access-log shows the same value as the content-length-header.
Looking around I found several articles, none with an answer that i could use. Considering this also succeeds 30% (or with smaller requests) i figure the code itself is probably fine. Just out-of-ideas on what to change next to investigate this further.
Some related links which did not help my problem (which might help others):