Цифровые загрузки: исправление постоянства хранения и автоматическая доставка для прошлых заказов

13 сентября 2026

Сегодня мы исправили ошибку, из-за которой некоторые файлы цифровых загрузок исчезали после обновлений сервера — и, что не менее важно, сделали так, что покупатели автоматически получают доступ, как только продавец (повторно) загружает файл.

Что произошло

Некоторые покупатели видели сообщение «file not found on disk» (файл не найден на диске) при нажатии кнопки загрузки в разделе Мои загрузки, хотя их заказ был оплачен и запись о загрузке существовала.

Техническая причина

Наш игровой сервис работает в Docker-контейнере на каждом региональном VPS. Загруженные файлы записываются в /var/lib/erleuchtung/shop-downloads — это должна была быть постоянная папка на хост-сервере, смонтированная в контейнер.

Монтирование существовало в нашей конфигурации разработки, но отсутствовало в compose-файле развёртывания, который наш агент обновлений устанавливает на VPS-узлы. В результате загруженные файлы хранились внутри слоя файловой системы самого контейнера. Каждый раз, когда обновление пересоздавало контейнер, этот слой уничтожался — файлы исчезали, а записи базы данных (которые хранятся в PostgreSQL) оставались.

Результат: действительная запись о загрузке, указывающая на файл, которого больше нет.

Что мы исправили

  • Постоянное хранилище на всех узлах. Каталог загрузок теперь корректно смонтирован на хранилище хоста на всех региональных серверах (US, IN, EU2, SG и наш staging-узел MAAS). Загрузки переживают обновления и пересоздания контейнеров.
  • Автоматическое восполнение при загрузке. Раньше доступ к загрузке предоставлялся только в момент оплаты — и только для файлов, существовавших в тот момент. Теперь, когда продавец загружает файл к товару, он автоматически предоставляется всем покупателям с оплаченным заказом этого товара, с мгновенным уведомлением.
  • Самовосстанавливающийся список загрузок. Открытие «Мои загрузки» теперь восстанавливает недостающие доступы для всех ваших оплаченных заказов — старые покупки исправляются сами.
  • Предоставление при отправке. Когда продавец отмечает заказ как отправленный/доставленный, прикреплённые файлы предоставляются немедленно — цифровые товары полагаются при доставке.

Что нужно сделать продавцам

Файлы, загруженные до этого исправления и потерянные во время обновления, восстановить невозможно — они существовали только внутри уничтоженного слоя контейнера.

Если вы загружали файлы ранее: откройте свой товар, удалите устаревшую запись загрузки и загрузите файл заново. В момент загрузки все прежние покупатели автоматически получат доступ — никакой ручной работы не требуется.

Замечание о прозрачности

В письмах-уведомлениях об «отправке», которые получили некоторые из вас, упоминались загружаемые файлы, которые на самом деле никогда не были прикреплены — этот текст был примечанием продавца к отправке, а не доставкой файла. В этой версии кнопка загрузки в «Мои загрузки» — единственный достоверный источник: если файл там указан, он существует на сервере и его можно скачать.

Спасибо за терпение — и особая благодарность членам сообщества, которые быстро сообщили о проблеме.

— Команда Erleuchtung