دانلودهای دیجیتال: رفع مشکل ماندگاری و تحویل خودکار برای سفارشهای قبلی
۱۳ سپتامبر ۲۰۲۶
امروز ما باگی را برطرف کردیم که باعث میشد برخی فایلهای دانلود دیجیتال پس از بهروزرسانیهای سرور ناپدید شوند — و به همان اندازه مهم، اطمینان حاصل کردیم که خریداران به محض (بارگذاری مجدد) فایل توسط فروشنده، بهطور خودکار دسترسی دریافت میکنند.
چه اتفاقی افتاده بود
برخی خریداران هنگام کلیک روی دکمه دانلود در دانلودهای من پیام «file not found on disk» (فایل روی دیسک یافت نشد) را میدیدند — در حالی که سفارش آنها پرداخت شده و ورودی دانلود وجود داشت.
علت فنی
سرویس بازی ما در یک کانتینر Docker روی هر VPS منطقهای اجرا میشود. فایلهای دانلود بارگذاریشده در /var/lib/erleuchtung/shop-downloads نوشته میشوند — که قرار بود پوشهای ماندگار روی سرور میزبان باشد و داخل کانتینر مونت شود.
این مونت در پیکربندی توسعه ما وجود داشت، اما در فایل compose استقراری که عامل بهروزرسانی ما روی گرههای VPS نصب میکند، غایب بود. در نتیجه، فایلهای بارگذاریشده داخل لایه فایلسیستم خود کانتینر ذخیره میشدند. هر بار که یک بهروزرسانی کانتینر را بازسازی میکرد، آن لایه دور انداخته میشد — فایلها ناپدید میشدند، در حالی که رکوردهای پایگاه داده (که در PostgreSQL قرار دارند) باقی میماندند.
نتیجه: یک ورودی دانلود معتبر که به فایلی اشاره میکرد که دیگر وجود نداشت.
چه چیزی را اصلاح کردیم
- ذخیرهسازی ماندگار روی همه گرهها. دایرکتوری دانلود اکنون بهدرستی روی ذخیرهسازی میزبان در همه سرورهای منطقهای (US، IN، EU2، SG و گره staging ما یعنی MAAS) مونت شده است. بارگذاریها در برابر بهروزرسانیها و بازسازی کانتینرها دوام میآورند.
- تکمیل خودکار هنگام بارگذاری. قبلاً، دسترسی به دانلود فقط در لحظه پرداخت اعطا میشد — و فقط برای فایلهایی که در آن زمان وجود داشتند. اکنون، وقتی فروشنده فایلی را به محصولی بارگذاری میکند، بهطور خودکار به همه خریداران دارای سفارش پرداختشده آن محصول اعطا میشود، همراه با اعلان فوری.
- لیست دانلود خودترمیمشونده. باز کردن «دانلودهای من» اکنون دسترسیهای از دست رفته برای همه سفارشهای پرداختشده شما را ترمیم میکند — خریدهای قدیمی خودشان درمان میشوند.
- اعطا هنگام ارسال. وقتی فروشنده سفارشی را بهعنوان ارسالشده/تحویلشده علامت میزند، فایلهای پیوست بلافاصله اعطا میشوند — کالاهای دیجیتال هنگام تحویل واجب هستند.
فروشندگان باید چه کنند
فایلهایی که قبل از این اصلاح بارگذاری شدهاند و در حین بهروزرسانی از دست رفتهاند، قابل بازیابی نیستند — آنها فقط داخل یک لایه کانتینر دور انداختهشده وجود داشتند.
اگر قبلاً فایلهایی بارگذاری کردهاید: محصول خود را باز کنید، ورودی دانلود قدیمی را حذف کنید و فایل را دوباره بارگذاری کنید. در همان لحظه بارگذاری، همه خریداران قبلی بهطور خودکار دسترسی را باز مییابند — بدون نیاز به کار دستی.
نکتهای درباره شفافیت
ایمیلهای اعلان «ارسال شد» که برخی از شما دریافت کردهاید، به فایلهای قابل دانلودی اشاره میکردند که هرگز واقعاً پیوست نشده بودند — آن متن یادداشت ارسال فروشنده بود، نه تحویل فایل. با این نسخه، دکمه دانلود در «دانلودهای من» تنها منبع معتبر است: اگر فایلی در آنجا فهرست شده باشد، روی سرور وجود دارد و قابل دانلود است.
از صبر شما سپاسگزاریم — و تشکر ویژه از اعضای جامعه که این مشکل را بهسرعت گزارش کردند.
— تیم Erleuchtung