Проблема такая. В корпоративной изолированной среде работал проект с версии на Jmix 2.2.1. В проекте использовался AWS S3 с подключением к MinIO, все работало. Мигрировали проект на версию 2.4.0. и при загрузке файлов начали ловить ошибку. Не буду весь стек прикладывать, не суть, в общем:
Caused by: software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: <бакет>.<хост>
Caused by: java.net.UnknownHostException: <бакет>.<хост>
Думали, возможно в изолированной среде с неправильными версиями библиотек проект собирается, поэтому проверил на домашнем компе.
Поднял в докере MinIO, создал голый проект на версии 2.4.0, добавил зависимость aws, прописал параметры подключения, добавил в экран UserDetailView поле upload, навешал event, в общем:
@Subscribe("uploadField")
public void onUploadFieldSucceeded(final SucceededEvent event) {
if (event.getUpload().getReceiver() instanceof MultiFileMemoryBuffer buffer) {
String fileName = event.getFileName();
try (InputStream inputStream = buffer.getInputStream(fileName)) {
FileStorage fileStorage = fileStorageLocator.getDefault();
FileRef fileRef = fileStorage.saveStream(fileName, inputStream);
} catch (IOException e) {
log.error("Error", e);
}
}
}
И снова та же ошибка.
Поднял дома проект на версии 2.3.4, та же ошибка.
Создал проект на версии 2.2.1, ошибки нет, файл сохраняется в бакете.
По дебагу ошибка летит из метода saveStream() в классе AwsFileStorage, дальше в глубь сильно не дебажил.
По зависимостям посмотрел в 2.4.0 используются библиотеки awssdk версии 2.25.60. Пробовал в build.gradle апдейтить до максимальной 2.29.17:
implementation 'io.jmix.awsfs:jmix-awsfs-starter'
constraints {
implementation 'software.amazon.awssdk:s3:2.29.17'
}
Ошибка та же.
Пробовал даундейтить как в 2.2.1 до версии 2.16.69:
configurations {
configureEach {
resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'software.amazon.awssdk' && details.requested.version == '2.25.60') {
details.useVersion '2.16.69'
details.because 'fixes critical bug'
}
}
}
}
}
Проект не компилится. Минимальная версия при которой компилится ± 2.18.0, но ошибка снова та же.
Можно ли по быстрому что-то сделать, чтоб подружить Jmix 2.4.0 и MinIO?
Кроме MinIO мы не можем ничего использовать, т.к. он уже используется в продакшене и нам надо подключаться именно к нему в проде.