TGViewer
Test Engineering Notes Test Engineering Notes @testengineering · 4.01K subscribers
Post #800 1.6K
Як GIF-ка з Рейчел майже зламала Discourse

#bugs

В Discourse помітили, що розміри бекапів виросли до сотень гігабайт. Унікального контенту в даних було мало. Більшість з них ... просто копії.

Проблема

Одна з функцій Discourse дозволяє безпечно завантажувати контент. Коли файл переміщається між різними контекстами - система створює нову копію з ... рандомізованим хешем SHA-1. Файл залишається тим самим, але Discourse розглядає його як новий.

Найчастіше це GIF-ки та картинки. Користувачі надсилають їх один одному як в повідомленях так і в коментарях.

Як пофіксили

Алгоритм фіксу був згрупувати контент по оригінальному хешу, завантажити один файл, а всі дублікати помітити як hardlinks.

Як GIF-ка зламала фікс

В процесі створення hardlinks дуже швидко досягли ліміту - 65000 посилань на одну inode. Деякі файли мали аж по 246173 копії. Який це файл? Виявилося, що це ... GIF з Рейчел з серіалу Друзі - яку дуже часто додавали як реакцію.

Пофіксили фікс шляхом трекінгу ліміту посилань в файловій системі.
  • ❤ 26
  • 👍 5
More from @testengineering
  1. Oct 6, 2026Вже жовтень - саме час готуватися до ISTQB CT-GenAI "До Нового Року є ще цілий квартал щоб…
  2. Oct 5, 2026Ministry of Testing - англомовні івенти на всі смаки #testing #ai Всім привіт. Хочу розпов…
  3. Sep 30, 2026Скіл, щоб прибрати зайве #ai Цікавий скіл, щоб не продиратись через купу згенерованого тек…
  4. Sep 29, 2026Що таке агент? #ai Зрозумій, на небесах в тестуванні тільки й говорять, що про море агенті…
  5. Sep 28, 2026Navigating the AI Shift #testing@testengineering #ai@testengineering Трохи старе, але не м…
  6. Sep 25, 2026Сувора QA Конференція - AI в тестуванні Вже наступного тижня пройде найцікавіша онлайн-кон…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →