Соединение Springboot + Azure DataLake: вложенное исключение — java.lang.IllegalStateException: блокировка()/blockFirst(JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Соединение Springboot + Azure DataLake: вложенное исключение — java.lang.IllegalStateException: блокировка()/blockFirst(

Сообщение Anonymous »

Я пытаюсь скопировать файл в озере данных из одного пути в другой.
Мой предыдущий код:

Код: Выделить всё

        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);
}
работает нормально, единственная проблема заключается в том, что куча может переполниться и приложение выйдет из строя.
Чтобы исправить это, я попытался использовать потоки и временные файлы.
Временные файлы блокируются по соображениям безопасности. В потоках я получаю вложенное исключение ошибки java.lang.IllegalStateException: блокировка()/blockFirst()/blockLast() блокируется, что не поддерживается в потоке-реактора-html
Мой текущий код

Код: Выделить всё

    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);
}
}
У меня есть обходные пути, но я бы предпочел исправить эту функцию, если это возможно.

Подробнее здесь: https://stackoverflow.com/questions/797 ... illegalsta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»