Springboot + azure datalake connection: nested exception is java.lang.IllegalStateException: block()/blockFirst()/blockLJava

Java-Forum
Anonymous
 Springboot + azure datalake connection: nested exception is java.lang.IllegalStateException: block()/blockFirst()/blockL

Post by Anonymous »

Ich versuche, eine Datei im Datalake von einem Pfad in einen anderen zu kopieren.
Mein vorheriger Code lautet

Code: Select all

        public void enableFileSelected (String sourcePath, String destPath, String fileSystemName) throws IOException {
log.debug("enableFileSelected");
log.debug("enableFileSelected sourcePath : {}", sourcePath);
log.debug("enableFileSelected destPath : {}", destPath);
log.debug("enableFileSelected containerName : {}", fileSystemName);
DataLakeFileSystemClient fileSystemClient = serviceClient.getFileSystemClient(fileSystemName);
log.debug("fileSystemClient1 : {}", fileSystemClient);

DataLakeFileClient sourcefileClient = fileSystemClient.getFileClient(sourcePath);
log.debug("sourcefileClient : {}", sourcefileClient);
InputStream inputStream = sourcefileClient.openInputStream().getInputStream();

DataLakeFileClient destfileClient = fileSystemClient.getFileClient(destPath);
log.debug("destfileClient : {}", destfileClient);

byte[] content = StreamUtils.copyToByteArray(inputStream);
ByteArrayInputStream contentStream = new ByteArrayInputStream(content);
destfileClient.upload(contentStream, content.length,true);
}
hat einwandfrei funktioniert, das einzige Problem besteht darin, dass der Heap möglicherweise voll wird und die App abstürzt.
Um das zu beheben, habe ich versucht, Streams und temporäre Dateien zu verwenden.
Temporäre Dateien werden aus Sicherheitsgründen blockiert. Bei Streams erhalte ich den Fehler „NestedException is java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking“, was im Thread „reactor-html“ nicht unterstützt wird.
Mein aktueller Code ist

Code: Select all

    public void enableFileSelected (String sourcePath, String destPath, String fileSystemName) throws IOException {
log.debug("enableFileSelected");
log.debug("enableFileSelected sourcePath : {}", sourcePath);
log.debug("enableFileSelected destPath : {}", destPath);
log.debug("enableFileSelected containerName : {}", fileSystemName);
DataLakeFileSystemClient fileSystemClient = serviceClient.getFileSystemClient(fileSystemName);
log.debug("fileSystemClient1 : {}", fileSystemClient);
DataLakeFileClient sourcefileClient = fileSystemClient.getFileClient(sourcePath);
log.debug("sourcefileClient : {}", sourcefileClient);
DataLakeFileClient destfileClient = fileSystemClient.getFileClient(destPath);
try (InputStream inputStream = sourcefileClient.openInputStream().getInputStream()) {
long fileLength = sourcefileClient.getProperties().getFileSize();
log.debug("sourcefileClientLength : {}", fileLength);
log.debug("destfileClient : {}", destfileClient);
destfileClient.upload(inputStream, fileLength, true);
}
}
Ich habe zwar einige Problemumgehungen, aber wenn möglich würde ich diese Funktion lieber reparieren

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post