В хранилище S3 создаются пустые папки, если пайплайн ссылается на несуществующий файл #4
Labels
No labels
api-component
bug
catalogue
complex-pipeline
consistency
databox
documentation
duplicate
experiment-pipeline
files
invalid
ml-component
platform-app
question
security
status: fixed
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: mlops_platform/documentation#4
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Описание ошибки
Если при запуске пайплайна в манифесте или в теле запроса на запуск указать путь к файлу, но не загрузить этот файл в S3 на момент запуска, то при монтировании будет создана пустая папка (файловая группа) в S3. Эта папка не видна разработчику модуля (через файловый API можно получить только список файлов, то есть нужно сделать запрос именно самой этой папки, а папка на уровень выше будет выглядеть пустой). Если разработчик осознаёт проблему и загружает файл, этот файл не монтируется к файловой системе контейнера - вместо него монтируется созданная папка (и теперь её невозможно увидеть, потому что даже файловый API просто будет показывать файл).
Совершаемые действия:
Получаемый результат
Пайплайн не отрабатывает оба раза
Ожидаемый результат
Пайплайн отрабатывает на втором запуске.
Если пользователь при запуске не передал файл, это считается пустым входом. При запросе через файловый API по названию и пути к файловой группе она должна быть видна при запрос содержимого папку на уровень выше и должна быть пуста.
Дозагрузка файлов после запуска пайплайна или вызова сервиса имеет неопределенный эффект.
В issue речь о том, что пользователь может указать путь к файлу при запуске пайплайна, но не загрузить его фактически. API Pipelines поддерживает передачу путей к файлам и файловым группам в качестве значений входных переменных. При этом эти пути должны существовать до запуска пайплайна.
Проблема в следующем - API Pipelines не проверяет, что переданный путь существует, а просто монтирует его.
Один из вариантов решения - перед запуском проверять наличие файла или файловой группы.