Ожидаемое поведение
Я использую AWS SDK для Java для загрузки файла / InputStream (> 5 МБ) через AmazonS3 # putObject на локальный сервер minio.
После завершения загрузки я хочу запросить определенные метаданные загруженного объекта. Итак, сначала я вызываю AmazonS3 # getObject с именем и ключом, что дает мне S3Object. Вызов S3Object # getObjectMetaData затем дает мне соответствующий ObjectMetadata. Теперь я вызываю ObjectMetadata # getContentLength, чтобы запросить размер объекта. После этого я пытаюсь удалить объект через AmazonS3 # deleteObject. Объект должен быть удален через короткое время.
Текущее поведение
Фактическая загрузка работает нормально. Но когда вызывается AmazonS3 # deleteObject (после описанного выше процесса), сервер больше не реагирует. Клиент продолжает отправлять запросы на удаление до истечения времени ожидания. Кажется, это проблема с возможным дескриптором открытого файла на сервере. Существует еще один способ запроса метаданных в AWS S3 API. Вы можете использовать AmazonS3 # getObjectMetadata, не используя AmazonS3 # getObject. Как ни странно, использование этой опции не приводит к описанному зависанию, и объект удаляется без какой-либо соответствующей задержки.
Возможное решение
Как описано выше, вы можете использовать AmazonS3 # getObjectMetadata, чтобы избежать проблемы, но я думаю, что это не должно быть общим решением.
Может быть проблема с дескриптором открытого файла на сервере, но это только предположение. Еще одна вещь, которую я заметил, заключалась в том, что проблема во многом зависит от размера загружаемых данных. До размера около 500000 байт все работает нормально. Около 554000 байт начинаются проблемы.
Также может быть проблема с сервером, который не может обработать количество исходящих запросов пут.
Окружающая среда
Используемая версия (minio version
):
Версия: 2018-11-06T01: 01: 02Z
Release-Tag: RELEASE.2018-11-06T01-01-02Z
Commit-ID: eb1f9c9916cdd2d1031b76dfc4e539fd643de6bc
Операционная система и версия (uname -a
):
macOS Sierra Версия 10.12.3