0

Ich benutze den folgenden Code, um in S3-Bucket zu schreiben, die jetzt viele xml-Dateien hat. Ich erhalte bei Gerätefehler keinen Platz mehr. Die nachfolgenden Uploads sind fehlgeschlagen. Ich sehe viele Dateien im Ordner var/cache/tomcat8/temp erstellt. Ich lösche die Dateien über meinen Code. Kann mir bitte jemand helfen zu verstehen, was hier falsch ist? Eigentlich möchten wir die temporäre Datei löschen, sobald wir sie in S3 hochladen.Kein Platz mehr auf dem Gerät auf AWS S3 Tomcat 8

Path path = Files.createTempFile(filename, suffix); 
file = path.toFile(); 

Files.write(path, incomingXml.getBytes(StandardCharsets.UTF_8)); 

if(file!=null){ 
    file.deleteOnExit(); 
} 
s3client.putObject(new PutObjectRequest(fullBucketPathByDate, filename, file)); 
LOGGER.info("Upload completed"); 

Antwort

0

Vom File.deleteOnExitdocs (Hervorhebung von mir):

fordert, dass die Datei oder das Verzeichnis, das von diesem abstrakten Pfadnamen bezeichnete gelöscht werden, wenn die virtuelle Maschine beendet.

Das bedeutet, dass die temporäre Datei nur gelöscht wird, wenn Sie Ihren Tomcat-Prozess beenden. Was Sie tun müssen, ist die Datei zu löschen, sobald Sie mit dem Hochladen in S3 fertig sind. So etwas wie das:

Alternativ können Sie den Inhalt der Datei direkt in S3 streamen, ohne temporäre Dateien zu verwenden.

+0

Danke für die Hilfe! – Twisha

Verwandte Themen