Zustelldienst: Internal Server Error bei großen attachments
Zusammenfassung
Beim upload von großen attachments (ab 500 MB) kommt es im Zustelldienst zu internal server errors die nicht näher spezifiert sind (und auch aktuell (25.11.22) nicht im ElasticSearch Log auftauchen).
Schritte zum Reproduzieren
- Java CLI Client mit 16GB allokiertem Speicher xmx16384m
- ConnectionTimeOut der HTTPConnection des SDK wurde auf -1 (unendlich) gesetzt
- es wurde ein File mit 500 MB random daten erstellt
- das file wurde 1-10 mal hochgeladen => submission-api-testing.fit-connect.fitko.dev
Wie verhält sich der aktuelle Fehler?
- Ein 500 MB file upload: das Hochladen funktioniert, jedoch schlägt hier der Download fehl:
13:00:53.855 [main] ERROR d.f.f.client.SubscriberClient API request failed
dev.fitko.fitconnect.api.exceptions.RestApiException: 500 Internal Server Error: "{"title":"Internal Server Error","status":500,"detail":"Unknown Error","errorcode":"b6e1fe50-a6b7-4ce4-8ed1-81055510a867"}"
at dev.fitko.fitconnect.core.submission.SubmissionApiService.performRequest(SubmissionApiService.java:177)
at dev.fitko.fitconnect.core.submission.SubmissionApiService.getAttachment(SubmissionApiService.java:112)
at dev.fitko.fitconnect.core.SubmissionSubscriber.fetchAttachment(SubmissionSubscriber.java:72)
at dev.fitko.fitconnect.client.SubscriberClient$ClientBuilder.getAttachments(SubscriberClient.java:206)
at dev.fitko.fitconnect.client.SubscriberClient$ClientBuilder.decryptAttachments(SubscriberClient.java:160)
at dev.fitko.fitconnect.client.SubscriberClient$ClientBuilder.requestSubmission(SubscriberClient.java:113)
- Zehn 500 MB files: upload und download schlagen fehl:
dev.fitko.fitconnect.api.exceptions.RestApiException: 500 Internal Server Error: "{"title":"Internal Server Error","status":500,"detail":"Unknown Error","errorcode":"75b2ec27-e045-4f09-93e8-a618cf9fde09"}"
at dev.fitko.fitconnect.core.submission.SubmissionApiService.performRequest(SubmissionApiService.java:150)
at dev.fitko.fitconnect.core.submission.SubmissionApiService.sendSubmission(SubmissionApiService.java:100)
at dev.fitko.fitconnect.core.SubmissionSender.sendSubmission(SubmissionSender.java:122)
at dev.fitko.fitconnect.client.strategies.SendNewSubmissionStrategy.send(SendNewSubmissionStrategy.java:72)
at dev.fitko.fitconnect.client.SenderClient$ClientBuilder.submit(SenderClient.java:240)
Zudem tritt beim download, aktuell noch nicht reproduzierbar, ein state-transistion Fehler auf:
Caused by: org.springframework.web.client.HttpClientErrorException$Conflict: 409 Conflict: "{"type":"https://schema.fitko.de/fit-connect/submission-api/problems/invalid-state-transition","title":"Invalid state transition","status":409}"
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:125)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:168)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:825)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:783)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:717)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:608)
at dev.fitko.fitconnect.core.events.EventLogApiService.sendEvent(EventLogApiService.java:49)
Was ist das erwartete richtige Verhalten?
Ein klare Angabe welche file-größen der Zustelldienst verarbeiten kann, wenn der upload funktioniert sollten die Daten auch wieder problemlos heruntergeladen werden können.
Relevante Protokolle/Screenshots/Anfragen
Speicherverhalten der VM des Java SDK bei 16 GB max. Heap und dem Upload von zehn 500MB files. Konstantes anwachsen, Zickzacklinien zeigen den GC nach der Encryption
Danach ist der Speicherverbrauch konstant im Upload an die REST-Schnittstelle des Zustelldienstes. Timeout der HHTPConnection=-1
Akzeptanzkriterien zur Fehlerbehebung
- [ ]
- [ ]
- [ ]